Merge tag 'go1.17rc1' into HEAD
Change-Id: Ie1b4fb93860dedd6184dfe880685d601ea49308c
diff --git a/BUILD.gn b/BUILD.gn
new file mode 100644
index 0000000..a5f1cd7
--- /dev/null
+++ b/BUILD.gn
@@ -0,0 +1,228 @@
+# Copyright 2016 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//build/components.gni")
+import("//build/config/clang/clang.gni")
+import("//build/config/sysroot.gni")
+import("//build/go/go_test.gni")
+import("//build/host.gni")
+
+if (is_host && current_toolchain == toolchain_variant.base) {
+ _go_root = "$host_tools_dir/goroot"
+
+ compiled_action("makeroot") {
+ visibility = [ ":makefuchsia" ]
+
+ depfile = "$target_gen_dir/$target_name.d"
+ outputs = [ "$target_gen_dir/$target_name.stamp" ]
+
+ tool = "makeroot"
+ args = [
+ "--source-goroot",
+ rebase_path(".", root_build_dir),
+ "--target-goroot",
+ rebase_path(_go_root, root_build_dir),
+
+ "--depfile",
+ rebase_path(depfile, root_build_dir),
+ "--stamp-file",
+ rebase_path(outputs[0], root_build_dir),
+ ]
+ }
+
+ compiled_action("makefuchsia") {
+ visibility = [ ":go_runtime" ]
+ deps = [ ":makeroot" ]
+
+ depfile = "$target_gen_dir/$target_name.d"
+ outputs = [ "$target_gen_dir/$target_name.stamp" ]
+
+ tool = "makefuchsia"
+ args = [
+ "--cc",
+ rebase_path("${clang_prefix}/clang"),
+ "--cxx",
+ rebase_path("${clang_prefix}/clang++"),
+ "--gocache",
+ gocache_dir,
+ "--goroot",
+ rebase_path(_go_root, root_build_dir),
+ "--goroot-bootstrap",
+ rebase_path("//prebuilt/third_party/go/${host_platform}"),
+ "--sysroot",
+ rebase_path(sysroot),
+
+ "--depfile",
+ rebase_path(depfile, root_build_dir),
+ "--stamp-file",
+ rebase_path(outputs[0], root_build_dir),
+ ]
+ }
+}
+
+group("go_runtime") {
+ if (is_host) {
+ public_deps = [ ":makefuchsia(${toolchain_variant.base})" ]
+ } else {
+ public_deps = [ ":$target_name(${host_toolchain})" ]
+ }
+}
+
+go_test("go_exec_test") {
+ gopackages = [ "os/exec" ]
+}
+
+go_test("go_net_test") {
+ gopackages = [ "net" ]
+}
+
+go_test("go_os_test") {
+ gopackages = [ "os" ]
+}
+
+go_test("go_pprof_test") {
+ gopackages = [ "runtime/pprof" ]
+}
+
+go_test("go_zx_test") {
+ gopackages = [ "syscall/zx" ]
+}
+
+go_test("go_zxwait_test") {
+ gopackages = [ "syscall/zx/zxwait" ]
+}
+
+fuchsia_component("go-exec-test") {
+ testonly = true
+ manifest = "meta/go_exec_test.cmx"
+ deps = [
+ ":go_exec_test",
+ "//third_party/sbase:cat",
+ "//third_party/sbase:echo",
+ ]
+}
+
+fuchsia_component("go-net-test") {
+ testonly = true
+ manifest = "meta/go_net_test.cmx"
+ deps = [ ":go_net_test" ]
+}
+
+fuchsia_component("go-os-test") {
+ testonly = true
+ manifest = "meta/go_os_test.cmx"
+ deps = [ ":go_os_test" ]
+}
+
+fuchsia_component("go-pprof-test") {
+ testonly = true
+ manifest = "meta/go_pprof_test.cmx"
+ deps = [ ":go_pprof_test" ]
+}
+
+fuchsia_component("go-zx-test") {
+ testonly = true
+ manifest = "meta/go_zx_test.cmx"
+ deps = [ ":go_zx_test" ]
+}
+
+fuchsia_component("go-zxwait-test") {
+ testonly = true
+ manifest = "meta/go_zxwait_test.cmx"
+ deps = [ ":go_zxwait_test" ]
+}
+
+fuchsia_test_package("go-stdlib-tests") {
+ test_components = [
+ ":go-exec-test",
+ ":go-net-test",
+ ":go-pprof-test",
+ ":go-zx-test",
+ ":go-zxwait-test",
+ ":go-os-test",
+ ]
+
+ deps = [ "//src/connectivity/network/netstack:component-debug" ]
+
+ test_specs = {
+ environments = [ emu_env ]
+ }
+}
+
+go_test("go_unsafevalue_test") {
+ gopackages = [ "syscall/zx/fidl/internal/unsafevalue" ]
+
+ # This runs both on target device and as a host test.
+ # In both cases, it needs to build a go toolchain rather than using a prebuilt because
+ # it is testing the fidl package, which is implemented in the toolcahin itself.
+ use_prebuilt_go = false
+}
+
+go_test("go_fidl_test") {
+ gopackages = [ "syscall/zx/fidl" ]
+}
+
+go_test("go_extended_fidl_test") {
+ # N.B. these tests are not in the fidl package to avoid having to rebuild the
+ # go toolchain while iterating on them.
+ gopackages = [ "syscall/zx/fidl/fidl_test" ]
+ # TODO(pascallouis): Currently, while we take a dependency, the output of
+ # this FIDL rule is not directly used, rather the generated bindings were
+ # copied and checked in.
+ #
+ # Not being able to depend on automated generation is due to where code is
+ # placed, and how this relates to the tree structure of the toolchain.
+ # Disabling while fidlgen table generation is pending.
+ # Use regen-fidl to generate this file.
+ # deps = [
+ # "src/syscall/zx/fidl/internal/bindingstest($go_toolchain)",
+ # ]
+}
+
+fuchsia_component("go-unsafevalue-test") {
+ testonly = true
+ manifest = "meta/go_unsafevalue_test.cmx"
+ deps = [ ":go_unsafevalue_test" ]
+}
+
+fuchsia_component("go-fidl-test") {
+ testonly = true
+ manifest = "meta/go_fidl_test.cmx"
+ deps = [ ":go_fidl_test" ]
+}
+
+fuchsia_component("go-extended-fidl-test") {
+ testonly = true
+ manifest = "meta/go_extended_fidl_test.cmx"
+ deps = [ ":go_extended_fidl_test" ]
+}
+
+fuchsia_test_package("go-fidl-tests") {
+ test_components = [
+ ":go-unsafevalue-test",
+ ":go-extended-fidl-test",
+ ":go-fidl-test",
+ ]
+
+ test_specs = {
+ environments = [ emu_env ]
+ }
+}
+
+group("fidl-tests") {
+ testonly = true
+ deps = [
+ ":go-fidl-tests",
+ ":go_extended_fidl_test($host_toolchain)",
+ ":go_unsafevalue_test($host_toolchain)",
+ ]
+}
+
+group("tests") {
+ testonly = true
+ deps = [
+ ":fidl-tests",
+ ":go-stdlib-tests",
+ ]
+}
diff --git a/OWNERS b/OWNERS
new file mode 100644
index 0000000..be2231d
--- /dev/null
+++ b/OWNERS
@@ -0,0 +1,5 @@
+pascallouis@google.com
+maruel@google.com
+tamird@google.com
+
+# COMPONENT: Toolchain>Go
diff --git a/api/README b/api/README
index ce24efc..76d0971 100644
--- a/api/README
+++ b/api/README
@@ -11,3 +11,7 @@
next.txt is the only file intended to be mutated. It's a list of
features that may be added to the next version. It only affects
warning output from the go api tool.
+
+fuchsia.txt lists Fuchsia specific features. This list can be regenerated with:
+
+fx exec ${FUCHSIA_DIR}/third_party/go/regen-api
diff --git a/api/fuchsia.txt b/api/fuchsia.txt
new file mode 100644
index 0000000..9f4e5cb
--- /dev/null
+++ b/api/fuchsia.txt
@@ -0,0 +1,8548 @@
+pkg syscall/zx, const ChannelMaxMessageBytes = 65536
+pkg syscall/zx, const ChannelMaxMessageBytes ideal-int
+pkg syscall/zx, const ChannelMaxMessageHandles = 64
+pkg syscall/zx, const ChannelMaxMessageHandles ideal-int
+pkg syscall/zx, const ErrAccessDenied = -30
+pkg syscall/zx, const ErrAccessDenied Status
+pkg syscall/zx, const ErrAddressInUse = -72
+pkg syscall/zx, const ErrAddressInUse Status
+pkg syscall/zx, const ErrAddressUnreachable = -71
+pkg syscall/zx, const ErrAddressUnreachable Status
+pkg syscall/zx, const ErrAlreadyBound = -27
+pkg syscall/zx, const ErrAlreadyBound Status
+pkg syscall/zx, const ErrAlreadyExists = -26
+pkg syscall/zx, const ErrAlreadyExists Status
+pkg syscall/zx, const ErrBadHandle = -11
+pkg syscall/zx, const ErrBadHandle Status
+pkg syscall/zx, const ErrBadPath = -50
+pkg syscall/zx, const ErrBadPath Status
+pkg syscall/zx, const ErrBadState = -20
+pkg syscall/zx, const ErrBadState Status
+pkg syscall/zx, const ErrBadSyscall = -13
+pkg syscall/zx, const ErrBadSyscall Status
+pkg syscall/zx, const ErrBufferTooSmall = -15
+pkg syscall/zx, const ErrBufferTooSmall Status
+pkg syscall/zx, const ErrCallFailed = -5
+pkg syscall/zx, const ErrCallFailed Status
+pkg syscall/zx, const ErrCanceled = -23
+pkg syscall/zx, const ErrCanceled Status
+pkg syscall/zx, const ErrConnectionAborted = -76
+pkg syscall/zx, const ErrConnectionAborted Status
+pkg syscall/zx, const ErrConnectionRefused = -74
+pkg syscall/zx, const ErrConnectionRefused Status
+pkg syscall/zx, const ErrConnectionReset = -75
+pkg syscall/zx, const ErrConnectionReset Status
+pkg syscall/zx, const ErrFileBig = -53
+pkg syscall/zx, const ErrFileBig Status
+pkg syscall/zx, const ErrHandleClosed = -23
+pkg syscall/zx, const ErrHandleClosed Status
+pkg syscall/zx, const ErrIO = -40
+pkg syscall/zx, const ErrIO Status
+pkg syscall/zx, const ErrIODataIntegrity = -42
+pkg syscall/zx, const ErrIODataIntegrity Status
+pkg syscall/zx, const ErrIODataLoss = -43
+pkg syscall/zx, const ErrIODataLoss Status
+pkg syscall/zx, const ErrIORefused = -41
+pkg syscall/zx, const ErrIORefused Status
+pkg syscall/zx, const ErrInternal = -1
+pkg syscall/zx, const ErrInternal Status
+pkg syscall/zx, const ErrInterruptedRetry = -6
+pkg syscall/zx, const ErrInterruptedRetry Status
+pkg syscall/zx, const ErrInvalidArgs = -10
+pkg syscall/zx, const ErrInvalidArgs Status
+pkg syscall/zx, const ErrNext = -61
+pkg syscall/zx, const ErrNext Status
+pkg syscall/zx, const ErrNoMemory = -4
+pkg syscall/zx, const ErrNoMemory Status
+pkg syscall/zx, const ErrNoResources = -3
+pkg syscall/zx, const ErrNoResources Status
+pkg syscall/zx, const ErrNoSpace = -54
+pkg syscall/zx, const ErrNoSpace Status
+pkg syscall/zx, const ErrNotConnected = -73
+pkg syscall/zx, const ErrNotConnected Status
+pkg syscall/zx, const ErrNotDir = -51
+pkg syscall/zx, const ErrNotDir Status
+pkg syscall/zx, const ErrNotEmpty = -55
+pkg syscall/zx, const ErrNotEmpty Status
+pkg syscall/zx, const ErrNotFile = -52
+pkg syscall/zx, const ErrNotFile Status
+pkg syscall/zx, const ErrNotFound = -25
+pkg syscall/zx, const ErrNotFound Status
+pkg syscall/zx, const ErrNotSupported = -2
+pkg syscall/zx, const ErrNotSupported Status
+pkg syscall/zx, const ErrOk = 0
+pkg syscall/zx, const ErrOk Status
+pkg syscall/zx, const ErrOutOfRange = -14
+pkg syscall/zx, const ErrOutOfRange Status
+pkg syscall/zx, const ErrPeerClosed = -24
+pkg syscall/zx, const ErrPeerClosed Status
+pkg syscall/zx, const ErrProtocolNotSupported = -70
+pkg syscall/zx, const ErrProtocolNotSupported Status
+pkg syscall/zx, const ErrRemoteClosed = -24
+pkg syscall/zx, const ErrRemoteClosed Status
+pkg syscall/zx, const ErrShouldWait = -22
+pkg syscall/zx, const ErrShouldWait Status
+pkg syscall/zx, const ErrStop = -60
+pkg syscall/zx, const ErrStop Status
+pkg syscall/zx, const ErrTimedOut = -21
+pkg syscall/zx, const ErrTimedOut Status
+pkg syscall/zx, const ErrUnavailable = -28
+pkg syscall/zx, const ErrUnavailable Status
+pkg syscall/zx, const ErrWrongType = -12
+pkg syscall/zx, const ErrWrongType Status
+pkg syscall/zx, const HANDLE_INVALID = 0
+pkg syscall/zx, const HANDLE_INVALID Handle
+pkg syscall/zx, const HandleInvalid = 0
+pkg syscall/zx, const HandleInvalid Handle
+pkg syscall/zx, const HandleOpDuplicate = 1
+pkg syscall/zx, const HandleOpDuplicate HandleOp
+pkg syscall/zx, const HandleOpMove = 0
+pkg syscall/zx, const HandleOpMove HandleOp
+pkg syscall/zx, const HandleSize = 4
+pkg syscall/zx, const HandleSize uint64
+pkg syscall/zx, const ObjectInfoBTI = 20
+pkg syscall/zx, const ObjectInfoBTI ideal-int
+pkg syscall/zx, const ObjectInfoCpUStats = 16
+pkg syscall/zx, const ObjectInfoCpUStats ideal-int
+pkg syscall/zx, const ObjectInfoHandleBasic = 2
+pkg syscall/zx, const ObjectInfoHandleBasic ideal-int
+pkg syscall/zx, const ObjectInfoHandleCount = 19
+pkg syscall/zx, const ObjectInfoHandleCount ideal-int
+pkg syscall/zx, const ObjectInfoHandleNone = 0
+pkg syscall/zx, const ObjectInfoHandleNone ideal-int
+pkg syscall/zx, const ObjectInfoHandleValid = 1
+pkg syscall/zx, const ObjectInfoHandleValid ideal-int
+pkg syscall/zx, const ObjectInfoJobChildren = 8
+pkg syscall/zx, const ObjectInfoJobChildren ideal-int
+pkg syscall/zx, const ObjectInfoJobProcesses = 9
+pkg syscall/zx, const ObjectInfoJobProcesses ideal-int
+pkg syscall/zx, const ObjectInfoKMemStats = 17
+pkg syscall/zx, const ObjectInfoKMemStats ideal-int
+pkg syscall/zx, const ObjectInfoProcess = 268435459
+pkg syscall/zx, const ObjectInfoProcess ideal-int
+pkg syscall/zx, const ObjectInfoProcessHandleStats = 21
+pkg syscall/zx, const ObjectInfoProcessHandleStats ideal-int
+pkg syscall/zx, const ObjectInfoProcessMaps = 13
+pkg syscall/zx, const ObjectInfoProcessMaps ideal-int
+pkg syscall/zx, const ObjectInfoProcessThreads = 4
+pkg syscall/zx, const ObjectInfoProcessThreads ideal-int
+pkg syscall/zx, const ObjectInfoProcessVMOs = 268435470
+pkg syscall/zx, const ObjectInfoProcessVMOs ideal-int
+pkg syscall/zx, const ObjectInfoProcessVMOs_V1 = 14
+pkg syscall/zx, const ObjectInfoProcessVMOs_V1 ideal-int
+pkg syscall/zx, const ObjectInfoResource = 18
+pkg syscall/zx, const ObjectInfoResource ideal-int
+pkg syscall/zx, const ObjectInfoResourceChildren = 5
+pkg syscall/zx, const ObjectInfoResourceChildren ideal-int
+pkg syscall/zx, const ObjectInfoResourceRecords = 6
+pkg syscall/zx, const ObjectInfoResourceRecords ideal-int
+pkg syscall/zx, const ObjectInfoSocket = 22
+pkg syscall/zx, const ObjectInfoSocket ideal-int
+pkg syscall/zx, const ObjectInfoTaskStats = 12
+pkg syscall/zx, const ObjectInfoTaskStats ideal-int
+pkg syscall/zx, const ObjectInfoThread = 10
+pkg syscall/zx, const ObjectInfoThread ideal-int
+pkg syscall/zx, const ObjectInfoThreadExceptionReport = 11
+pkg syscall/zx, const ObjectInfoThreadExceptionReport ideal-int
+pkg syscall/zx, const ObjectInfoThreadStats = 15
+pkg syscall/zx, const ObjectInfoThreadStats ideal-int
+pkg syscall/zx, const ObjectInfoVMAR = 7
+pkg syscall/zx, const ObjectInfoVMAR ideal-int
+pkg syscall/zx, const ObjectInfoVMO = 268435479
+pkg syscall/zx, const ObjectInfoVMO ideal-int
+pkg syscall/zx, const ObjectInfoVMO_V1 = 23
+pkg syscall/zx, const ObjectInfoVMO_V1 ideal-int
+pkg syscall/zx, const ObjectTypeBti = 24
+pkg syscall/zx, const ObjectTypeBti ObjectType
+pkg syscall/zx, const ObjectTypeChannel = 4
+pkg syscall/zx, const ObjectTypeChannel ObjectType
+pkg syscall/zx, const ObjectTypeEvent = 5
+pkg syscall/zx, const ObjectTypeEvent ObjectType
+pkg syscall/zx, const ObjectTypeEventPair = 16
+pkg syscall/zx, const ObjectTypeEventPair ObjectType
+pkg syscall/zx, const ObjectTypeFifo = 19
+pkg syscall/zx, const ObjectTypeFifo ObjectType
+pkg syscall/zx, const ObjectTypeGuest = 20
+pkg syscall/zx, const ObjectTypeGuest ObjectType
+pkg syscall/zx, const ObjectTypeInterrupt = 9
+pkg syscall/zx, const ObjectTypeInterrupt ObjectType
+pkg syscall/zx, const ObjectTypeIommu = 23
+pkg syscall/zx, const ObjectTypeIommu ObjectType
+pkg syscall/zx, const ObjectTypeJob = 17
+pkg syscall/zx, const ObjectTypeJob ObjectType
+pkg syscall/zx, const ObjectTypeLog = 12
+pkg syscall/zx, const ObjectTypeLog ObjectType
+pkg syscall/zx, const ObjectTypeNone = 0
+pkg syscall/zx, const ObjectTypeNone ObjectType
+pkg syscall/zx, const ObjectTypePager = 28
+pkg syscall/zx, const ObjectTypePager ObjectType
+pkg syscall/zx, const ObjectTypePciDevice = 11
+pkg syscall/zx, const ObjectTypePciDevice ObjectType
+pkg syscall/zx, const ObjectTypePmt = 26
+pkg syscall/zx, const ObjectTypePmt ObjectType
+pkg syscall/zx, const ObjectTypePort = 6
+pkg syscall/zx, const ObjectTypePort ObjectType
+pkg syscall/zx, const ObjectTypeProcess = 1
+pkg syscall/zx, const ObjectTypeProcess ObjectType
+pkg syscall/zx, const ObjectTypeProfile = 25
+pkg syscall/zx, const ObjectTypeProfile ObjectType
+pkg syscall/zx, const ObjectTypeResource = 15
+pkg syscall/zx, const ObjectTypeResource ObjectType
+pkg syscall/zx, const ObjectTypeSocket = 14
+pkg syscall/zx, const ObjectTypeSocket ObjectType
+pkg syscall/zx, const ObjectTypeSuspendToken = 27
+pkg syscall/zx, const ObjectTypeSuspendToken ObjectType
+pkg syscall/zx, const ObjectTypeThread = 2
+pkg syscall/zx, const ObjectTypeThread ObjectType
+pkg syscall/zx, const ObjectTypeTimer = 22
+pkg syscall/zx, const ObjectTypeTimer ObjectType
+pkg syscall/zx, const ObjectTypeVcpu = 21
+pkg syscall/zx, const ObjectTypeVcpu ObjectType
+pkg syscall/zx, const ObjectTypeVmar = 18
+pkg syscall/zx, const ObjectTypeVmar ObjectType
+pkg syscall/zx, const ObjectTypeVmo = 3
+pkg syscall/zx, const ObjectTypeVmo ObjectType
+pkg syscall/zx, const ProcessInfoFlagDebuggerAttached = 4
+pkg syscall/zx, const ProcessInfoFlagDebuggerAttached ideal-int
+pkg syscall/zx, const ProcessInfoFlagExited = 2
+pkg syscall/zx, const ProcessInfoFlagExited ideal-int
+pkg syscall/zx, const ProcessInfoFlagStarted = 1
+pkg syscall/zx, const ProcessInfoFlagStarted uint32
+pkg syscall/zx, const PropJobMaxHeight = 7
+pkg syscall/zx, const PropJobMaxHeight ideal-int
+pkg syscall/zx, const PropName = 3
+pkg syscall/zx, const PropName ideal-int
+pkg syscall/zx, const PropNumStateKinds = 2
+pkg syscall/zx, const PropNumStateKinds ideal-int
+pkg syscall/zx, const PropProcessDebugAddr = 5
+pkg syscall/zx, const PropProcessDebugAddr ideal-int
+pkg syscall/zx, const PropProcessVDSOBaseAddress = 6
+pkg syscall/zx, const PropProcessVDSOBaseAddress ideal-int
+pkg syscall/zx, const PropRegisterFS = 4
+pkg syscall/zx, const PropRegisterFS ideal-int
+pkg syscall/zx, const RightApplyPolicy = 524288
+pkg syscall/zx, const RightApplyPolicy Rights
+pkg syscall/zx, const RightDestroy = 512
+pkg syscall/zx, const RightDestroy Rights
+pkg syscall/zx, const RightDuplicate = 1
+pkg syscall/zx, const RightDuplicate Rights
+pkg syscall/zx, const RightEnumerate = 256
+pkg syscall/zx, const RightEnumerate Rights
+pkg syscall/zx, const RightExecute = 16
+pkg syscall/zx, const RightExecute Rights
+pkg syscall/zx, const RightGetPolicy = 1024
+pkg syscall/zx, const RightGetPolicy Rights
+pkg syscall/zx, const RightGetProperty = 64
+pkg syscall/zx, const RightGetProperty Rights
+pkg syscall/zx, const RightInspect = 32768
+pkg syscall/zx, const RightInspect Rights
+pkg syscall/zx, const RightManageJob = 65536
+pkg syscall/zx, const RightManageJob Rights
+pkg syscall/zx, const RightManageProcess = 131072
+pkg syscall/zx, const RightManageProcess Rights
+pkg syscall/zx, const RightManageThread = 262144
+pkg syscall/zx, const RightManageThread Rights
+pkg syscall/zx, const RightMap = 32
+pkg syscall/zx, const RightMap Rights
+pkg syscall/zx, const RightNone = 0
+pkg syscall/zx, const RightNone Rights
+pkg syscall/zx, const RightRead = 4
+pkg syscall/zx, const RightRead Rights
+pkg syscall/zx, const RightSameRights = 2147483648
+pkg syscall/zx, const RightSameRights Rights
+pkg syscall/zx, const RightSetPolicy = 2048
+pkg syscall/zx, const RightSetPolicy Rights
+pkg syscall/zx, const RightSetProperty = 128
+pkg syscall/zx, const RightSetProperty Rights
+pkg syscall/zx, const RightSignal = 4096
+pkg syscall/zx, const RightSignal Rights
+pkg syscall/zx, const RightSignalPeer = 8192
+pkg syscall/zx, const RightSignalPeer Rights
+pkg syscall/zx, const RightTransfer = 2
+pkg syscall/zx, const RightTransfer Rights
+pkg syscall/zx, const RightWait = 16384
+pkg syscall/zx, const RightWait Rights
+pkg syscall/zx, const RightWrite = 8
+pkg syscall/zx, const RightWrite Rights
+pkg syscall/zx, const RightsBasic = 49155
+pkg syscall/zx, const RightsBasic Rights
+pkg syscall/zx, const RightsIO = 12
+pkg syscall/zx, const RightsIO Rights
+pkg syscall/zx, const RightsPolicy = 3072
+pkg syscall/zx, const RightsPolicy Rights
+pkg syscall/zx, const RightsProperty = 192
+pkg syscall/zx, const RightsProperty Rights
+pkg syscall/zx, const SignalChannelPeerClosed = 4
+pkg syscall/zx, const SignalChannelPeerClosed ideal-int
+pkg syscall/zx, const SignalChannelReadable = 1
+pkg syscall/zx, const SignalChannelReadable ideal-int
+pkg syscall/zx, const SignalChannelWritable = 2
+pkg syscall/zx, const SignalChannelWritable ideal-int
+pkg syscall/zx, const SignalEpairPeerClosed = 4
+pkg syscall/zx, const SignalEpairPeerClosed ideal-int
+pkg syscall/zx, const SignalEpairSignaled = 8
+pkg syscall/zx, const SignalEpairSignaled ideal-int
+pkg syscall/zx, const SignalEventMask = 248
+pkg syscall/zx, const SignalEventMask Signals
+pkg syscall/zx, const SignalEventSignaled = 8
+pkg syscall/zx, const SignalEventSignaled ideal-int
+pkg syscall/zx, const SignalFIFOPeerClosed = 4
+pkg syscall/zx, const SignalFIFOPeerClosed ideal-int
+pkg syscall/zx, const SignalFIFOReadable = 1
+pkg syscall/zx, const SignalFIFOReadable ideal-int
+pkg syscall/zx, const SignalFIFOSignalMask = 7
+pkg syscall/zx, const SignalFIFOSignalMask ideal-int
+pkg syscall/zx, const SignalFIFOWritable = 2
+pkg syscall/zx, const SignalFIFOWritable ideal-int
+pkg syscall/zx, const SignalHandleClosed = 8388608
+pkg syscall/zx, const SignalHandleClosed ideal-int
+pkg syscall/zx, const SignalJobSignaled = 8
+pkg syscall/zx, const SignalJobSignaled ideal-int
+pkg syscall/zx, const SignalNone = 0
+pkg syscall/zx, const SignalNone Signals
+pkg syscall/zx, const SignalObject0 = 1
+pkg syscall/zx, const SignalObject0 ideal-int
+pkg syscall/zx, const SignalObject1 = 2
+pkg syscall/zx, const SignalObject1 ideal-int
+pkg syscall/zx, const SignalObject10 = 1024
+pkg syscall/zx, const SignalObject10 ideal-int
+pkg syscall/zx, const SignalObject11 = 2048
+pkg syscall/zx, const SignalObject11 ideal-int
+pkg syscall/zx, const SignalObject12 = 4096
+pkg syscall/zx, const SignalObject12 ideal-int
+pkg syscall/zx, const SignalObject13 = 8192
+pkg syscall/zx, const SignalObject13 ideal-int
+pkg syscall/zx, const SignalObject14 = 16384
+pkg syscall/zx, const SignalObject14 ideal-int
+pkg syscall/zx, const SignalObject15 = 32768
+pkg syscall/zx, const SignalObject15 ideal-int
+pkg syscall/zx, const SignalObject16 = 65536
+pkg syscall/zx, const SignalObject16 ideal-int
+pkg syscall/zx, const SignalObject17 = 131072
+pkg syscall/zx, const SignalObject17 ideal-int
+pkg syscall/zx, const SignalObject18 = 262144
+pkg syscall/zx, const SignalObject18 ideal-int
+pkg syscall/zx, const SignalObject19 = 524288
+pkg syscall/zx, const SignalObject19 ideal-int
+pkg syscall/zx, const SignalObject2 = 4
+pkg syscall/zx, const SignalObject2 ideal-int
+pkg syscall/zx, const SignalObject20 = 1048576
+pkg syscall/zx, const SignalObject20 ideal-int
+pkg syscall/zx, const SignalObject21 = 2097152
+pkg syscall/zx, const SignalObject21 ideal-int
+pkg syscall/zx, const SignalObject22 = 4194304
+pkg syscall/zx, const SignalObject22 ideal-int
+pkg syscall/zx, const SignalObject23 = 8388608
+pkg syscall/zx, const SignalObject23 ideal-int
+pkg syscall/zx, const SignalObject3 = 8
+pkg syscall/zx, const SignalObject3 ideal-int
+pkg syscall/zx, const SignalObject4 = 16
+pkg syscall/zx, const SignalObject4 ideal-int
+pkg syscall/zx, const SignalObject5 = 32
+pkg syscall/zx, const SignalObject5 ideal-int
+pkg syscall/zx, const SignalObject6 = 64
+pkg syscall/zx, const SignalObject6 ideal-int
+pkg syscall/zx, const SignalObject7 = 128
+pkg syscall/zx, const SignalObject7 ideal-int
+pkg syscall/zx, const SignalObject8 = 256
+pkg syscall/zx, const SignalObject8 ideal-int
+pkg syscall/zx, const SignalObject9 = 512
+pkg syscall/zx, const SignalObject9 ideal-int
+pkg syscall/zx, const SignalObjectAll = 1048575
+pkg syscall/zx, const SignalObjectAll ideal-int
+pkg syscall/zx, const SignalPortPeerClosed = 4
+pkg syscall/zx, const SignalPortPeerClosed ideal-int
+pkg syscall/zx, const SignalPortReadable = 1
+pkg syscall/zx, const SignalPortReadable ideal-int
+pkg syscall/zx, const SignalPortSignaled = 8
+pkg syscall/zx, const SignalPortSignaled ideal-int
+pkg syscall/zx, const SignalProccessSignaled = 8
+pkg syscall/zx, const SignalProccessSignaled ideal-int
+pkg syscall/zx, const SignalResourceChildAdded = 4
+pkg syscall/zx, const SignalResourceChildAdded ideal-int
+pkg syscall/zx, const SignalResourceReadable = 1
+pkg syscall/zx, const SignalResourceReadable ideal-int
+pkg syscall/zx, const SignalResourceWritable = 2
+pkg syscall/zx, const SignalResourceWritable ideal-int
+pkg syscall/zx, const SignalSocketPeerClosed = 4
+pkg syscall/zx, const SignalSocketPeerClosed ideal-int
+pkg syscall/zx, const SignalSocketPeerWriteDisabled = 16
+pkg syscall/zx, const SignalSocketPeerWriteDisabled ideal-int
+pkg syscall/zx, const SignalSocketReadable = 1
+pkg syscall/zx, const SignalSocketReadable ideal-int
+pkg syscall/zx, const SignalSocketWritable = 2
+pkg syscall/zx, const SignalSocketWritable ideal-int
+pkg syscall/zx, const SignalSocketWriteDisabled = 32
+pkg syscall/zx, const SignalSocketWriteDisabled ideal-int
+pkg syscall/zx, const SignalTaskSignalMask = 8
+pkg syscall/zx, const SignalTaskSignalMask ideal-int
+pkg syscall/zx, const SignalTaskTerminated = 8
+pkg syscall/zx, const SignalTaskTerminated ideal-int
+pkg syscall/zx, const SignalThreadSignaled = 8
+pkg syscall/zx, const SignalThreadSignaled ideal-int
+pkg syscall/zx, const SignalUser0 = 16777216
+pkg syscall/zx, const SignalUser0 ideal-int
+pkg syscall/zx, const SignalUser1 = 33554432
+pkg syscall/zx, const SignalUser1 ideal-int
+pkg syscall/zx, const SignalUser2 = 67108864
+pkg syscall/zx, const SignalUser2 ideal-int
+pkg syscall/zx, const SignalUser3 = 134217728
+pkg syscall/zx, const SignalUser3 ideal-int
+pkg syscall/zx, const SignalUser4 = 268435456
+pkg syscall/zx, const SignalUser4 ideal-int
+pkg syscall/zx, const SignalUser5 = 536870912
+pkg syscall/zx, const SignalUser5 ideal-int
+pkg syscall/zx, const SignalUser6 = 1073741824
+pkg syscall/zx, const SignalUser6 ideal-int
+pkg syscall/zx, const SignalUser7 = 2147483648
+pkg syscall/zx, const SignalUser7 ideal-int
+pkg syscall/zx, const SignalUserAll = 240
+pkg syscall/zx, const SignalUserAll Signals
+pkg syscall/zx, const SocketDatagram = 1
+pkg syscall/zx, const SocketDatagram ideal-int
+pkg syscall/zx, const SocketPeek = 8
+pkg syscall/zx, const SocketPeek ideal-int
+pkg syscall/zx, const SocketShutdownRead = 2
+pkg syscall/zx, const SocketShutdownRead ideal-int
+pkg syscall/zx, const SocketShutdownWrite = 1
+pkg syscall/zx, const SocketShutdownWrite ideal-int
+pkg syscall/zx, const SocketStream = 0
+pkg syscall/zx, const SocketStream ideal-int
+pkg syscall/zx, const TimensecInfinite = 9223372036854775807
+pkg syscall/zx, const TimensecInfinite Time
+pkg syscall/zx, const VMFlagCanMapExecute = 512
+pkg syscall/zx, const VMFlagCanMapExecute VMFlag
+pkg syscall/zx, const VMFlagCanMapRead = 128
+pkg syscall/zx, const VMFlagCanMapRead VMFlag
+pkg syscall/zx, const VMFlagCanMapSpecific = 64
+pkg syscall/zx, const VMFlagCanMapSpecific VMFlag
+pkg syscall/zx, const VMFlagCanMapWrite = 256
+pkg syscall/zx, const VMFlagCanMapWrite VMFlag
+pkg syscall/zx, const VMFlagCompact = 8
+pkg syscall/zx, const VMFlagCompact VMFlag
+pkg syscall/zx, const VMFlagPermExecute = 4
+pkg syscall/zx, const VMFlagPermExecute VMFlag
+pkg syscall/zx, const VMFlagPermRead = 1
+pkg syscall/zx, const VMFlagPermRead VMFlag
+pkg syscall/zx, const VMFlagPermWrite = 2
+pkg syscall/zx, const VMFlagPermWrite VMFlag
+pkg syscall/zx, const VMFlagSpecific = 16
+pkg syscall/zx, const VMFlagSpecific VMFlag
+pkg syscall/zx, const VMFlagSpecificOverwrite = 32
+pkg syscall/zx, const VMFlagSpecificOverwrite VMFlag
+pkg syscall/zx, const VMOChildOptionCopyOnWrite = 16
+pkg syscall/zx, const VMOChildOptionCopyOnWrite ideal-int
+pkg syscall/zx, const VMOChildOptionNoWrite = 32
+pkg syscall/zx, const VMOChildOptionNoWrite ideal-int
+pkg syscall/zx, const VMOChildOptionPrivatePagerCopy = 16
+pkg syscall/zx, const VMOChildOptionPrivatePagerCopy ideal-int
+pkg syscall/zx, const VMOChildOptionResizable = 4
+pkg syscall/zx, const VMOChildOptionResizable ideal-int
+pkg syscall/zx, const VMOChildOptionSlice = 8
+pkg syscall/zx, const VMOChildOptionSlice ideal-int
+pkg syscall/zx, const VMOChildOptionSnapshot = 1
+pkg syscall/zx, const VMOChildOptionSnapshot VMOChildOption
+pkg syscall/zx, const VMOChildOptionSnapshotAtLeastOnWrite = 16
+pkg syscall/zx, const VMOChildOptionSnapshotAtLeastOnWrite ideal-int
+pkg syscall/zx, const VMOOptionResizable = 2
+pkg syscall/zx, const VMOOptionResizable VMOOption
+pkg syscall/zx, const ZX_MAX_NAME_LEN = 32
+pkg syscall/zx, const ZX_MAX_NAME_LEN ideal-int
+pkg syscall/zx, const ZX_RACT_DISABLE = 2
+pkg syscall/zx, const ZX_RACT_DISABLE ideal-int
+pkg syscall/zx, const ZX_RACT_ENABLE = 1
+pkg syscall/zx, const ZX_RACT_ENABLE ideal-int
+pkg syscall/zx, const ZX_RREC_DATA = 2
+pkg syscall/zx, const ZX_RREC_DATA ideal-int
+pkg syscall/zx, const ZX_RREC_DELETED = 0
+pkg syscall/zx, const ZX_RREC_DELETED ideal-int
+pkg syscall/zx, const ZX_RREC_IOPORT = 5
+pkg syscall/zx, const ZX_RREC_IOPORT ideal-int
+pkg syscall/zx, const ZX_RREC_IRQ = 3
+pkg syscall/zx, const ZX_RREC_IRQ ideal-int
+pkg syscall/zx, const ZX_RREC_MMIO = 4
+pkg syscall/zx, const ZX_RREC_MMIO ideal-int
+pkg syscall/zx, const ZX_RREC_SELF = 1
+pkg syscall/zx, const ZX_RREC_SELF ideal-int
+pkg syscall/zx, const ZX_RREC_SELF_GENERIC = 0
+pkg syscall/zx, const ZX_RREC_SELF_GENERIC ideal-int
+pkg syscall/zx, const ZX_RREC_SELF_ROOT = 1
+pkg syscall/zx, const ZX_RREC_SELF_ROOT ideal-int
+pkg syscall/zx, method (*Channel) Handle() *Handle
+pkg syscall/zx, method (*Event) Handle() *Handle
+pkg syscall/zx, method (*Handle) IsValid() bool
+pkg syscall/zx, method (*Handle) Load() Handle
+pkg syscall/zx, method (*Log) Handle() *Handle
+pkg syscall/zx, method (*Port) Handle() *Handle
+pkg syscall/zx, method (*Rrec) Box() RrecValue
+pkg syscall/zx, method (*Socket) Handle() *Handle
+pkg syscall/zx, method (*VMO) Handle() *Handle
+pkg syscall/zx, method (Rights) StrictSubsetOf(Rights) bool
+pkg syscall/zx, method (Rights) StrictSupersetOf(Rights) bool
+pkg syscall/zx, method (Rights) SubsetOf(Rights) bool
+pkg syscall/zx, method (Rights) Subtract(Rights) Rights
+pkg syscall/zx, method (Rights) SupersetOf(Rights) bool
+pkg syscall/zx, method (Status) String() string
+pkg syscall/zx, type Channel uint32
+pkg syscall/zx, type ChannelCallArgs struct
+pkg syscall/zx, type ChannelCallArgs struct, ReadBytes unsafe.Pointer
+pkg syscall/zx, type ChannelCallArgs struct, ReadHandles *Handle
+pkg syscall/zx, type ChannelCallArgs struct, ReadNumBytes uint32
+pkg syscall/zx, type ChannelCallArgs struct, ReadNumHandles uint32
+pkg syscall/zx, type ChannelCallArgs struct, WriteBytes unsafe.Pointer
+pkg syscall/zx, type ChannelCallArgs struct, WriteHandles *Handle
+pkg syscall/zx, type ChannelCallArgs struct, WriteNumBytes uint32
+pkg syscall/zx, type ChannelCallArgs struct, WriteNumHandles uint32
+pkg syscall/zx, type ChannelCallEtcArgs struct
+pkg syscall/zx, type ChannelCallEtcArgs struct, ReadBytes unsafe.Pointer
+pkg syscall/zx, type ChannelCallEtcArgs struct, ReadHandles *HandleInfo
+pkg syscall/zx, type ChannelCallEtcArgs struct, ReadNumBytes uint32
+pkg syscall/zx, type ChannelCallEtcArgs struct, ReadNumHandles uint32
+pkg syscall/zx, type ChannelCallEtcArgs struct, WriteBytes unsafe.Pointer
+pkg syscall/zx, type ChannelCallEtcArgs struct, WriteHandles *HandleDisposition
+pkg syscall/zx, type ChannelCallEtcArgs struct, WriteNumBytes uint32
+pkg syscall/zx, type ChannelCallEtcArgs struct, WriteNumHandles uint32
+pkg syscall/zx, type Clock uint32
+pkg syscall/zx, type Duration int64
+pkg syscall/zx, type Event uint32
+pkg syscall/zx, type FIFOState struct
+pkg syscall/zx, type Handle uint32
+pkg syscall/zx, type HandleDisposition struct
+pkg syscall/zx, type HandleDisposition struct, Handle Handle
+pkg syscall/zx, type HandleDisposition struct, Operation HandleOp
+pkg syscall/zx, type HandleDisposition struct, Result Status
+pkg syscall/zx, type HandleDisposition struct, Rights Rights
+pkg syscall/zx, type HandleDisposition struct, Type ObjectType
+pkg syscall/zx, type HandleInfo struct
+pkg syscall/zx, type HandleInfo struct, Handle Handle
+pkg syscall/zx, type HandleInfo struct, Rights Rights
+pkg syscall/zx, type HandleInfo struct, Type ObjectType
+pkg syscall/zx, type HandleInfo struct, Unused uint32
+pkg syscall/zx, type HandleOp uint32
+pkg syscall/zx, type InfoHandleBasic struct
+pkg syscall/zx, type InfoHandleBasic struct, Koid uint64
+pkg syscall/zx, type InfoHandleBasic struct, Props uint32
+pkg syscall/zx, type InfoHandleBasic struct, RelatedKoid uint64
+pkg syscall/zx, type InfoHandleBasic struct, Rights Rights
+pkg syscall/zx, type InfoHandleBasic struct, Type ObjectType
+pkg syscall/zx, type InfoSocket struct
+pkg syscall/zx, type InfoSocket struct, Options uint32
+pkg syscall/zx, type InfoSocket struct, RXBufAvailable int
+pkg syscall/zx, type InfoSocket struct, RXBufMax int
+pkg syscall/zx, type InfoSocket struct, RXBufSize int
+pkg syscall/zx, type InfoSocket struct, TXBufMax int
+pkg syscall/zx, type InfoSocket struct, TXBufSize int
+pkg syscall/zx, type Log uint32
+pkg syscall/zx, type ObjectType uint32
+pkg syscall/zx, type Paddr uintptr
+pkg syscall/zx, type Port uint32
+pkg syscall/zx, type Rights uint32
+pkg syscall/zx, type Rrec struct
+pkg syscall/zx, type RrecData struct
+pkg syscall/zx, type RrecData struct, Data [56]uint8
+pkg syscall/zx, type RrecData struct, Options uint32
+pkg syscall/zx, type RrecData struct, Subtype uint16
+pkg syscall/zx, type RrecData struct, Type uint16
+pkg syscall/zx, type RrecIOPort struct
+pkg syscall/zx, type RrecIOPort struct, Options uint32
+pkg syscall/zx, type RrecIOPort struct, PortBase uint32
+pkg syscall/zx, type RrecIOPort struct, PortCount uint32
+pkg syscall/zx, type RrecIOPort struct, Subtype uint16
+pkg syscall/zx, type RrecIOPort struct, Type uint16
+pkg syscall/zx, type RrecIRQ struct
+pkg syscall/zx, type RrecIRQ struct, IRQBase uint32
+pkg syscall/zx, type RrecIRQ struct, IRQCount uint32
+pkg syscall/zx, type RrecIRQ struct, Options uint32
+pkg syscall/zx, type RrecIRQ struct, Subtype uint16
+pkg syscall/zx, type RrecIRQ struct, Type uint16
+pkg syscall/zx, type RrecMMIO struct
+pkg syscall/zx, type RrecMMIO struct, Options uint32
+pkg syscall/zx, type RrecMMIO struct, PhysBase uint64
+pkg syscall/zx, type RrecMMIO struct, PhysSize uint64
+pkg syscall/zx, type RrecMMIO struct, Subtype uint16
+pkg syscall/zx, type RrecMMIO struct, Type uint16
+pkg syscall/zx, type RrecSelf struct
+pkg syscall/zx, type RrecSelf struct, ChildCount uint32
+pkg syscall/zx, type RrecSelf struct, Koid uint64
+pkg syscall/zx, type RrecSelf struct, Name [32]uint8
+pkg syscall/zx, type RrecSelf struct, Options uint32
+pkg syscall/zx, type RrecSelf struct, RecordCount uint32
+pkg syscall/zx, type RrecSelf struct, Subtype uint16
+pkg syscall/zx, type RrecSelf struct, Type uint16
+pkg syscall/zx, type RrecValue interface, unexported methods
+pkg syscall/zx, type SMCParameters struct
+pkg syscall/zx, type SMCResult struct
+pkg syscall/zx, type Signals uint32
+pkg syscall/zx, type Socket uint32
+pkg syscall/zx, type Status int32
+pkg syscall/zx, type Time int64
+pkg syscall/zx, type VMAR uint32
+pkg syscall/zx, type VMFlag uint32
+pkg syscall/zx, type VMO uint32
+pkg syscall/zx, type VMOChildOption uint32
+pkg syscall/zx, type VMOOption int
+pkg syscall/zx, type Vaddr uintptr
+pkg syscall/zx, type WaitItem struct
+pkg syscall/zx, type WaitItem struct, Handle Handle
+pkg syscall/zx, type WaitItem struct, Pending Signals
+pkg syscall/zx, type WaitItem struct, WaitFor Signals
+pkg syscall/zx, var EOF error
+pkg syscall/zx, var EPIPE error
+pkg syscall/zx/diagnostics, const ArchiveAccessorName = "fuchsia.diagnostics.ArchiveAccessor"
+pkg syscall/zx/diagnostics, const ArchiveAccessorName ideal-string
+pkg syscall/zx/diagnostics, const ArchiveAccessorStreamDiagnosticsOrdinal = 2361924900314496062
+pkg syscall/zx/diagnostics, const ArchiveAccessorStreamDiagnosticsOrdinal uint64
+pkg syscall/zx/diagnostics, const BatchIteratorGetNextOrdinal = 8654095804583269541
+pkg syscall/zx/diagnostics, const BatchIteratorGetNextOrdinal uint64
+pkg syscall/zx/diagnostics, const BatchIteratorGetNextResultErr = 2
+pkg syscall/zx/diagnostics, const BatchIteratorGetNextResultErr ideal-int
+pkg syscall/zx/diagnostics, const BatchIteratorGetNextResultResponse = 1
+pkg syscall/zx/diagnostics, const BatchIteratorGetNextResultResponse ideal-int
+pkg syscall/zx/diagnostics, const ClientSelectorConfigurationSelectAll = 2
+pkg syscall/zx/diagnostics, const ClientSelectorConfigurationSelectAll ideal-int
+pkg syscall/zx/diagnostics, const ClientSelectorConfigurationSelectors = 1
+pkg syscall/zx/diagnostics, const ClientSelectorConfigurationSelectors ideal-int
+pkg syscall/zx/diagnostics, const ClientSelectorConfiguration_unknownData = 0
+pkg syscall/zx/diagnostics, const ClientSelectorConfiguration_unknownData ideal-int
+pkg syscall/zx/diagnostics, const DataTypeInspect = 1
+pkg syscall/zx/diagnostics, const DataTypeInspect DataType
+pkg syscall/zx/diagnostics, const DataTypeLifecycle = 2
+pkg syscall/zx/diagnostics, const DataTypeLifecycle DataType
+pkg syscall/zx/diagnostics, const DataTypeLogs = 3
+pkg syscall/zx/diagnostics, const DataTypeLogs DataType
+pkg syscall/zx/diagnostics, const FormatJson = 1
+pkg syscall/zx/diagnostics, const FormatJson Format
+pkg syscall/zx/diagnostics, const FormatText = 2
+pkg syscall/zx/diagnostics, const FormatText Format
+pkg syscall/zx/diagnostics, const FormattedContentJson = 1
+pkg syscall/zx/diagnostics, const FormattedContentJson ideal-int
+pkg syscall/zx/diagnostics, const FormattedContentText = 2
+pkg syscall/zx/diagnostics, const FormattedContentText ideal-int
+pkg syscall/zx/diagnostics, const FormattedContent_unknownData = 0
+pkg syscall/zx/diagnostics, const FormattedContent_unknownData ideal-int
+pkg syscall/zx/diagnostics, const MaxDataHierarchyDepth = 100
+pkg syscall/zx/diagnostics, const MaxDataHierarchyDepth uint16
+pkg syscall/zx/diagnostics, const MaxMonikerSegments = 25
+pkg syscall/zx/diagnostics, const MaxMonikerSegments uint16
+pkg syscall/zx/diagnostics, const MaxStringSelectorLength = 100
+pkg syscall/zx/diagnostics, const MaxStringSelectorLength uint16
+pkg syscall/zx/diagnostics, const MaximumEntriesPerBatch = 64
+pkg syscall/zx/diagnostics, const MaximumEntriesPerBatch uint16
+pkg syscall/zx/diagnostics, const MaximumRawSelectorLength = 1024
+pkg syscall/zx/diagnostics, const MaximumRawSelectorLength uint16
+pkg syscall/zx/diagnostics, const ReaderErrorIo = 1
+pkg syscall/zx/diagnostics, const ReaderErrorIo ReaderError
+pkg syscall/zx/diagnostics, const SelectorArgumentRawSelector = 2
+pkg syscall/zx/diagnostics, const SelectorArgumentRawSelector ideal-int
+pkg syscall/zx/diagnostics, const SelectorArgumentStructuredSelector = 1
+pkg syscall/zx/diagnostics, const SelectorArgumentStructuredSelector ideal-int
+pkg syscall/zx/diagnostics, const SelectorArgument_unknownData = 0
+pkg syscall/zx/diagnostics, const SelectorArgument_unknownData ideal-int
+pkg syscall/zx/diagnostics, const SeverityDebug = 32
+pkg syscall/zx/diagnostics, const SeverityDebug Severity
+pkg syscall/zx/diagnostics, const SeverityError = 80
+pkg syscall/zx/diagnostics, const SeverityError Severity
+pkg syscall/zx/diagnostics, const SeverityFatal = 96
+pkg syscall/zx/diagnostics, const SeverityFatal Severity
+pkg syscall/zx/diagnostics, const SeverityInfo = 48
+pkg syscall/zx/diagnostics, const SeverityInfo Severity
+pkg syscall/zx/diagnostics, const SeverityTrace = 16
+pkg syscall/zx/diagnostics, const SeverityTrace Severity
+pkg syscall/zx/diagnostics, const SeverityWarn = 64
+pkg syscall/zx/diagnostics, const SeverityWarn Severity
+pkg syscall/zx/diagnostics, const StreamModeSnapshot = 1
+pkg syscall/zx/diagnostics, const StreamModeSnapshot StreamMode
+pkg syscall/zx/diagnostics, const StreamModeSnapshotThenSubscribe = 2
+pkg syscall/zx/diagnostics, const StreamModeSnapshotThenSubscribe StreamMode
+pkg syscall/zx/diagnostics, const StreamModeSubscribe = 3
+pkg syscall/zx/diagnostics, const StreamModeSubscribe StreamMode
+pkg syscall/zx/diagnostics, const StringSelectorExactMatch = 2
+pkg syscall/zx/diagnostics, const StringSelectorExactMatch ideal-int
+pkg syscall/zx/diagnostics, const StringSelectorStringPattern = 1
+pkg syscall/zx/diagnostics, const StringSelectorStringPattern ideal-int
+pkg syscall/zx/diagnostics, const StringSelector_unknownData = 0
+pkg syscall/zx/diagnostics, const StringSelector_unknownData ideal-int
+pkg syscall/zx/diagnostics, const TreeSelectorPropertySelector = 2
+pkg syscall/zx/diagnostics, const TreeSelectorPropertySelector ideal-int
+pkg syscall/zx/diagnostics, const TreeSelectorSubtreeSelector = 1
+pkg syscall/zx/diagnostics, const TreeSelectorSubtreeSelector ideal-int
+pkg syscall/zx/diagnostics, const TreeSelector_unknownData = 0
+pkg syscall/zx/diagnostics, const TreeSelector_unknownData ideal-int
+pkg syscall/zx/diagnostics, func BatchIteratorGetNextResultWithErr(ReaderError) BatchIteratorGetNextResult
+pkg syscall/zx/diagnostics, func BatchIteratorGetNextResultWithResponse(BatchIteratorGetNextResponse) BatchIteratorGetNextResult
+pkg syscall/zx/diagnostics, func ClientSelectorConfigurationWithSelectAll(bool) ClientSelectorConfiguration
+pkg syscall/zx/diagnostics, func ClientSelectorConfigurationWithSelectors([]SelectorArgument) ClientSelectorConfiguration
+pkg syscall/zx/diagnostics, func FormattedContentWithJson(mem.Buffer) FormattedContent
+pkg syscall/zx/diagnostics, func FormattedContentWithText(mem.Buffer) FormattedContent
+pkg syscall/zx/diagnostics, func NewArchiveAccessorWithCtxInterfaceRequest() (ArchiveAccessorWithCtxInterfaceRequest, *ArchiveAccessorWithCtxInterface, error)
+pkg syscall/zx/diagnostics, func NewBatchIteratorWithCtxInterfaceRequest() (BatchIteratorWithCtxInterfaceRequest, *BatchIteratorWithCtxInterface, error)
+pkg syscall/zx/diagnostics, func SelectorArgumentWithRawSelector(string) SelectorArgument
+pkg syscall/zx/diagnostics, func SelectorArgumentWithStructuredSelector(Selector) SelectorArgument
+pkg syscall/zx/diagnostics, func StringSelectorWithExactMatch(string) StringSelector
+pkg syscall/zx/diagnostics, func StringSelectorWithStringPattern(string) StringSelector
+pkg syscall/zx/diagnostics, func TreeSelectorWithPropertySelector(PropertySelector) TreeSelector
+pkg syscall/zx/diagnostics, func TreeSelectorWithSubtreeSelector(SubtreeSelector) TreeSelector
+pkg syscall/zx/diagnostics, method (*ArchiveAccessorEventProxy) Handle() *zx.Handle
+pkg syscall/zx/diagnostics, method (*ArchiveAccessorWithCtxInterface) Handle() *zx.Handle
+pkg syscall/zx/diagnostics, method (*ArchiveAccessorWithCtxInterface) StreamDiagnostics(context.Context, StreamParameters, BatchIteratorWithCtxInterfaceRequest) error
+pkg syscall/zx/diagnostics, method (*ArchiveAccessorWithCtxInterfaceRequest) Handle() *zx.Handle
+pkg syscall/zx/diagnostics, method (*ArchiveAccessorWithCtxStub) Dispatch(fidl.DispatchArgs) (fidl.Message, bool, error)
+pkg syscall/zx/diagnostics, method (*BatchIteratorEventProxy) Handle() *zx.Handle
+pkg syscall/zx/diagnostics, method (*BatchIteratorGetNextResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/diagnostics, method (*BatchIteratorGetNextResult) Ordinal() uint64
+pkg syscall/zx/diagnostics, method (*BatchIteratorGetNextResult) SetErr(ReaderError)
+pkg syscall/zx/diagnostics, method (*BatchIteratorGetNextResult) SetResponse(BatchIteratorGetNextResponse)
+pkg syscall/zx/diagnostics, method (*BatchIteratorGetNextResult) Which() I_batchIteratorGetNextResultTag
+pkg syscall/zx/diagnostics, method (*BatchIteratorWithCtxInterface) GetNext(context.Context) (BatchIteratorGetNextResult, error)
+pkg syscall/zx/diagnostics, method (*BatchIteratorWithCtxInterface) Handle() *zx.Handle
+pkg syscall/zx/diagnostics, method (*BatchIteratorWithCtxInterfaceRequest) Handle() *zx.Handle
+pkg syscall/zx/diagnostics, method (*BatchIteratorWithCtxStub) Dispatch(fidl.DispatchArgs) (fidl.Message, bool, error)
+pkg syscall/zx/diagnostics, method (*ClientSelectorConfiguration) GetUnknownData() fidl.UnknownData
+pkg syscall/zx/diagnostics, method (*ClientSelectorConfiguration) Ordinal() uint64
+pkg syscall/zx/diagnostics, method (*ClientSelectorConfiguration) SetSelectAll(bool)
+pkg syscall/zx/diagnostics, method (*ClientSelectorConfiguration) SetSelectors([]SelectorArgument)
+pkg syscall/zx/diagnostics, method (*ClientSelectorConfiguration) Which() I_clientSelectorConfigurationTag
+pkg syscall/zx/diagnostics, method (*ComponentSelector) ClearMonikerSegments()
+pkg syscall/zx/diagnostics, method (*ComponentSelector) GetMonikerSegments() []StringSelector
+pkg syscall/zx/diagnostics, method (*ComponentSelector) GetMonikerSegmentsWithDefault([]StringSelector) []StringSelector
+pkg syscall/zx/diagnostics, method (*ComponentSelector) GetUnknownData() map[uint64]fidl.UnknownData
+pkg syscall/zx/diagnostics, method (*ComponentSelector) HasMonikerSegments() bool
+pkg syscall/zx/diagnostics, method (*ComponentSelector) HasUnknownData() bool
+pkg syscall/zx/diagnostics, method (*ComponentSelector) SetMonikerSegments([]StringSelector)
+pkg syscall/zx/diagnostics, method (*FormattedContent) GetUnknownData() fidl.UnknownData
+pkg syscall/zx/diagnostics, method (*FormattedContent) Ordinal() uint64
+pkg syscall/zx/diagnostics, method (*FormattedContent) SetJson(mem.Buffer)
+pkg syscall/zx/diagnostics, method (*FormattedContent) SetText(mem.Buffer)
+pkg syscall/zx/diagnostics, method (*FormattedContent) Which() I_formattedContentTag
+pkg syscall/zx/diagnostics, method (*Interest) ClearMinSeverity()
+pkg syscall/zx/diagnostics, method (*Interest) GetMinSeverity() Severity
+pkg syscall/zx/diagnostics, method (*Interest) GetMinSeverityWithDefault(Severity) Severity
+pkg syscall/zx/diagnostics, method (*Interest) GetUnknownData() map[uint64]fidl.UnknownData
+pkg syscall/zx/diagnostics, method (*Interest) HasMinSeverity() bool
+pkg syscall/zx/diagnostics, method (*Interest) HasUnknownData() bool
+pkg syscall/zx/diagnostics, method (*Interest) SetMinSeverity(Severity)
+pkg syscall/zx/diagnostics, method (*PerformanceConfiguration) ClearBatchRetrievalTimeoutSeconds()
+pkg syscall/zx/diagnostics, method (*PerformanceConfiguration) ClearMaxAggregateContentSizeBytes()
+pkg syscall/zx/diagnostics, method (*PerformanceConfiguration) GetBatchRetrievalTimeoutSeconds() int64
+pkg syscall/zx/diagnostics, method (*PerformanceConfiguration) GetBatchRetrievalTimeoutSecondsWithDefault(int64) int64
+pkg syscall/zx/diagnostics, method (*PerformanceConfiguration) GetMaxAggregateContentSizeBytes() uint64
+pkg syscall/zx/diagnostics, method (*PerformanceConfiguration) GetMaxAggregateContentSizeBytesWithDefault(uint64) uint64
+pkg syscall/zx/diagnostics, method (*PerformanceConfiguration) GetUnknownData() map[uint64]fidl.UnknownData
+pkg syscall/zx/diagnostics, method (*PerformanceConfiguration) HasBatchRetrievalTimeoutSeconds() bool
+pkg syscall/zx/diagnostics, method (*PerformanceConfiguration) HasMaxAggregateContentSizeBytes() bool
+pkg syscall/zx/diagnostics, method (*PerformanceConfiguration) HasUnknownData() bool
+pkg syscall/zx/diagnostics, method (*PerformanceConfiguration) SetBatchRetrievalTimeoutSeconds(int64)
+pkg syscall/zx/diagnostics, method (*PerformanceConfiguration) SetMaxAggregateContentSizeBytes(uint64)
+pkg syscall/zx/diagnostics, method (*PropertySelector) Marshaler() fidl.Marshaler
+pkg syscall/zx/diagnostics, method (*Selector) ClearComponentSelector()
+pkg syscall/zx/diagnostics, method (*Selector) ClearTreeSelector()
+pkg syscall/zx/diagnostics, method (*Selector) GetComponentSelector() ComponentSelector
+pkg syscall/zx/diagnostics, method (*Selector) GetComponentSelectorWithDefault(ComponentSelector) ComponentSelector
+pkg syscall/zx/diagnostics, method (*Selector) GetTreeSelector() TreeSelector
+pkg syscall/zx/diagnostics, method (*Selector) GetTreeSelectorWithDefault(TreeSelector) TreeSelector
+pkg syscall/zx/diagnostics, method (*Selector) GetUnknownData() map[uint64]fidl.UnknownData
+pkg syscall/zx/diagnostics, method (*Selector) HasComponentSelector() bool
+pkg syscall/zx/diagnostics, method (*Selector) HasTreeSelector() bool
+pkg syscall/zx/diagnostics, method (*Selector) HasUnknownData() bool
+pkg syscall/zx/diagnostics, method (*Selector) SetComponentSelector(ComponentSelector)
+pkg syscall/zx/diagnostics, method (*Selector) SetTreeSelector(TreeSelector)
+pkg syscall/zx/diagnostics, method (*SelectorArgument) GetUnknownData() fidl.UnknownData
+pkg syscall/zx/diagnostics, method (*SelectorArgument) Ordinal() uint64
+pkg syscall/zx/diagnostics, method (*SelectorArgument) SetRawSelector(string)
+pkg syscall/zx/diagnostics, method (*SelectorArgument) SetStructuredSelector(Selector)
+pkg syscall/zx/diagnostics, method (*SelectorArgument) Which() I_selectorArgumentTag
+pkg syscall/zx/diagnostics, method (*StreamParameters) ClearBatchRetrievalTimeoutSeconds()
+pkg syscall/zx/diagnostics, method (*StreamParameters) ClearClientSelectorConfiguration()
+pkg syscall/zx/diagnostics, method (*StreamParameters) ClearDataType()
+pkg syscall/zx/diagnostics, method (*StreamParameters) ClearFormat()
+pkg syscall/zx/diagnostics, method (*StreamParameters) ClearPerformanceConfiguration()
+pkg syscall/zx/diagnostics, method (*StreamParameters) ClearStreamMode()
+pkg syscall/zx/diagnostics, method (*StreamParameters) GetBatchRetrievalTimeoutSeconds() int64
+pkg syscall/zx/diagnostics, method (*StreamParameters) GetBatchRetrievalTimeoutSecondsWithDefault(int64) int64
+pkg syscall/zx/diagnostics, method (*StreamParameters) GetClientSelectorConfiguration() ClientSelectorConfiguration
+pkg syscall/zx/diagnostics, method (*StreamParameters) GetClientSelectorConfigurationWithDefault(ClientSelectorConfiguration) ClientSelectorConfiguration
+pkg syscall/zx/diagnostics, method (*StreamParameters) GetDataType() DataType
+pkg syscall/zx/diagnostics, method (*StreamParameters) GetDataTypeWithDefault(DataType) DataType
+pkg syscall/zx/diagnostics, method (*StreamParameters) GetFormat() Format
+pkg syscall/zx/diagnostics, method (*StreamParameters) GetFormatWithDefault(Format) Format
+pkg syscall/zx/diagnostics, method (*StreamParameters) GetPerformanceConfiguration() PerformanceConfiguration
+pkg syscall/zx/diagnostics, method (*StreamParameters) GetPerformanceConfigurationWithDefault(PerformanceConfiguration) PerformanceConfiguration
+pkg syscall/zx/diagnostics, method (*StreamParameters) GetStreamMode() StreamMode
+pkg syscall/zx/diagnostics, method (*StreamParameters) GetStreamModeWithDefault(StreamMode) StreamMode
+pkg syscall/zx/diagnostics, method (*StreamParameters) GetUnknownData() map[uint64]fidl.UnknownData
+pkg syscall/zx/diagnostics, method (*StreamParameters) HasBatchRetrievalTimeoutSeconds() bool
+pkg syscall/zx/diagnostics, method (*StreamParameters) HasClientSelectorConfiguration() bool
+pkg syscall/zx/diagnostics, method (*StreamParameters) HasDataType() bool
+pkg syscall/zx/diagnostics, method (*StreamParameters) HasFormat() bool
+pkg syscall/zx/diagnostics, method (*StreamParameters) HasPerformanceConfiguration() bool
+pkg syscall/zx/diagnostics, method (*StreamParameters) HasStreamMode() bool
+pkg syscall/zx/diagnostics, method (*StreamParameters) HasUnknownData() bool
+pkg syscall/zx/diagnostics, method (*StreamParameters) SetBatchRetrievalTimeoutSeconds(int64)
+pkg syscall/zx/diagnostics, method (*StreamParameters) SetClientSelectorConfiguration(ClientSelectorConfiguration)
+pkg syscall/zx/diagnostics, method (*StreamParameters) SetDataType(DataType)
+pkg syscall/zx/diagnostics, method (*StreamParameters) SetFormat(Format)
+pkg syscall/zx/diagnostics, method (*StreamParameters) SetPerformanceConfiguration(PerformanceConfiguration)
+pkg syscall/zx/diagnostics, method (*StreamParameters) SetStreamMode(StreamMode)
+pkg syscall/zx/diagnostics, method (*StringSelector) GetUnknownData() fidl.UnknownData
+pkg syscall/zx/diagnostics, method (*StringSelector) Ordinal() uint64
+pkg syscall/zx/diagnostics, method (*StringSelector) SetExactMatch(string)
+pkg syscall/zx/diagnostics, method (*StringSelector) SetStringPattern(string)
+pkg syscall/zx/diagnostics, method (*StringSelector) Which() I_stringSelectorTag
+pkg syscall/zx/diagnostics, method (*SubtreeSelector) Marshaler() fidl.Marshaler
+pkg syscall/zx/diagnostics, method (*TreeSelector) GetUnknownData() fidl.UnknownData
+pkg syscall/zx/diagnostics, method (*TreeSelector) Ordinal() uint64
+pkg syscall/zx/diagnostics, method (*TreeSelector) SetPropertySelector(PropertySelector)
+pkg syscall/zx/diagnostics, method (*TreeSelector) SetSubtreeSelector(SubtreeSelector)
+pkg syscall/zx/diagnostics, method (*TreeSelector) Which() I_treeSelectorTag
+pkg syscall/zx/diagnostics, method (ArchiveAccessorWithCtxInterfaceRequest) Name() string
+pkg syscall/zx/diagnostics, method (ArchiveAccessorWithCtxInterfaceRequest) ToChannel() zx.Channel
+pkg syscall/zx/diagnostics, method (DataType) I_EnumIsStrict() bool
+pkg syscall/zx/diagnostics, method (DataType) I_EnumValues() []DataType
+pkg syscall/zx/diagnostics, method (DataType) IsUnknown() bool
+pkg syscall/zx/diagnostics, method (DataType) String() string
+pkg syscall/zx/diagnostics, method (Format) I_EnumIsStrict() bool
+pkg syscall/zx/diagnostics, method (Format) I_EnumValues() []Format
+pkg syscall/zx/diagnostics, method (Format) IsUnknown() bool
+pkg syscall/zx/diagnostics, method (Format) String() string
+pkg syscall/zx/diagnostics, method (ReaderError) I_EnumIsStrict() bool
+pkg syscall/zx/diagnostics, method (ReaderError) I_EnumValues() []ReaderError
+pkg syscall/zx/diagnostics, method (ReaderError) IsUnknown() bool
+pkg syscall/zx/diagnostics, method (ReaderError) String() string
+pkg syscall/zx/diagnostics, method (Severity) I_EnumIsStrict() bool
+pkg syscall/zx/diagnostics, method (Severity) I_EnumValues() []Severity
+pkg syscall/zx/diagnostics, method (Severity) IsUnknown() bool
+pkg syscall/zx/diagnostics, method (Severity) String() string
+pkg syscall/zx/diagnostics, method (StreamMode) I_EnumIsStrict() bool
+pkg syscall/zx/diagnostics, method (StreamMode) I_EnumValues() []StreamMode
+pkg syscall/zx/diagnostics, method (StreamMode) IsUnknown() bool
+pkg syscall/zx/diagnostics, method (StreamMode) String() string
+pkg syscall/zx/diagnostics, type ArchiveAccessorEventProxy struct
+pkg syscall/zx/diagnostics, type ArchiveAccessorEventProxy struct, embedded zx.Channel
+pkg syscall/zx/diagnostics, type ArchiveAccessorWithCtx interface { StreamDiagnostics }
+pkg syscall/zx/diagnostics, type ArchiveAccessorWithCtx interface, StreamDiagnostics(context.Context, StreamParameters, BatchIteratorWithCtxInterfaceRequest) error
+pkg syscall/zx/diagnostics, type ArchiveAccessorWithCtxInterface struct
+pkg syscall/zx/diagnostics, type ArchiveAccessorWithCtxInterface struct, embedded zx.Channel
+pkg syscall/zx/diagnostics, type ArchiveAccessorWithCtxInterfaceRequest struct
+pkg syscall/zx/diagnostics, type ArchiveAccessorWithCtxInterfaceRequest struct, embedded zx.Channel
+pkg syscall/zx/diagnostics, type ArchiveAccessorWithCtxStub struct
+pkg syscall/zx/diagnostics, type ArchiveAccessorWithCtxStub struct, Impl ArchiveAccessorWithCtx
+pkg syscall/zx/diagnostics, type ArchiveAccessorWithCtxTransitionalBase struct
+pkg syscall/zx/diagnostics, type BatchIteratorEventProxy struct
+pkg syscall/zx/diagnostics, type BatchIteratorEventProxy struct, embedded zx.Channel
+pkg syscall/zx/diagnostics, type BatchIteratorGetNextResponse struct
+pkg syscall/zx/diagnostics, type BatchIteratorGetNextResponse struct, Batch []FormattedContent
+pkg syscall/zx/diagnostics, type BatchIteratorGetNextResult struct
+pkg syscall/zx/diagnostics, type BatchIteratorGetNextResult struct, Err ReaderError
+pkg syscall/zx/diagnostics, type BatchIteratorGetNextResult struct, Response BatchIteratorGetNextResponse
+pkg syscall/zx/diagnostics, type BatchIteratorGetNextResult struct, embedded I_batchIteratorGetNextResultTag
+pkg syscall/zx/diagnostics, type BatchIteratorWithCtx interface { GetNext }
+pkg syscall/zx/diagnostics, type BatchIteratorWithCtx interface, GetNext(context.Context) (BatchIteratorGetNextResult, error)
+pkg syscall/zx/diagnostics, type BatchIteratorWithCtxInterface struct
+pkg syscall/zx/diagnostics, type BatchIteratorWithCtxInterface struct, embedded zx.Channel
+pkg syscall/zx/diagnostics, type BatchIteratorWithCtxInterfaceRequest struct
+pkg syscall/zx/diagnostics, type BatchIteratorWithCtxInterfaceRequest struct, embedded zx.Channel
+pkg syscall/zx/diagnostics, type BatchIteratorWithCtxStub struct
+pkg syscall/zx/diagnostics, type BatchIteratorWithCtxStub struct, Impl BatchIteratorWithCtx
+pkg syscall/zx/diagnostics, type BatchIteratorWithCtxTransitionalBase struct
+pkg syscall/zx/diagnostics, type ClientSelectorConfiguration struct
+pkg syscall/zx/diagnostics, type ClientSelectorConfiguration struct, I_unknownData interface{}
+pkg syscall/zx/diagnostics, type ClientSelectorConfiguration struct, SelectAll bool
+pkg syscall/zx/diagnostics, type ClientSelectorConfiguration struct, Selectors []SelectorArgument
+pkg syscall/zx/diagnostics, type ClientSelectorConfiguration struct, embedded I_clientSelectorConfigurationTag
+pkg syscall/zx/diagnostics, type ComponentSelector struct
+pkg syscall/zx/diagnostics, type ComponentSelector struct, I_unknownData interface{}
+pkg syscall/zx/diagnostics, type ComponentSelector struct, MonikerSegments []StringSelector
+pkg syscall/zx/diagnostics, type ComponentSelector struct, MonikerSegmentsPresent bool
+pkg syscall/zx/diagnostics, type DataType uint8
+pkg syscall/zx/diagnostics, type Format uint32
+pkg syscall/zx/diagnostics, type FormattedContent struct
+pkg syscall/zx/diagnostics, type FormattedContent struct, I_unknownData interface{}
+pkg syscall/zx/diagnostics, type FormattedContent struct, Json mem.Buffer
+pkg syscall/zx/diagnostics, type FormattedContent struct, Text mem.Buffer
+pkg syscall/zx/diagnostics, type FormattedContent struct, embedded I_formattedContentTag
+pkg syscall/zx/diagnostics, type I_batchIteratorGetNextResultTag uint64
+pkg syscall/zx/diagnostics, type I_clientSelectorConfigurationTag uint64
+pkg syscall/zx/diagnostics, type I_formattedContentTag uint64
+pkg syscall/zx/diagnostics, type I_selectorArgumentTag uint64
+pkg syscall/zx/diagnostics, type I_stringSelectorTag uint64
+pkg syscall/zx/diagnostics, type I_treeSelectorTag uint64
+pkg syscall/zx/diagnostics, type Interest struct
+pkg syscall/zx/diagnostics, type Interest struct, I_unknownData interface{}
+pkg syscall/zx/diagnostics, type Interest struct, MinSeverity Severity
+pkg syscall/zx/diagnostics, type Interest struct, MinSeverityPresent bool
+pkg syscall/zx/diagnostics, type PerformanceConfiguration struct
+pkg syscall/zx/diagnostics, type PerformanceConfiguration struct, BatchRetrievalTimeoutSeconds int64
+pkg syscall/zx/diagnostics, type PerformanceConfiguration struct, BatchRetrievalTimeoutSecondsPresent bool
+pkg syscall/zx/diagnostics, type PerformanceConfiguration struct, I_unknownData interface{}
+pkg syscall/zx/diagnostics, type PerformanceConfiguration struct, MaxAggregateContentSizeBytes uint64
+pkg syscall/zx/diagnostics, type PerformanceConfiguration struct, MaxAggregateContentSizeBytesPresent bool
+pkg syscall/zx/diagnostics, type PropertySelector struct
+pkg syscall/zx/diagnostics, type PropertySelector struct, NodePath []StringSelector
+pkg syscall/zx/diagnostics, type PropertySelector struct, TargetProperties StringSelector
+pkg syscall/zx/diagnostics, type ReaderError uint32
+pkg syscall/zx/diagnostics, type Selector struct
+pkg syscall/zx/diagnostics, type Selector struct, ComponentSelector ComponentSelector
+pkg syscall/zx/diagnostics, type Selector struct, ComponentSelectorPresent bool
+pkg syscall/zx/diagnostics, type Selector struct, I_unknownData interface{}
+pkg syscall/zx/diagnostics, type Selector struct, TreeSelector TreeSelector
+pkg syscall/zx/diagnostics, type Selector struct, TreeSelectorPresent bool
+pkg syscall/zx/diagnostics, type SelectorArgument struct
+pkg syscall/zx/diagnostics, type SelectorArgument struct, I_unknownData interface{}
+pkg syscall/zx/diagnostics, type SelectorArgument struct, RawSelector string
+pkg syscall/zx/diagnostics, type SelectorArgument struct, StructuredSelector Selector
+pkg syscall/zx/diagnostics, type SelectorArgument struct, embedded I_selectorArgumentTag
+pkg syscall/zx/diagnostics, type Severity uint8
+pkg syscall/zx/diagnostics, type StreamMode uint8
+pkg syscall/zx/diagnostics, type StreamParameters struct
+pkg syscall/zx/diagnostics, type StreamParameters struct, BatchRetrievalTimeoutSeconds int64
+pkg syscall/zx/diagnostics, type StreamParameters struct, BatchRetrievalTimeoutSecondsPresent bool
+pkg syscall/zx/diagnostics, type StreamParameters struct, ClientSelectorConfiguration ClientSelectorConfiguration
+pkg syscall/zx/diagnostics, type StreamParameters struct, ClientSelectorConfigurationPresent bool
+pkg syscall/zx/diagnostics, type StreamParameters struct, DataType DataType
+pkg syscall/zx/diagnostics, type StreamParameters struct, DataTypePresent bool
+pkg syscall/zx/diagnostics, type StreamParameters struct, Format Format
+pkg syscall/zx/diagnostics, type StreamParameters struct, FormatPresent bool
+pkg syscall/zx/diagnostics, type StreamParameters struct, I_unknownData interface{}
+pkg syscall/zx/diagnostics, type StreamParameters struct, PerformanceConfiguration PerformanceConfiguration
+pkg syscall/zx/diagnostics, type StreamParameters struct, PerformanceConfigurationPresent bool
+pkg syscall/zx/diagnostics, type StreamParameters struct, StreamMode StreamMode
+pkg syscall/zx/diagnostics, type StreamParameters struct, StreamModePresent bool
+pkg syscall/zx/diagnostics, type StringSelector struct
+pkg syscall/zx/diagnostics, type StringSelector struct, ExactMatch string
+pkg syscall/zx/diagnostics, type StringSelector struct, I_unknownData interface{}
+pkg syscall/zx/diagnostics, type StringSelector struct, StringPattern string
+pkg syscall/zx/diagnostics, type StringSelector struct, embedded I_stringSelectorTag
+pkg syscall/zx/diagnostics, type SubtreeSelector struct
+pkg syscall/zx/diagnostics, type SubtreeSelector struct, NodePath []StringSelector
+pkg syscall/zx/diagnostics, type TreeSelector struct
+pkg syscall/zx/diagnostics, type TreeSelector struct, I_unknownData interface{}
+pkg syscall/zx/diagnostics, type TreeSelector struct, PropertySelector PropertySelector
+pkg syscall/zx/diagnostics, type TreeSelector struct, SubtreeSelector SubtreeSelector
+pkg syscall/zx/diagnostics, type TreeSelector struct, embedded I_treeSelectorTag
+pkg syscall/zx/fdio, const HandleTypeFileDescriptor = 48
+pkg syscall/zx/fdio, const HandleTypeFileDescriptor ideal-int
+pkg syscall/zx/fdio, const HandleTypeLogger = 53
+pkg syscall/zx/fdio, const HandleTypeLogger ideal-int
+pkg syscall/zx/fdio, const HandleTypeRemote = 50
+pkg syscall/zx/fdio, const HandleTypeRemote ideal-int
+pkg syscall/zx/fdio, const HandleTypeSocket = 54
+pkg syscall/zx/fdio, const HandleTypeSocket ideal-int
+pkg syscall/zx/fdio, const S_IFDIR = 16384
+pkg syscall/zx/fdio, const S_IFDIR ideal-int
+pkg syscall/zx/fdio, const S_IFIFO = 4096
+pkg syscall/zx/fdio, const S_IFIFO ideal-int
+pkg syscall/zx/fdio, const S_IFMT = 61440
+pkg syscall/zx/fdio, const S_IFMT ideal-int
+pkg syscall/zx/fdio, const S_IFREG = 32768
+pkg syscall/zx/fdio, const S_IFREG ideal-int
+pkg syscall/zx/fdio, const VtypeBdev = 24576
+pkg syscall/zx/fdio, const VtypeBdev Vtype
+pkg syscall/zx/fdio, const VtypeCdev = 8192
+pkg syscall/zx/fdio, const VtypeCdev Vtype
+pkg syscall/zx/fdio, const VtypeDir = 16384
+pkg syscall/zx/fdio, const VtypeDir Vtype
+pkg syscall/zx/fdio, const VtypeFile = 32768
+pkg syscall/zx/fdio, const VtypeFile Vtype
+pkg syscall/zx/fdio, const VtypeIRGRP = 32
+pkg syscall/zx/fdio, const VtypeIRGRP Vtype
+pkg syscall/zx/fdio, const VtypeIROTH = 4
+pkg syscall/zx/fdio, const VtypeIROTH Vtype
+pkg syscall/zx/fdio, const VtypeIRUSR = 256
+pkg syscall/zx/fdio, const VtypeIRUSR Vtype
+pkg syscall/zx/fdio, const VtypeIRWXG = 56
+pkg syscall/zx/fdio, const VtypeIRWXG Vtype
+pkg syscall/zx/fdio, const VtypeIRWXO = 7
+pkg syscall/zx/fdio, const VtypeIRWXO Vtype
+pkg syscall/zx/fdio, const VtypeIRWXU = 448
+pkg syscall/zx/fdio, const VtypeIRWXU Vtype
+pkg syscall/zx/fdio, const VtypeISGID = 1024
+pkg syscall/zx/fdio, const VtypeISGID Vtype
+pkg syscall/zx/fdio, const VtypeISUID = 2048
+pkg syscall/zx/fdio, const VtypeISUID Vtype
+pkg syscall/zx/fdio, const VtypeISVTX = 512
+pkg syscall/zx/fdio, const VtypeISVTX Vtype
+pkg syscall/zx/fdio, const VtypeIWGRP = 16
+pkg syscall/zx/fdio, const VtypeIWGRP Vtype
+pkg syscall/zx/fdio, const VtypeIWOTH = 2
+pkg syscall/zx/fdio, const VtypeIWOTH Vtype
+pkg syscall/zx/fdio, const VtypeIWUSR = 128
+pkg syscall/zx/fdio, const VtypeIWUSR Vtype
+pkg syscall/zx/fdio, const VtypeIXGRP = 8
+pkg syscall/zx/fdio, const VtypeIXGRP Vtype
+pkg syscall/zx/fdio, const VtypeIXOTH = 1
+pkg syscall/zx/fdio, const VtypeIXOTH Vtype
+pkg syscall/zx/fdio, const VtypeIXUSR = 64
+pkg syscall/zx/fdio, const VtypeIXUSR Vtype
+pkg syscall/zx/fdio, const VtypeLink = 40960
+pkg syscall/zx/fdio, const VtypeLink Vtype
+pkg syscall/zx/fdio, const VtypeMask = 61440
+pkg syscall/zx/fdio, const VtypeMask Vtype
+pkg syscall/zx/fdio, const VtypePipe = 4096
+pkg syscall/zx/fdio, const VtypePipe Vtype
+pkg syscall/zx/fdio, const VtypeSock = 49152
+pkg syscall/zx/fdio, const VtypeSock Vtype
+pkg syscall/zx/fdio, type FDIO interface { Clone, Close, GetAttr, Handles, Link, Open, Read, ReadAt, ReadDirents, Rename, Rewind, Seek, SetAttr, Sync, Truncate, Unlink, Write, WriteAt }
+pkg syscall/zx/fdio, type FDIO interface, Clone() (FDIO, error)
+pkg syscall/zx/fdio, type FDIO interface, Close() error
+pkg syscall/zx/fdio, type FDIO interface, GetAttr() (io.NodeAttributes, error)
+pkg syscall/zx/fdio, type FDIO interface, Handles() []zx.Handle
+pkg syscall/zx/fdio, type FDIO interface, Link(string, string) error
+pkg syscall/zx/fdio, type FDIO interface, Open(string, uint32, uint32) (FDIO, error)
+pkg syscall/zx/fdio, type FDIO interface, Read([]uint8) (int, error)
+pkg syscall/zx/fdio, type FDIO interface, ReadAt([]uint8, int64) (int, error)
+pkg syscall/zx/fdio, type FDIO interface, ReadDirents(uint64) ([]uint8, error)
+pkg syscall/zx/fdio, type FDIO interface, Rename(string, string) error
+pkg syscall/zx/fdio, type FDIO interface, Rewind() error
+pkg syscall/zx/fdio, type FDIO interface, Seek(int64, int) (int64, error)
+pkg syscall/zx/fdio, type FDIO interface, SetAttr(uint32, io.NodeAttributes) error
+pkg syscall/zx/fdio, type FDIO interface, Sync() error
+pkg syscall/zx/fdio, type FDIO interface, Truncate(uint64) error
+pkg syscall/zx/fdio, type FDIO interface, Unlink(string) error
+pkg syscall/zx/fdio, type FDIO interface, Write([]uint8) (int, error)
+pkg syscall/zx/fdio, type FDIO interface, WriteAt([]uint8, int64) (int, error)
+pkg syscall/zx/fdio, type Vtype uint32
+pkg syscall/zx/fidl, const ErrBadHandleEncoding = 12
+pkg syscall/zx/fidl, const ErrBadHandleEncoding ErrorCode
+pkg syscall/zx/fidl, const ErrBadInlineIndicatorEncoding = 15
+pkg syscall/zx/fidl, const ErrBadInlineIndicatorEncoding ErrorCode
+pkg syscall/zx/fidl, const ErrBadRefEncoding = 14
+pkg syscall/zx/fidl, const ErrBadRefEncoding ErrorCode
+pkg syscall/zx/fidl, const ErrDuplicateTxidReceived = 32
+pkg syscall/zx/fidl, const ErrDuplicateTxidReceived ErrorCode
+pkg syscall/zx/fidl, const ErrDuplicateTxidWaiting = 33
+pkg syscall/zx/fidl, const ErrDuplicateTxidWaiting ErrorCode
+pkg syscall/zx/fidl, const ErrExceededMaxOutOfLineDepth = 37
+pkg syscall/zx/fidl, const ErrExceededMaxOutOfLineDepth ErrorCode
+pkg syscall/zx/fidl, const ErrIncorrectHandleType = 34
+pkg syscall/zx/fidl, const ErrIncorrectHandleType ErrorCode
+pkg syscall/zx/fidl, const ErrInvalidBitsValue = 19
+pkg syscall/zx/fidl, const ErrInvalidBitsValue ErrorCode
+pkg syscall/zx/fidl, const ErrInvalidBoolValue = 9
+pkg syscall/zx/fidl, const ErrInvalidBoolValue ErrorCode
+pkg syscall/zx/fidl, const ErrInvalidEmptyStruct = 22
+pkg syscall/zx/fidl, const ErrInvalidEmptyStruct ErrorCode
+pkg syscall/zx/fidl, const ErrInvalidEnumValue = 20
+pkg syscall/zx/fidl, const ErrInvalidEnumValue ErrorCode
+pkg syscall/zx/fidl, const ErrInvalidInlineType = 2
+pkg syscall/zx/fidl, const ErrInvalidInlineType ErrorCode
+pkg syscall/zx/fidl, const ErrInvalidNumBytesInEnvelope = 23
+pkg syscall/zx/fidl, const ErrInvalidNumBytesInEnvelope ErrorCode
+pkg syscall/zx/fidl, const ErrInvalidNumHandlesInEnvelope = 24
+pkg syscall/zx/fidl, const ErrInvalidNumHandlesInEnvelope ErrorCode
+pkg syscall/zx/fidl, const ErrInvalidPointerType = 3
+pkg syscall/zx/fidl, const ErrInvalidPointerType ErrorCode
+pkg syscall/zx/fidl, const ErrInvalidUnionTag = 17
+pkg syscall/zx/fidl, const ErrInvalidUnionTag ErrorCode
+pkg syscall/zx/fidl, const ErrInvalidXUnionTag = 18
+pkg syscall/zx/fidl, const ErrInvalidXUnionTag ErrorCode
+pkg syscall/zx/fidl, const ErrMissingMarshalerContext = 30
+pkg syscall/zx/fidl, const ErrMissingMarshalerContext ErrorCode
+pkg syscall/zx/fidl, const ErrMissingRequiredHandleRights = 27
+pkg syscall/zx/fidl, const ErrMissingRequiredHandleRights ErrorCode
+pkg syscall/zx/fidl, const ErrNonZeroPadding = 13
+pkg syscall/zx/fidl, const ErrNonZeroPadding ErrorCode
+pkg syscall/zx/fidl, const ErrNotEnoughHandles = 10
+pkg syscall/zx/fidl, const ErrNotEnoughHandles ErrorCode
+pkg syscall/zx/fidl, const ErrPayloadTooSmall = 21
+pkg syscall/zx/fidl, const ErrPayloadTooSmall ErrorCode
+pkg syscall/zx/fidl, const ErrResponseWithoutRequest = 31
+pkg syscall/zx/fidl, const ErrResponseWithoutRequest ErrorCode
+pkg syscall/zx/fidl, const ErrStringNotUTF8 = 25
+pkg syscall/zx/fidl, const ErrStringNotUTF8 ErrorCode
+pkg syscall/zx/fidl, const ErrStringTooLong = 5
+pkg syscall/zx/fidl, const ErrStringTooLong ErrorCode
+pkg syscall/zx/fidl, const ErrStructIsNotPayload = 16
+pkg syscall/zx/fidl, const ErrStructIsNotPayload ErrorCode
+pkg syscall/zx/fidl, const ErrTooManyHandles = 11
+pkg syscall/zx/fidl, const ErrTooManyHandles ErrorCode
+pkg syscall/zx/fidl, const ErrUnableToReduceHandleRights = 28
+pkg syscall/zx/fidl, const ErrUnableToReduceHandleRights ErrorCode
+pkg syscall/zx/fidl, const ErrUnexpectedNullHandle = 7
+pkg syscall/zx/fidl, const ErrUnexpectedNullHandle ErrorCode
+pkg syscall/zx/fidl, const ErrUnexpectedNullRef = 8
+pkg syscall/zx/fidl, const ErrUnexpectedNullRef ErrorCode
+pkg syscall/zx/fidl, const ErrUnexpectedOrdinal = 6
+pkg syscall/zx/fidl, const ErrUnexpectedOrdinal ErrorCode
+pkg syscall/zx/fidl, const ErrUnknownMagic = 26
+pkg syscall/zx/fidl, const ErrUnknownMagic ErrorCode
+pkg syscall/zx/fidl, const ErrUnknownOrdinal = 1
+pkg syscall/zx/fidl, const ErrUnknownOrdinal ErrorCode
+pkg syscall/zx/fidl, const ErrUnspecifiedHandleRights = 29
+pkg syscall/zx/fidl, const ErrUnspecifiedHandleRights ErrorCode
+pkg syscall/zx/fidl, const ErrUnspecifiedHandleType = 35
+pkg syscall/zx/fidl, const ErrUnspecifiedHandleType ErrorCode
+pkg syscall/zx/fidl, const ErrValueTypeHandles = 36
+pkg syscall/zx/fidl, const ErrValueTypeHandles ErrorCode
+pkg syscall/zx/fidl, const ErrVectorTooLong = 4
+pkg syscall/zx/fidl, const ErrVectorTooLong ErrorCode
+pkg syscall/zx/fidl, const FidlV2WireFormatFlagMask = 2
+pkg syscall/zx/fidl, const FidlV2WireFormatFlagMask ideal-int
+pkg syscall/zx/fidl, const FidlWireFormatMagicNumberInitial = 1
+pkg syscall/zx/fidl, const FidlWireFormatMagicNumberInitial ideal-int
+pkg syscall/zx/fidl, const Invalid = 0
+pkg syscall/zx/fidl, const Invalid ErrorCode
+pkg syscall/zx/fidl, const ProtocolRights = 61454
+pkg syscall/zx/fidl, const ProtocolRights zx.Rights
+pkg syscall/zx/fidl, func AllowV2WireFormatDecoding()
+pkg syscall/zx/fidl, func CreateLazyMarshaler(interface{}) Marshaler
+pkg syscall/zx/fidl, func CreateMarshaler(interface{}) (Marshaler, error)
+pkg syscall/zx/fidl, func GetMarshalerContext(context.Context) (MarshalerContext, bool)
+pkg syscall/zx/fidl, func Marshal(Message, []uint8, []zx.HandleDisposition) (int, int, error)
+pkg syscall/zx/fidl, func MarshalHeaderThenMessage(*MessageHeader, Message, []uint8, []zx.HandleDisposition) (int, int, error)
+pkg syscall/zx/fidl, func MarshalWithContext(MarshalerContext, Message, []uint8, []zx.HandleDisposition) (int, int, error)
+pkg syscall/zx/fidl, func MustCreateMarshaler(interface{}) Marshaler
+pkg syscall/zx/fidl, func NewInterfaceRequest() (InterfaceRequest, *ChannelProxy, error)
+pkg syscall/zx/fidl, func Unmarshal([]uint8, []zx.HandleInfo, Message) (int, int, error)
+pkg syscall/zx/fidl, func UnmarshalHeaderThenMessage([]uint8, []zx.HandleInfo, *MessageHeader, Message) error
+pkg syscall/zx/fidl, func UnmarshalWithContext(MarshalerContext, []uint8, []zx.Handle, Message) (int, int, error)
+pkg syscall/zx/fidl, func UnmarshalWithContext2(MarshalerContext, []uint8, []zx.HandleInfo, Message) (int, int, error)
+pkg syscall/zx/fidl, func WithMarshalerContext(context.Context, MarshalerContext) context.Context
+pkg syscall/zx/fidl, method (*ChannelProxy) Call(uint64, Message, Message) error
+pkg syscall/zx/fidl, method (*ChannelProxy) Handle() *zx.Handle
+pkg syscall/zx/fidl, method (*ChannelProxy) IsValid() bool
+pkg syscall/zx/fidl, method (*ChannelProxy) Recv(uint64, Message) error
+pkg syscall/zx/fidl, method (*ChannelProxy) Send(uint64, Message) error
+pkg syscall/zx/fidl, method (*InterfaceRequest) Handle() *zx.Handle
+pkg syscall/zx/fidl, method (*MessageHeader) IsSupportedVersion() bool
+pkg syscall/zx/fidl, method (*MessageHeader) Marshaler() Marshaler
+pkg syscall/zx/fidl, method (*MessageHeader) NewCtx() MarshalerContext
+pkg syscall/zx/fidl, method (ErrorCode) Code() ErrorCode
+pkg syscall/zx/fidl, method (ErrorCode) Error() string
+pkg syscall/zx/fidl, method (ErrorCode) String() string
+pkg syscall/zx/fidl, method (MarshalerContext) NewHeader() MessageHeader
+pkg syscall/zx/fidl, type Bits interface { GetUnknownBits, HasUnknownBits }
+pkg syscall/zx/fidl, type Bits interface, GetUnknownBits() uint64
+pkg syscall/zx/fidl, type Bits interface, HasUnknownBits() bool
+pkg syscall/zx/fidl, type ChannelProxy struct
+pkg syscall/zx/fidl, type ChannelProxy struct, embedded zx.Channel
+pkg syscall/zx/fidl, type Context = context.Context
+pkg syscall/zx/fidl, type DispatchArgs struct
+pkg syscall/zx/fidl, type DispatchArgs struct, Bytes []uint8
+pkg syscall/zx/fidl, type DispatchArgs struct, Ctx context.Context
+pkg syscall/zx/fidl, type DispatchArgs struct, HandleInfos []zx.HandleInfo
+pkg syscall/zx/fidl, type DispatchArgs struct, Ordinal uint64
+pkg syscall/zx/fidl, type Enum interface { IsUnknown }
+pkg syscall/zx/fidl, type Enum interface, IsUnknown() bool
+pkg syscall/zx/fidl, type ErrorCode uint32
+pkg syscall/zx/fidl, type InterfaceRequest struct
+pkg syscall/zx/fidl, type InterfaceRequest struct, embedded zx.Channel
+pkg syscall/zx/fidl, type Marshaler interface, unexported methods
+pkg syscall/zx/fidl, type MarshalerContext struct
+pkg syscall/zx/fidl, type MarshalerContext struct, UseV2WireFormat bool
+pkg syscall/zx/fidl, type Message interface { Marshaler }
+pkg syscall/zx/fidl, type Message interface, Marshaler() Marshaler
+pkg syscall/zx/fidl, type MessageHeader struct
+pkg syscall/zx/fidl, type MessageHeader struct, Flags [3]uint8
+pkg syscall/zx/fidl, type MessageHeader struct, Magic uint8
+pkg syscall/zx/fidl, type MessageHeader struct, Ordinal uint64
+pkg syscall/zx/fidl, type MessageHeader struct, Txid uint32
+pkg syscall/zx/fidl, type Proxy interface { Call, IsValid, Recv, Send }
+pkg syscall/zx/fidl, type Proxy interface, Call(uint64, Message, Message) error
+pkg syscall/zx/fidl, type Proxy interface, IsValid() bool
+pkg syscall/zx/fidl, type Proxy interface, Recv(uint64, Message) error
+pkg syscall/zx/fidl, type Proxy interface, Send(uint64, Message) error
+pkg syscall/zx/fidl, type ServiceRequest interface { Name, ToChannel }
+pkg syscall/zx/fidl, type ServiceRequest interface, Name() string
+pkg syscall/zx/fidl, type ServiceRequest interface, ToChannel() zx.Channel
+pkg syscall/zx/fidl, type Stub interface { Dispatch }
+pkg syscall/zx/fidl, type Stub interface, Dispatch(DispatchArgs) (Message, bool, error)
+pkg syscall/zx/fidl, type UnknownData struct
+pkg syscall/zx/fidl, type UnknownData struct, Bytes []uint8
+pkg syscall/zx/fidl, type UnknownData struct, Handles []zx.HandleInfo
+pkg syscall/zx/fidl, type ValidationError interface { Code, Error }
+pkg syscall/zx/fidl, type ValidationError interface, Code() ErrorCode
+pkg syscall/zx/fidl, type ValidationError interface, Error() string
+pkg syscall/zx/fidl, var MessageHeaderSize int
+pkg syscall/zx/hardware/ethernet, const DeviceConfigMulticastAddMacOrdinal = 6691024185581582264
+pkg syscall/zx/hardware/ethernet, const DeviceConfigMulticastAddMacOrdinal uint64
+pkg syscall/zx/hardware/ethernet, const DeviceConfigMulticastDeleteMacOrdinal = 6057140368139090439
+pkg syscall/zx/hardware/ethernet, const DeviceConfigMulticastDeleteMacOrdinal uint64
+pkg syscall/zx/hardware/ethernet, const DeviceConfigMulticastSetPromiscuousModeOrdinal = 6040657827550980378
+pkg syscall/zx/hardware/ethernet, const DeviceConfigMulticastSetPromiscuousModeOrdinal uint64
+pkg syscall/zx/hardware/ethernet, const DeviceConfigMulticastTestFilterOrdinal = 6522233624121135779
+pkg syscall/zx/hardware/ethernet, const DeviceConfigMulticastTestFilterOrdinal uint64
+pkg syscall/zx/hardware/ethernet, const DeviceDumpRegistersOrdinal = 4875422596427420276
+pkg syscall/zx/hardware/ethernet, const DeviceDumpRegistersOrdinal uint64
+pkg syscall/zx/hardware/ethernet, const DeviceGetFifosOrdinal = 6310191874621580128
+pkg syscall/zx/hardware/ethernet, const DeviceGetFifosOrdinal uint64
+pkg syscall/zx/hardware/ethernet, const DeviceGetInfoOrdinal = 9191453823555626018
+pkg syscall/zx/hardware/ethernet, const DeviceGetInfoOrdinal uint64
+pkg syscall/zx/hardware/ethernet, const DeviceGetStatusOrdinal = 4006619088237154624
+pkg syscall/zx/hardware/ethernet, const DeviceGetStatusOrdinal uint64
+pkg syscall/zx/hardware/ethernet, const DeviceListenStartOrdinal = 180809355703175517
+pkg syscall/zx/hardware/ethernet, const DeviceListenStartOrdinal uint64
+pkg syscall/zx/hardware/ethernet, const DeviceListenStopOrdinal = 1165516780639240250
+pkg syscall/zx/hardware/ethernet, const DeviceListenStopOrdinal uint64
+pkg syscall/zx/hardware/ethernet, const DeviceSetClientNameOrdinal = 1594957020784730113
+pkg syscall/zx/hardware/ethernet, const DeviceSetClientNameOrdinal uint64
+pkg syscall/zx/hardware/ethernet, const DeviceSetIoBufferOrdinal = 7399144008073018792
+pkg syscall/zx/hardware/ethernet, const DeviceSetIoBufferOrdinal uint64
+pkg syscall/zx/hardware/ethernet, const DeviceSetPromiscuousModeOrdinal = 7703939675883370821
+pkg syscall/zx/hardware/ethernet, const DeviceSetPromiscuousModeOrdinal uint64
+pkg syscall/zx/hardware/ethernet, const DeviceStartOrdinal = 7951590831807512117
+pkg syscall/zx/hardware/ethernet, const DeviceStartOrdinal uint64
+pkg syscall/zx/hardware/ethernet, const DeviceStatusOnline = 1
+pkg syscall/zx/hardware/ethernet, const DeviceStatusOnline DeviceStatus
+pkg syscall/zx/hardware/ethernet, const DeviceStatus_Mask = 1
+pkg syscall/zx/hardware/ethernet, const DeviceStatus_Mask DeviceStatus
+pkg syscall/zx/hardware/ethernet, const DeviceStopOrdinal = 5470300822424641531
+pkg syscall/zx/hardware/ethernet, const DeviceStopOrdinal uint64
+pkg syscall/zx/hardware/ethernet, const FeaturesLoopback = 4
+pkg syscall/zx/hardware/ethernet, const FeaturesLoopback Features
+pkg syscall/zx/hardware/ethernet, const FeaturesSynthetic = 2
+pkg syscall/zx/hardware/ethernet, const FeaturesSynthetic Features
+pkg syscall/zx/hardware/ethernet, const FeaturesWlan = 1
+pkg syscall/zx/hardware/ethernet, const FeaturesWlan Features
+pkg syscall/zx/hardware/ethernet, const Features_Mask = 7
+pkg syscall/zx/hardware/ethernet, const Features_Mask Features
+pkg syscall/zx/hardware/ethernet, const MaxClientNameLen = 15
+pkg syscall/zx/hardware/ethernet, const MaxClientNameLen uint32
+pkg syscall/zx/hardware/ethernet, const SetClientNameMaxLen = 16
+pkg syscall/zx/hardware/ethernet, const SetClientNameMaxLen uint32
+pkg syscall/zx/hardware/ethernet, const SignalStatus = 16777216
+pkg syscall/zx/hardware/ethernet, const SignalStatus uint32
+pkg syscall/zx/hardware/ethernet, func NewDeviceWithCtxInterfaceRequest() (DeviceWithCtxInterfaceRequest, *DeviceWithCtxInterface, error)
+pkg syscall/zx/hardware/ethernet, method (*DeviceEventProxy) Handle() *zx.Handle
+pkg syscall/zx/hardware/ethernet, method (*DeviceWithCtxInterface) ConfigMulticastAddMac(context.Context, MacAddress) (int32, error)
+pkg syscall/zx/hardware/ethernet, method (*DeviceWithCtxInterface) ConfigMulticastDeleteMac(context.Context, MacAddress) (int32, error)
+pkg syscall/zx/hardware/ethernet, method (*DeviceWithCtxInterface) ConfigMulticastSetPromiscuousMode(context.Context, bool) (int32, error)
+pkg syscall/zx/hardware/ethernet, method (*DeviceWithCtxInterface) ConfigMulticastTestFilter(context.Context) (int32, error)
+pkg syscall/zx/hardware/ethernet, method (*DeviceWithCtxInterface) DumpRegisters(context.Context) (int32, error)
+pkg syscall/zx/hardware/ethernet, method (*DeviceWithCtxInterface) GetFifos(context.Context) (int32, *Fifos, error)
+pkg syscall/zx/hardware/ethernet, method (*DeviceWithCtxInterface) GetInfo(context.Context) (Info, error)
+pkg syscall/zx/hardware/ethernet, method (*DeviceWithCtxInterface) GetStatus(context.Context) (DeviceStatus, error)
+pkg syscall/zx/hardware/ethernet, method (*DeviceWithCtxInterface) Handle() *zx.Handle
+pkg syscall/zx/hardware/ethernet, method (*DeviceWithCtxInterface) ListenStart(context.Context) (int32, error)
+pkg syscall/zx/hardware/ethernet, method (*DeviceWithCtxInterface) ListenStop(context.Context) error
+pkg syscall/zx/hardware/ethernet, method (*DeviceWithCtxInterface) SetClientName(context.Context, string) (int32, error)
+pkg syscall/zx/hardware/ethernet, method (*DeviceWithCtxInterface) SetIoBuffer(context.Context, zx.VMO) (int32, error)
+pkg syscall/zx/hardware/ethernet, method (*DeviceWithCtxInterface) SetPromiscuousMode(context.Context, bool) (int32, error)
+pkg syscall/zx/hardware/ethernet, method (*DeviceWithCtxInterface) Start(context.Context) (int32, error)
+pkg syscall/zx/hardware/ethernet, method (*DeviceWithCtxInterface) Stop(context.Context) error
+pkg syscall/zx/hardware/ethernet, method (*DeviceWithCtxInterfaceRequest) Handle() *zx.Handle
+pkg syscall/zx/hardware/ethernet, method (*DeviceWithCtxStub) Dispatch(fidl.DispatchArgs) (fidl.Message, bool, error)
+pkg syscall/zx/hardware/ethernet, method (*Fifos) Marshaler() fidl.Marshaler
+pkg syscall/zx/hardware/ethernet, method (*Info) Marshaler() fidl.Marshaler
+pkg syscall/zx/hardware/ethernet, method (*MacAddress) Marshaler() fidl.Marshaler
+pkg syscall/zx/hardware/ethernet, method (DeviceStatus) ClearBits(DeviceStatus) DeviceStatus
+pkg syscall/zx/hardware/ethernet, method (DeviceStatus) GetUnknownBits() uint64
+pkg syscall/zx/hardware/ethernet, method (DeviceStatus) HasBits(DeviceStatus) bool
+pkg syscall/zx/hardware/ethernet, method (DeviceStatus) HasUnknownBits() bool
+pkg syscall/zx/hardware/ethernet, method (DeviceStatus) I_BitsIsStrict() bool
+pkg syscall/zx/hardware/ethernet, method (DeviceStatus) I_BitsMask() DeviceStatus
+pkg syscall/zx/hardware/ethernet, method (DeviceStatus) InvertBits() DeviceStatus
+pkg syscall/zx/hardware/ethernet, method (DeviceStatus) String() string
+pkg syscall/zx/hardware/ethernet, method (Features) ClearBits(Features) Features
+pkg syscall/zx/hardware/ethernet, method (Features) GetUnknownBits() uint64
+pkg syscall/zx/hardware/ethernet, method (Features) HasBits(Features) bool
+pkg syscall/zx/hardware/ethernet, method (Features) HasUnknownBits() bool
+pkg syscall/zx/hardware/ethernet, method (Features) I_BitsIsStrict() bool
+pkg syscall/zx/hardware/ethernet, method (Features) I_BitsMask() Features
+pkg syscall/zx/hardware/ethernet, method (Features) InvertBits() Features
+pkg syscall/zx/hardware/ethernet, method (Features) String() string
+pkg syscall/zx/hardware/ethernet, type DeviceEventProxy struct
+pkg syscall/zx/hardware/ethernet, type DeviceEventProxy struct, embedded zx.Channel
+pkg syscall/zx/hardware/ethernet, type DeviceStatus uint32
+pkg syscall/zx/hardware/ethernet, type DeviceWithCtx interface { ConfigMulticastAddMac, ConfigMulticastDeleteMac, ConfigMulticastSetPromiscuousMode, ConfigMulticastTestFilter, DumpRegisters, GetFifos, GetInfo, GetStatus, ListenStart, ListenStop, SetClientName, SetIoBuffer, SetPromiscuousMode, Start, Stop }
+pkg syscall/zx/hardware/ethernet, type DeviceWithCtx interface, ConfigMulticastAddMac(context.Context, MacAddress) (int32, error)
+pkg syscall/zx/hardware/ethernet, type DeviceWithCtx interface, ConfigMulticastDeleteMac(context.Context, MacAddress) (int32, error)
+pkg syscall/zx/hardware/ethernet, type DeviceWithCtx interface, ConfigMulticastSetPromiscuousMode(context.Context, bool) (int32, error)
+pkg syscall/zx/hardware/ethernet, type DeviceWithCtx interface, ConfigMulticastTestFilter(context.Context) (int32, error)
+pkg syscall/zx/hardware/ethernet, type DeviceWithCtx interface, DumpRegisters(context.Context) (int32, error)
+pkg syscall/zx/hardware/ethernet, type DeviceWithCtx interface, GetFifos(context.Context) (int32, *Fifos, error)
+pkg syscall/zx/hardware/ethernet, type DeviceWithCtx interface, GetInfo(context.Context) (Info, error)
+pkg syscall/zx/hardware/ethernet, type DeviceWithCtx interface, GetStatus(context.Context) (DeviceStatus, error)
+pkg syscall/zx/hardware/ethernet, type DeviceWithCtx interface, ListenStart(context.Context) (int32, error)
+pkg syscall/zx/hardware/ethernet, type DeviceWithCtx interface, ListenStop(context.Context) error
+pkg syscall/zx/hardware/ethernet, type DeviceWithCtx interface, SetClientName(context.Context, string) (int32, error)
+pkg syscall/zx/hardware/ethernet, type DeviceWithCtx interface, SetIoBuffer(context.Context, zx.VMO) (int32, error)
+pkg syscall/zx/hardware/ethernet, type DeviceWithCtx interface, SetPromiscuousMode(context.Context, bool) (int32, error)
+pkg syscall/zx/hardware/ethernet, type DeviceWithCtx interface, Start(context.Context) (int32, error)
+pkg syscall/zx/hardware/ethernet, type DeviceWithCtx interface, Stop(context.Context) error
+pkg syscall/zx/hardware/ethernet, type DeviceWithCtxInterface struct
+pkg syscall/zx/hardware/ethernet, type DeviceWithCtxInterface struct, embedded zx.Channel
+pkg syscall/zx/hardware/ethernet, type DeviceWithCtxInterfaceRequest struct
+pkg syscall/zx/hardware/ethernet, type DeviceWithCtxInterfaceRequest struct, embedded zx.Channel
+pkg syscall/zx/hardware/ethernet, type DeviceWithCtxStub struct
+pkg syscall/zx/hardware/ethernet, type DeviceWithCtxStub struct, Impl DeviceWithCtx
+pkg syscall/zx/hardware/ethernet, type DeviceWithCtxTransitionalBase struct
+pkg syscall/zx/hardware/ethernet, type Features uint32
+pkg syscall/zx/hardware/ethernet, type Fifos struct
+pkg syscall/zx/hardware/ethernet, type Fifos struct, Rx zx.Handle
+pkg syscall/zx/hardware/ethernet, type Fifos struct, RxDepth uint32
+pkg syscall/zx/hardware/ethernet, type Fifos struct, Tx zx.Handle
+pkg syscall/zx/hardware/ethernet, type Fifos struct, TxDepth uint32
+pkg syscall/zx/hardware/ethernet, type Info struct
+pkg syscall/zx/hardware/ethernet, type Info struct, Features Features
+pkg syscall/zx/hardware/ethernet, type Info struct, Mac MacAddress
+pkg syscall/zx/hardware/ethernet, type Info struct, Mtu uint32
+pkg syscall/zx/hardware/ethernet, type MacAddress struct
+pkg syscall/zx/hardware/ethernet, type MacAddress struct, Octets [6]uint8
+pkg syscall/zx/hardware/network, const DeviceClassBridge = 4
+pkg syscall/zx/hardware/network, const DeviceClassBridge DeviceClass
+pkg syscall/zx/hardware/network, const DeviceClassEthernet = 1
+pkg syscall/zx/hardware/network, const DeviceClassEthernet DeviceClass
+pkg syscall/zx/hardware/network, const DeviceClassPpp = 3
+pkg syscall/zx/hardware/network, const DeviceClassPpp DeviceClass
+pkg syscall/zx/hardware/network, const DeviceClassUnknown = 0
+pkg syscall/zx/hardware/network, const DeviceClassUnknown DeviceClass
+pkg syscall/zx/hardware/network, const DeviceClassWlan = 2
+pkg syscall/zx/hardware/network, const DeviceClassWlan DeviceClass
+pkg syscall/zx/hardware/network, const DeviceGetInfoOrdinal = 4345987561275952982
+pkg syscall/zx/hardware/network, const DeviceGetInfoOrdinal uint64
+pkg syscall/zx/hardware/network, const DeviceGetPortOrdinal = 3749956066270225062
+pkg syscall/zx/hardware/network, const DeviceGetPortOrdinal uint64
+pkg syscall/zx/hardware/network, const DeviceGetPortWatcherOrdinal = 1175232559270043404
+pkg syscall/zx/hardware/network, const DeviceGetPortWatcherOrdinal uint64
+pkg syscall/zx/hardware/network, const DeviceInstanceGetDeviceOrdinal = 8598058163296915191
+pkg syscall/zx/hardware/network, const DeviceInstanceGetDeviceOrdinal uint64
+pkg syscall/zx/hardware/network, const DeviceOpenSessionOrdinal = 2707801929272905575
+pkg syscall/zx/hardware/network, const DeviceOpenSessionOrdinal uint64
+pkg syscall/zx/hardware/network, const DeviceOpenSessionResultErr = 2
+pkg syscall/zx/hardware/network, const DeviceOpenSessionResultErr ideal-int
+pkg syscall/zx/hardware/network, const DeviceOpenSessionResultResponse = 1
+pkg syscall/zx/hardware/network, const DeviceOpenSessionResultResponse ideal-int
+pkg syscall/zx/hardware/network, const DevicePortEventAdded = 2
+pkg syscall/zx/hardware/network, const DevicePortEventAdded ideal-int
+pkg syscall/zx/hardware/network, const DevicePortEventExisting = 1
+pkg syscall/zx/hardware/network, const DevicePortEventExisting ideal-int
+pkg syscall/zx/hardware/network, const DevicePortEventIdle = 4
+pkg syscall/zx/hardware/network, const DevicePortEventIdle ideal-int
+pkg syscall/zx/hardware/network, const DevicePortEventRemoved = 3
+pkg syscall/zx/hardware/network, const DevicePortEventRemoved ideal-int
+pkg syscall/zx/hardware/network, const EthernetFeaturesE8021Q = 4
+pkg syscall/zx/hardware/network, const EthernetFeaturesE8021Q EthernetFeatures
+pkg syscall/zx/hardware/network, const EthernetFeaturesE8021QInQ = 8
+pkg syscall/zx/hardware/network, const EthernetFeaturesE8021QInQ EthernetFeatures
+pkg syscall/zx/hardware/network, const EthernetFeaturesE8023LlcSnap = 16
+pkg syscall/zx/hardware/network, const EthernetFeaturesE8023LlcSnap EthernetFeatures
+pkg syscall/zx/hardware/network, const EthernetFeaturesEthernetIi = 2
+pkg syscall/zx/hardware/network, const EthernetFeaturesEthernetIi EthernetFeatures
+pkg syscall/zx/hardware/network, const EthernetFeaturesRaw = 1
+pkg syscall/zx/hardware/network, const EthernetFeaturesRaw EthernetFeatures
+pkg syscall/zx/hardware/network, const EthernetFeatures_Mask = 31
+pkg syscall/zx/hardware/network, const EthernetFeatures_Mask EthernetFeatures
+pkg syscall/zx/hardware/network, const FrameFeaturesRaw = 1
+pkg syscall/zx/hardware/network, const FrameFeaturesRaw uint32
+pkg syscall/zx/hardware/network, const FrameTypeEthernet = 1
+pkg syscall/zx/hardware/network, const FrameTypeEthernet FrameType
+pkg syscall/zx/hardware/network, const FrameTypeIpv4 = 2
+pkg syscall/zx/hardware/network, const FrameTypeIpv4 FrameType
+pkg syscall/zx/hardware/network, const FrameTypeIpv6 = 3
+pkg syscall/zx/hardware/network, const FrameTypeIpv6 FrameType
+pkg syscall/zx/hardware/network, const InfoTypeNoInfo = 0
+pkg syscall/zx/hardware/network, const InfoTypeNoInfo InfoType
+pkg syscall/zx/hardware/network, const MacAddressingAddMulticastAddressOrdinal = 1105132327221005349
+pkg syscall/zx/hardware/network, const MacAddressingAddMulticastAddressOrdinal uint64
+pkg syscall/zx/hardware/network, const MacAddressingGetUnicastAddressOrdinal = 3197758227283422910
+pkg syscall/zx/hardware/network, const MacAddressingGetUnicastAddressOrdinal uint64
+pkg syscall/zx/hardware/network, const MacAddressingRemoveMulticastAddressOrdinal = 6763831474300790112
+pkg syscall/zx/hardware/network, const MacAddressingRemoveMulticastAddressOrdinal uint64
+pkg syscall/zx/hardware/network, const MacAddressingSetModeOrdinal = 444021886998005132
+pkg syscall/zx/hardware/network, const MacAddressingSetModeOrdinal uint64
+pkg syscall/zx/hardware/network, const MacFilterModeMulticastFilter = 0
+pkg syscall/zx/hardware/network, const MacFilterModeMulticastFilter MacFilterMode
+pkg syscall/zx/hardware/network, const MacFilterModeMulticastPromiscuous = 1
+pkg syscall/zx/hardware/network, const MacFilterModeMulticastPromiscuous MacFilterMode
+pkg syscall/zx/hardware/network, const MacFilterModePromiscuous = 2
+pkg syscall/zx/hardware/network, const MacFilterModePromiscuous MacFilterMode
+pkg syscall/zx/hardware/network, const MaxAccelFlags = 16
+pkg syscall/zx/hardware/network, const MaxAccelFlags uint32
+pkg syscall/zx/hardware/network, const MaxDescriptorChain = 4
+pkg syscall/zx/hardware/network, const MaxDescriptorChain uint8
+pkg syscall/zx/hardware/network, const MaxFrameTypes = 4
+pkg syscall/zx/hardware/network, const MaxFrameTypes uint32
+pkg syscall/zx/hardware/network, const MaxPorts = 32
+pkg syscall/zx/hardware/network, const MaxPorts uint8
+pkg syscall/zx/hardware/network, const MaxSessionName = 64
+pkg syscall/zx/hardware/network, const MaxSessionName uint32
+pkg syscall/zx/hardware/network, const MaxStatusBuffer = 50
+pkg syscall/zx/hardware/network, const MaxStatusBuffer uint32
+pkg syscall/zx/hardware/network, const PortGetInfoOrdinal = 2840916356794502845
+pkg syscall/zx/hardware/network, const PortGetInfoOrdinal uint64
+pkg syscall/zx/hardware/network, const PortGetMacOrdinal = 3201710345528787190
+pkg syscall/zx/hardware/network, const PortGetMacOrdinal uint64
+pkg syscall/zx/hardware/network, const PortGetStatusOrdinal = 4770830476791931058
+pkg syscall/zx/hardware/network, const PortGetStatusOrdinal uint64
+pkg syscall/zx/hardware/network, const PortGetStatusWatcherOrdinal = 7300645848992176340
+pkg syscall/zx/hardware/network, const PortGetStatusWatcherOrdinal uint64
+pkg syscall/zx/hardware/network, const PortWatcherWatchOrdinal = 4505609858711549278
+pkg syscall/zx/hardware/network, const PortWatcherWatchOrdinal uint64
+pkg syscall/zx/hardware/network, const RxAccelerationValidatedEthernetFcs = 0
+pkg syscall/zx/hardware/network, const RxAccelerationValidatedEthernetFcs RxAcceleration
+pkg syscall/zx/hardware/network, const RxAccelerationValidatedIpv4Checksum = 1
+pkg syscall/zx/hardware/network, const RxAccelerationValidatedIpv4Checksum RxAcceleration
+pkg syscall/zx/hardware/network, const RxAccelerationValidatedTcpChecksum = 2
+pkg syscall/zx/hardware/network, const RxAccelerationValidatedTcpChecksum RxAcceleration
+pkg syscall/zx/hardware/network, const RxAccelerationValidatedUdpChecksum = 3
+pkg syscall/zx/hardware/network, const RxAccelerationValidatedUdpChecksum RxAcceleration
+pkg syscall/zx/hardware/network, const RxFlagsRxAccel0 = 1
+pkg syscall/zx/hardware/network, const RxFlagsRxAccel0 RxFlags
+pkg syscall/zx/hardware/network, const RxFlagsRxAccel1 = 2
+pkg syscall/zx/hardware/network, const RxFlagsRxAccel1 RxFlags
+pkg syscall/zx/hardware/network, const RxFlagsRxAccel10 = 1024
+pkg syscall/zx/hardware/network, const RxFlagsRxAccel10 RxFlags
+pkg syscall/zx/hardware/network, const RxFlagsRxAccel11 = 2048
+pkg syscall/zx/hardware/network, const RxFlagsRxAccel11 RxFlags
+pkg syscall/zx/hardware/network, const RxFlagsRxAccel12 = 4096
+pkg syscall/zx/hardware/network, const RxFlagsRxAccel12 RxFlags
+pkg syscall/zx/hardware/network, const RxFlagsRxAccel13 = 8192
+pkg syscall/zx/hardware/network, const RxFlagsRxAccel13 RxFlags
+pkg syscall/zx/hardware/network, const RxFlagsRxAccel14 = 16384
+pkg syscall/zx/hardware/network, const RxFlagsRxAccel14 RxFlags
+pkg syscall/zx/hardware/network, const RxFlagsRxAccel15 = 32768
+pkg syscall/zx/hardware/network, const RxFlagsRxAccel15 RxFlags
+pkg syscall/zx/hardware/network, const RxFlagsRxAccel2 = 4
+pkg syscall/zx/hardware/network, const RxFlagsRxAccel2 RxFlags
+pkg syscall/zx/hardware/network, const RxFlagsRxAccel3 = 8
+pkg syscall/zx/hardware/network, const RxFlagsRxAccel3 RxFlags
+pkg syscall/zx/hardware/network, const RxFlagsRxAccel4 = 16
+pkg syscall/zx/hardware/network, const RxFlagsRxAccel4 RxFlags
+pkg syscall/zx/hardware/network, const RxFlagsRxAccel5 = 32
+pkg syscall/zx/hardware/network, const RxFlagsRxAccel5 RxFlags
+pkg syscall/zx/hardware/network, const RxFlagsRxAccel6 = 64
+pkg syscall/zx/hardware/network, const RxFlagsRxAccel6 RxFlags
+pkg syscall/zx/hardware/network, const RxFlagsRxAccel7 = 128
+pkg syscall/zx/hardware/network, const RxFlagsRxAccel7 RxFlags
+pkg syscall/zx/hardware/network, const RxFlagsRxAccel8 = 256
+pkg syscall/zx/hardware/network, const RxFlagsRxAccel8 RxFlags
+pkg syscall/zx/hardware/network, const RxFlagsRxAccel9 = 512
+pkg syscall/zx/hardware/network, const RxFlagsRxAccel9 RxFlags
+pkg syscall/zx/hardware/network, const RxFlagsRxEchoedTx = 2147483648
+pkg syscall/zx/hardware/network, const RxFlagsRxEchoedTx RxFlags
+pkg syscall/zx/hardware/network, const RxFlagsRxOverrun = 536870912
+pkg syscall/zx/hardware/network, const RxFlagsRxOverrun RxFlags
+pkg syscall/zx/hardware/network, const RxFlagsRxValidationError = 1073741824
+pkg syscall/zx/hardware/network, const RxFlagsRxValidationError RxFlags
+pkg syscall/zx/hardware/network, const RxFlags_Mask = 3758161919
+pkg syscall/zx/hardware/network, const RxFlags_Mask RxFlags
+pkg syscall/zx/hardware/network, const SessionAttachOrdinal = 2200510900121637753
+pkg syscall/zx/hardware/network, const SessionAttachOrdinal uint64
+pkg syscall/zx/hardware/network, const SessionAttachResultErr = 2
+pkg syscall/zx/hardware/network, const SessionAttachResultErr ideal-int
+pkg syscall/zx/hardware/network, const SessionAttachResultResponse = 1
+pkg syscall/zx/hardware/network, const SessionAttachResultResponse ideal-int
+pkg syscall/zx/hardware/network, const SessionCloseOrdinal = 4124541276668990198
+pkg syscall/zx/hardware/network, const SessionCloseOrdinal uint64
+pkg syscall/zx/hardware/network, const SessionDetachOrdinal = 7549173138887841895
+pkg syscall/zx/hardware/network, const SessionDetachOrdinal uint64
+pkg syscall/zx/hardware/network, const SessionDetachResultErr = 2
+pkg syscall/zx/hardware/network, const SessionDetachResultErr ideal-int
+pkg syscall/zx/hardware/network, const SessionDetachResultResponse = 1
+pkg syscall/zx/hardware/network, const SessionDetachResultResponse ideal-int
+pkg syscall/zx/hardware/network, const SessionFlagsListenTx = 2
+pkg syscall/zx/hardware/network, const SessionFlagsListenTx SessionFlags
+pkg syscall/zx/hardware/network, const SessionFlagsPrimary = 1
+pkg syscall/zx/hardware/network, const SessionFlagsPrimary SessionFlags
+pkg syscall/zx/hardware/network, const SessionFlagsReportInvalidRx = 4
+pkg syscall/zx/hardware/network, const SessionFlagsReportInvalidRx SessionFlags
+pkg syscall/zx/hardware/network, const SessionFlags_Mask = 7
+pkg syscall/zx/hardware/network, const SessionFlags_Mask SessionFlags
+pkg syscall/zx/hardware/network, const StatusFlagsOnline = 1
+pkg syscall/zx/hardware/network, const StatusFlagsOnline StatusFlags
+pkg syscall/zx/hardware/network, const StatusFlags_Mask = 1
+pkg syscall/zx/hardware/network, const StatusFlags_Mask StatusFlags
+pkg syscall/zx/hardware/network, const StatusWatcherWatchStatusOrdinal = 1398833956082180793
+pkg syscall/zx/hardware/network, const StatusWatcherWatchStatusOrdinal uint64
+pkg syscall/zx/hardware/network, const TxAccelerationComputeEthernetFcs = 0
+pkg syscall/zx/hardware/network, const TxAccelerationComputeEthernetFcs TxAcceleration
+pkg syscall/zx/hardware/network, const TxAccelerationComputeIpv4Checksum = 1
+pkg syscall/zx/hardware/network, const TxAccelerationComputeIpv4Checksum TxAcceleration
+pkg syscall/zx/hardware/network, const TxAccelerationComputeTcpChecksum = 2
+pkg syscall/zx/hardware/network, const TxAccelerationComputeTcpChecksum TxAcceleration
+pkg syscall/zx/hardware/network, const TxAccelerationComputeUdpChecksum = 3
+pkg syscall/zx/hardware/network, const TxAccelerationComputeUdpChecksum TxAcceleration
+pkg syscall/zx/hardware/network, const TxFlagsTxAccel0 = 1
+pkg syscall/zx/hardware/network, const TxFlagsTxAccel0 TxFlags
+pkg syscall/zx/hardware/network, const TxFlagsTxAccel1 = 2
+pkg syscall/zx/hardware/network, const TxFlagsTxAccel1 TxFlags
+pkg syscall/zx/hardware/network, const TxFlagsTxAccel10 = 1024
+pkg syscall/zx/hardware/network, const TxFlagsTxAccel10 TxFlags
+pkg syscall/zx/hardware/network, const TxFlagsTxAccel11 = 2048
+pkg syscall/zx/hardware/network, const TxFlagsTxAccel11 TxFlags
+pkg syscall/zx/hardware/network, const TxFlagsTxAccel12 = 4096
+pkg syscall/zx/hardware/network, const TxFlagsTxAccel12 TxFlags
+pkg syscall/zx/hardware/network, const TxFlagsTxAccel13 = 8192
+pkg syscall/zx/hardware/network, const TxFlagsTxAccel13 TxFlags
+pkg syscall/zx/hardware/network, const TxFlagsTxAccel14 = 16384
+pkg syscall/zx/hardware/network, const TxFlagsTxAccel14 TxFlags
+pkg syscall/zx/hardware/network, const TxFlagsTxAccel15 = 32768
+pkg syscall/zx/hardware/network, const TxFlagsTxAccel15 TxFlags
+pkg syscall/zx/hardware/network, const TxFlagsTxAccel2 = 4
+pkg syscall/zx/hardware/network, const TxFlagsTxAccel2 TxFlags
+pkg syscall/zx/hardware/network, const TxFlagsTxAccel3 = 8
+pkg syscall/zx/hardware/network, const TxFlagsTxAccel3 TxFlags
+pkg syscall/zx/hardware/network, const TxFlagsTxAccel4 = 16
+pkg syscall/zx/hardware/network, const TxFlagsTxAccel4 TxFlags
+pkg syscall/zx/hardware/network, const TxFlagsTxAccel5 = 32
+pkg syscall/zx/hardware/network, const TxFlagsTxAccel5 TxFlags
+pkg syscall/zx/hardware/network, const TxFlagsTxAccel6 = 64
+pkg syscall/zx/hardware/network, const TxFlagsTxAccel6 TxFlags
+pkg syscall/zx/hardware/network, const TxFlagsTxAccel7 = 128
+pkg syscall/zx/hardware/network, const TxFlagsTxAccel7 TxFlags
+pkg syscall/zx/hardware/network, const TxFlagsTxAccel8 = 256
+pkg syscall/zx/hardware/network, const TxFlagsTxAccel8 TxFlags
+pkg syscall/zx/hardware/network, const TxFlagsTxAccel9 = 512
+pkg syscall/zx/hardware/network, const TxFlagsTxAccel9 TxFlags
+pkg syscall/zx/hardware/network, const TxFlags_Mask = 65535
+pkg syscall/zx/hardware/network, const TxFlags_Mask TxFlags
+pkg syscall/zx/hardware/network, const TxReturnFlagsTxRetError = 2147483648
+pkg syscall/zx/hardware/network, const TxReturnFlagsTxRetError TxReturnFlags
+pkg syscall/zx/hardware/network, const TxReturnFlagsTxRetNotAvailable = 4
+pkg syscall/zx/hardware/network, const TxReturnFlagsTxRetNotAvailable TxReturnFlags
+pkg syscall/zx/hardware/network, const TxReturnFlagsTxRetNotSupported = 1
+pkg syscall/zx/hardware/network, const TxReturnFlagsTxRetNotSupported TxReturnFlags
+pkg syscall/zx/hardware/network, const TxReturnFlagsTxRetOutOfResources = 2
+pkg syscall/zx/hardware/network, const TxReturnFlagsTxRetOutOfResources TxReturnFlags
+pkg syscall/zx/hardware/network, const TxReturnFlags_Mask = 2147483655
+pkg syscall/zx/hardware/network, const TxReturnFlags_Mask TxReturnFlags
+pkg syscall/zx/hardware/network, func DeviceOpenSessionResultWithErr(int32) DeviceOpenSessionResult
+pkg syscall/zx/hardware/network, func DeviceOpenSessionResultWithResponse(DeviceOpenSessionResponse) DeviceOpenSessionResult
+pkg syscall/zx/hardware/network, func DevicePortEventWithAdded(uint8) DevicePortEvent
+pkg syscall/zx/hardware/network, func DevicePortEventWithExisting(uint8) DevicePortEvent
+pkg syscall/zx/hardware/network, func DevicePortEventWithIdle(Empty) DevicePortEvent
+pkg syscall/zx/hardware/network, func DevicePortEventWithRemoved(uint8) DevicePortEvent
+pkg syscall/zx/hardware/network, func NewDeviceInstanceWithCtxInterfaceRequest() (DeviceInstanceWithCtxInterfaceRequest, *DeviceInstanceWithCtxInterface, error)
+pkg syscall/zx/hardware/network, func NewDeviceWithCtxInterfaceRequest() (DeviceWithCtxInterfaceRequest, *DeviceWithCtxInterface, error)
+pkg syscall/zx/hardware/network, func NewMacAddressingWithCtxInterfaceRequest() (MacAddressingWithCtxInterfaceRequest, *MacAddressingWithCtxInterface, error)
+pkg syscall/zx/hardware/network, func NewPortWatcherWithCtxInterfaceRequest() (PortWatcherWithCtxInterfaceRequest, *PortWatcherWithCtxInterface, error)
+pkg syscall/zx/hardware/network, func NewPortWithCtxInterfaceRequest() (PortWithCtxInterfaceRequest, *PortWithCtxInterface, error)
+pkg syscall/zx/hardware/network, func NewSessionWithCtxInterfaceRequest() (SessionWithCtxInterfaceRequest, *SessionWithCtxInterface, error)
+pkg syscall/zx/hardware/network, func NewStatusWatcherWithCtxInterfaceRequest() (StatusWatcherWithCtxInterfaceRequest, *StatusWatcherWithCtxInterface, error)
+pkg syscall/zx/hardware/network, func SessionAttachResultWithErr(int32) SessionAttachResult
+pkg syscall/zx/hardware/network, func SessionAttachResultWithResponse(SessionAttachResponse) SessionAttachResult
+pkg syscall/zx/hardware/network, func SessionDetachResultWithErr(int32) SessionDetachResult
+pkg syscall/zx/hardware/network, func SessionDetachResultWithResponse(SessionDetachResponse) SessionDetachResult
+pkg syscall/zx/hardware/network, method (*DeviceEventProxy) Handle() *zx.Handle
+pkg syscall/zx/hardware/network, method (*DeviceInfo) ClearBufferAlignment()
+pkg syscall/zx/hardware/network, method (*DeviceInfo) ClearDescriptorVersion()
+pkg syscall/zx/hardware/network, method (*DeviceInfo) ClearMaxBufferLength()
+pkg syscall/zx/hardware/network, method (*DeviceInfo) ClearMaxBufferParts()
+pkg syscall/zx/hardware/network, method (*DeviceInfo) ClearMinDescriptorLength()
+pkg syscall/zx/hardware/network, method (*DeviceInfo) ClearMinRxBufferLength()
+pkg syscall/zx/hardware/network, method (*DeviceInfo) ClearMinTxBufferHead()
+pkg syscall/zx/hardware/network, method (*DeviceInfo) ClearMinTxBufferLength()
+pkg syscall/zx/hardware/network, method (*DeviceInfo) ClearMinTxBufferTail()
+pkg syscall/zx/hardware/network, method (*DeviceInfo) ClearRxAccel()
+pkg syscall/zx/hardware/network, method (*DeviceInfo) ClearRxDepth()
+pkg syscall/zx/hardware/network, method (*DeviceInfo) ClearTxAccel()
+pkg syscall/zx/hardware/network, method (*DeviceInfo) ClearTxDepth()
+pkg syscall/zx/hardware/network, method (*DeviceInfo) GetBufferAlignment() uint32
+pkg syscall/zx/hardware/network, method (*DeviceInfo) GetBufferAlignmentWithDefault(uint32) uint32
+pkg syscall/zx/hardware/network, method (*DeviceInfo) GetDescriptorVersion() uint8
+pkg syscall/zx/hardware/network, method (*DeviceInfo) GetDescriptorVersionWithDefault(uint8) uint8
+pkg syscall/zx/hardware/network, method (*DeviceInfo) GetMaxBufferLength() uint32
+pkg syscall/zx/hardware/network, method (*DeviceInfo) GetMaxBufferLengthWithDefault(uint32) uint32
+pkg syscall/zx/hardware/network, method (*DeviceInfo) GetMaxBufferParts() uint8
+pkg syscall/zx/hardware/network, method (*DeviceInfo) GetMaxBufferPartsWithDefault(uint8) uint8
+pkg syscall/zx/hardware/network, method (*DeviceInfo) GetMinDescriptorLength() uint8
+pkg syscall/zx/hardware/network, method (*DeviceInfo) GetMinDescriptorLengthWithDefault(uint8) uint8
+pkg syscall/zx/hardware/network, method (*DeviceInfo) GetMinRxBufferLength() uint32
+pkg syscall/zx/hardware/network, method (*DeviceInfo) GetMinRxBufferLengthWithDefault(uint32) uint32
+pkg syscall/zx/hardware/network, method (*DeviceInfo) GetMinTxBufferHead() uint16
+pkg syscall/zx/hardware/network, method (*DeviceInfo) GetMinTxBufferHeadWithDefault(uint16) uint16
+pkg syscall/zx/hardware/network, method (*DeviceInfo) GetMinTxBufferLength() uint32
+pkg syscall/zx/hardware/network, method (*DeviceInfo) GetMinTxBufferLengthWithDefault(uint32) uint32
+pkg syscall/zx/hardware/network, method (*DeviceInfo) GetMinTxBufferTail() uint16
+pkg syscall/zx/hardware/network, method (*DeviceInfo) GetMinTxBufferTailWithDefault(uint16) uint16
+pkg syscall/zx/hardware/network, method (*DeviceInfo) GetRxAccel() []RxAcceleration
+pkg syscall/zx/hardware/network, method (*DeviceInfo) GetRxAccelWithDefault([]RxAcceleration) []RxAcceleration
+pkg syscall/zx/hardware/network, method (*DeviceInfo) GetRxDepth() uint16
+pkg syscall/zx/hardware/network, method (*DeviceInfo) GetRxDepthWithDefault(uint16) uint16
+pkg syscall/zx/hardware/network, method (*DeviceInfo) GetTxAccel() []TxAcceleration
+pkg syscall/zx/hardware/network, method (*DeviceInfo) GetTxAccelWithDefault([]TxAcceleration) []TxAcceleration
+pkg syscall/zx/hardware/network, method (*DeviceInfo) GetTxDepth() uint16
+pkg syscall/zx/hardware/network, method (*DeviceInfo) GetTxDepthWithDefault(uint16) uint16
+pkg syscall/zx/hardware/network, method (*DeviceInfo) GetUnknownData() map[uint64]fidl.UnknownData
+pkg syscall/zx/hardware/network, method (*DeviceInfo) HasBufferAlignment() bool
+pkg syscall/zx/hardware/network, method (*DeviceInfo) HasDescriptorVersion() bool
+pkg syscall/zx/hardware/network, method (*DeviceInfo) HasMaxBufferLength() bool
+pkg syscall/zx/hardware/network, method (*DeviceInfo) HasMaxBufferParts() bool
+pkg syscall/zx/hardware/network, method (*DeviceInfo) HasMinDescriptorLength() bool
+pkg syscall/zx/hardware/network, method (*DeviceInfo) HasMinRxBufferLength() bool
+pkg syscall/zx/hardware/network, method (*DeviceInfo) HasMinTxBufferHead() bool
+pkg syscall/zx/hardware/network, method (*DeviceInfo) HasMinTxBufferLength() bool
+pkg syscall/zx/hardware/network, method (*DeviceInfo) HasMinTxBufferTail() bool
+pkg syscall/zx/hardware/network, method (*DeviceInfo) HasRxAccel() bool
+pkg syscall/zx/hardware/network, method (*DeviceInfo) HasRxDepth() bool
+pkg syscall/zx/hardware/network, method (*DeviceInfo) HasTxAccel() bool
+pkg syscall/zx/hardware/network, method (*DeviceInfo) HasTxDepth() bool
+pkg syscall/zx/hardware/network, method (*DeviceInfo) HasUnknownData() bool
+pkg syscall/zx/hardware/network, method (*DeviceInfo) SetBufferAlignment(uint32)
+pkg syscall/zx/hardware/network, method (*DeviceInfo) SetDescriptorVersion(uint8)
+pkg syscall/zx/hardware/network, method (*DeviceInfo) SetMaxBufferLength(uint32)
+pkg syscall/zx/hardware/network, method (*DeviceInfo) SetMaxBufferParts(uint8)
+pkg syscall/zx/hardware/network, method (*DeviceInfo) SetMinDescriptorLength(uint8)
+pkg syscall/zx/hardware/network, method (*DeviceInfo) SetMinRxBufferLength(uint32)
+pkg syscall/zx/hardware/network, method (*DeviceInfo) SetMinTxBufferHead(uint16)
+pkg syscall/zx/hardware/network, method (*DeviceInfo) SetMinTxBufferLength(uint32)
+pkg syscall/zx/hardware/network, method (*DeviceInfo) SetMinTxBufferTail(uint16)
+pkg syscall/zx/hardware/network, method (*DeviceInfo) SetRxAccel([]RxAcceleration)
+pkg syscall/zx/hardware/network, method (*DeviceInfo) SetRxDepth(uint16)
+pkg syscall/zx/hardware/network, method (*DeviceInfo) SetTxAccel([]TxAcceleration)
+pkg syscall/zx/hardware/network, method (*DeviceInfo) SetTxDepth(uint16)
+pkg syscall/zx/hardware/network, method (*DeviceInstanceEventProxy) Handle() *zx.Handle
+pkg syscall/zx/hardware/network, method (*DeviceInstanceWithCtxInterface) GetDevice(context.Context, DeviceWithCtxInterfaceRequest) error
+pkg syscall/zx/hardware/network, method (*DeviceInstanceWithCtxInterface) Handle() *zx.Handle
+pkg syscall/zx/hardware/network, method (*DeviceInstanceWithCtxInterfaceRequest) Handle() *zx.Handle
+pkg syscall/zx/hardware/network, method (*DeviceInstanceWithCtxStub) Dispatch(fidl.DispatchArgs) (fidl.Message, bool, error)
+pkg syscall/zx/hardware/network, method (*DeviceOpenSessionResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/hardware/network, method (*DeviceOpenSessionResult) Ordinal() uint64
+pkg syscall/zx/hardware/network, method (*DeviceOpenSessionResult) SetErr(int32)
+pkg syscall/zx/hardware/network, method (*DeviceOpenSessionResult) SetResponse(DeviceOpenSessionResponse)
+pkg syscall/zx/hardware/network, method (*DeviceOpenSessionResult) Which() I_deviceOpenSessionResultTag
+pkg syscall/zx/hardware/network, method (*DevicePortEvent) Ordinal() uint64
+pkg syscall/zx/hardware/network, method (*DevicePortEvent) SetAdded(uint8)
+pkg syscall/zx/hardware/network, method (*DevicePortEvent) SetExisting(uint8)
+pkg syscall/zx/hardware/network, method (*DevicePortEvent) SetIdle(Empty)
+pkg syscall/zx/hardware/network, method (*DevicePortEvent) SetRemoved(uint8)
+pkg syscall/zx/hardware/network, method (*DevicePortEvent) Which() I_devicePortEventTag
+pkg syscall/zx/hardware/network, method (*DeviceWithCtxInterface) GetInfo(context.Context) (DeviceInfo, error)
+pkg syscall/zx/hardware/network, method (*DeviceWithCtxInterface) GetPort(context.Context, uint8, PortWithCtxInterfaceRequest) error
+pkg syscall/zx/hardware/network, method (*DeviceWithCtxInterface) GetPortWatcher(context.Context, PortWatcherWithCtxInterfaceRequest) error
+pkg syscall/zx/hardware/network, method (*DeviceWithCtxInterface) Handle() *zx.Handle
+pkg syscall/zx/hardware/network, method (*DeviceWithCtxInterface) OpenSession(context.Context, string, SessionInfo) (DeviceOpenSessionResult, error)
+pkg syscall/zx/hardware/network, method (*DeviceWithCtxInterfaceRequest) Handle() *zx.Handle
+pkg syscall/zx/hardware/network, method (*DeviceWithCtxStub) Dispatch(fidl.DispatchArgs) (fidl.Message, bool, error)
+pkg syscall/zx/hardware/network, method (*Empty) Marshaler() fidl.Marshaler
+pkg syscall/zx/hardware/network, method (*Fifos) Marshaler() fidl.Marshaler
+pkg syscall/zx/hardware/network, method (*FrameTypeSupport) Marshaler() fidl.Marshaler
+pkg syscall/zx/hardware/network, method (*MacAddressingEventProxy) Handle() *zx.Handle
+pkg syscall/zx/hardware/network, method (*MacAddressingWithCtxInterface) AddMulticastAddress(context.Context, net.MacAddress) (int32, error)
+pkg syscall/zx/hardware/network, method (*MacAddressingWithCtxInterface) GetUnicastAddress(context.Context) (net.MacAddress, error)
+pkg syscall/zx/hardware/network, method (*MacAddressingWithCtxInterface) Handle() *zx.Handle
+pkg syscall/zx/hardware/network, method (*MacAddressingWithCtxInterface) RemoveMulticastAddress(context.Context, net.MacAddress) (int32, error)
+pkg syscall/zx/hardware/network, method (*MacAddressingWithCtxInterface) SetMode(context.Context, MacFilterMode) (int32, error)
+pkg syscall/zx/hardware/network, method (*MacAddressingWithCtxInterfaceRequest) Handle() *zx.Handle
+pkg syscall/zx/hardware/network, method (*MacAddressingWithCtxStub) Dispatch(fidl.DispatchArgs) (fidl.Message, bool, error)
+pkg syscall/zx/hardware/network, method (*PortEventProxy) Handle() *zx.Handle
+pkg syscall/zx/hardware/network, method (*PortInfo) ClearClass()
+pkg syscall/zx/hardware/network, method (*PortInfo) ClearId()
+pkg syscall/zx/hardware/network, method (*PortInfo) ClearRxTypes()
+pkg syscall/zx/hardware/network, method (*PortInfo) ClearTxTypes()
+pkg syscall/zx/hardware/network, method (*PortInfo) GetClass() DeviceClass
+pkg syscall/zx/hardware/network, method (*PortInfo) GetClassWithDefault(DeviceClass) DeviceClass
+pkg syscall/zx/hardware/network, method (*PortInfo) GetId() uint8
+pkg syscall/zx/hardware/network, method (*PortInfo) GetIdWithDefault(uint8) uint8
+pkg syscall/zx/hardware/network, method (*PortInfo) GetRxTypes() []FrameType
+pkg syscall/zx/hardware/network, method (*PortInfo) GetRxTypesWithDefault([]FrameType) []FrameType
+pkg syscall/zx/hardware/network, method (*PortInfo) GetTxTypes() []FrameTypeSupport
+pkg syscall/zx/hardware/network, method (*PortInfo) GetTxTypesWithDefault([]FrameTypeSupport) []FrameTypeSupport
+pkg syscall/zx/hardware/network, method (*PortInfo) GetUnknownData() map[uint64]fidl.UnknownData
+pkg syscall/zx/hardware/network, method (*PortInfo) HasClass() bool
+pkg syscall/zx/hardware/network, method (*PortInfo) HasId() bool
+pkg syscall/zx/hardware/network, method (*PortInfo) HasRxTypes() bool
+pkg syscall/zx/hardware/network, method (*PortInfo) HasTxTypes() bool
+pkg syscall/zx/hardware/network, method (*PortInfo) HasUnknownData() bool
+pkg syscall/zx/hardware/network, method (*PortInfo) SetClass(DeviceClass)
+pkg syscall/zx/hardware/network, method (*PortInfo) SetId(uint8)
+pkg syscall/zx/hardware/network, method (*PortInfo) SetRxTypes([]FrameType)
+pkg syscall/zx/hardware/network, method (*PortInfo) SetTxTypes([]FrameTypeSupport)
+pkg syscall/zx/hardware/network, method (*PortStatus) ClearFlags()
+pkg syscall/zx/hardware/network, method (*PortStatus) ClearMtu()
+pkg syscall/zx/hardware/network, method (*PortStatus) GetFlags() StatusFlags
+pkg syscall/zx/hardware/network, method (*PortStatus) GetFlagsWithDefault(StatusFlags) StatusFlags
+pkg syscall/zx/hardware/network, method (*PortStatus) GetMtu() uint32
+pkg syscall/zx/hardware/network, method (*PortStatus) GetMtuWithDefault(uint32) uint32
+pkg syscall/zx/hardware/network, method (*PortStatus) GetUnknownData() map[uint64]fidl.UnknownData
+pkg syscall/zx/hardware/network, method (*PortStatus) HasFlags() bool
+pkg syscall/zx/hardware/network, method (*PortStatus) HasMtu() bool
+pkg syscall/zx/hardware/network, method (*PortStatus) HasUnknownData() bool
+pkg syscall/zx/hardware/network, method (*PortStatus) SetFlags(StatusFlags)
+pkg syscall/zx/hardware/network, method (*PortStatus) SetMtu(uint32)
+pkg syscall/zx/hardware/network, method (*PortWatcherEventProxy) Handle() *zx.Handle
+pkg syscall/zx/hardware/network, method (*PortWatcherWithCtxInterface) Handle() *zx.Handle
+pkg syscall/zx/hardware/network, method (*PortWatcherWithCtxInterface) Watch(context.Context) (DevicePortEvent, error)
+pkg syscall/zx/hardware/network, method (*PortWatcherWithCtxInterfaceRequest) Handle() *zx.Handle
+pkg syscall/zx/hardware/network, method (*PortWatcherWithCtxStub) Dispatch(fidl.DispatchArgs) (fidl.Message, bool, error)
+pkg syscall/zx/hardware/network, method (*PortWithCtxInterface) GetInfo(context.Context) (PortInfo, error)
+pkg syscall/zx/hardware/network, method (*PortWithCtxInterface) GetMac(context.Context, MacAddressingWithCtxInterfaceRequest) error
+pkg syscall/zx/hardware/network, method (*PortWithCtxInterface) GetStatus(context.Context) (PortStatus, error)
+pkg syscall/zx/hardware/network, method (*PortWithCtxInterface) GetStatusWatcher(context.Context, StatusWatcherWithCtxInterfaceRequest, uint32) error
+pkg syscall/zx/hardware/network, method (*PortWithCtxInterface) Handle() *zx.Handle
+pkg syscall/zx/hardware/network, method (*PortWithCtxInterfaceRequest) Handle() *zx.Handle
+pkg syscall/zx/hardware/network, method (*PortWithCtxStub) Dispatch(fidl.DispatchArgs) (fidl.Message, bool, error)
+pkg syscall/zx/hardware/network, method (*SessionAttachResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/hardware/network, method (*SessionAttachResult) Ordinal() uint64
+pkg syscall/zx/hardware/network, method (*SessionAttachResult) SetErr(int32)
+pkg syscall/zx/hardware/network, method (*SessionAttachResult) SetResponse(SessionAttachResponse)
+pkg syscall/zx/hardware/network, method (*SessionAttachResult) Which() I_sessionAttachResultTag
+pkg syscall/zx/hardware/network, method (*SessionDetachResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/hardware/network, method (*SessionDetachResult) Ordinal() uint64
+pkg syscall/zx/hardware/network, method (*SessionDetachResult) SetErr(int32)
+pkg syscall/zx/hardware/network, method (*SessionDetachResult) SetResponse(SessionDetachResponse)
+pkg syscall/zx/hardware/network, method (*SessionDetachResult) Which() I_sessionDetachResultTag
+pkg syscall/zx/hardware/network, method (*SessionEventProxy) Handle() *zx.Handle
+pkg syscall/zx/hardware/network, method (*SessionInfo) ClearData()
+pkg syscall/zx/hardware/network, method (*SessionInfo) ClearDescriptorCount()
+pkg syscall/zx/hardware/network, method (*SessionInfo) ClearDescriptorLength()
+pkg syscall/zx/hardware/network, method (*SessionInfo) ClearDescriptorVersion()
+pkg syscall/zx/hardware/network, method (*SessionInfo) ClearDescriptors()
+pkg syscall/zx/hardware/network, method (*SessionInfo) ClearOptions()
+pkg syscall/zx/hardware/network, method (*SessionInfo) GetData() zx.VMO
+pkg syscall/zx/hardware/network, method (*SessionInfo) GetDataWithDefault(zx.VMO) zx.VMO
+pkg syscall/zx/hardware/network, method (*SessionInfo) GetDescriptorCount() uint16
+pkg syscall/zx/hardware/network, method (*SessionInfo) GetDescriptorCountWithDefault(uint16) uint16
+pkg syscall/zx/hardware/network, method (*SessionInfo) GetDescriptorLength() uint8
+pkg syscall/zx/hardware/network, method (*SessionInfo) GetDescriptorLengthWithDefault(uint8) uint8
+pkg syscall/zx/hardware/network, method (*SessionInfo) GetDescriptorVersion() uint8
+pkg syscall/zx/hardware/network, method (*SessionInfo) GetDescriptorVersionWithDefault(uint8) uint8
+pkg syscall/zx/hardware/network, method (*SessionInfo) GetDescriptors() zx.VMO
+pkg syscall/zx/hardware/network, method (*SessionInfo) GetDescriptorsWithDefault(zx.VMO) zx.VMO
+pkg syscall/zx/hardware/network, method (*SessionInfo) GetOptions() SessionFlags
+pkg syscall/zx/hardware/network, method (*SessionInfo) GetOptionsWithDefault(SessionFlags) SessionFlags
+pkg syscall/zx/hardware/network, method (*SessionInfo) GetUnknownData() map[uint64]fidl.UnknownData
+pkg syscall/zx/hardware/network, method (*SessionInfo) HasData() bool
+pkg syscall/zx/hardware/network, method (*SessionInfo) HasDescriptorCount() bool
+pkg syscall/zx/hardware/network, method (*SessionInfo) HasDescriptorLength() bool
+pkg syscall/zx/hardware/network, method (*SessionInfo) HasDescriptorVersion() bool
+pkg syscall/zx/hardware/network, method (*SessionInfo) HasDescriptors() bool
+pkg syscall/zx/hardware/network, method (*SessionInfo) HasOptions() bool
+pkg syscall/zx/hardware/network, method (*SessionInfo) HasUnknownData() bool
+pkg syscall/zx/hardware/network, method (*SessionInfo) SetData(zx.VMO)
+pkg syscall/zx/hardware/network, method (*SessionInfo) SetDescriptorCount(uint16)
+pkg syscall/zx/hardware/network, method (*SessionInfo) SetDescriptorLength(uint8)
+pkg syscall/zx/hardware/network, method (*SessionInfo) SetDescriptorVersion(uint8)
+pkg syscall/zx/hardware/network, method (*SessionInfo) SetDescriptors(zx.VMO)
+pkg syscall/zx/hardware/network, method (*SessionInfo) SetOptions(SessionFlags)
+pkg syscall/zx/hardware/network, method (*SessionWithCtxInterface) Attach(context.Context, uint8, []FrameType) (SessionAttachResult, error)
+pkg syscall/zx/hardware/network, method (*SessionWithCtxInterface) Close(context.Context) error
+pkg syscall/zx/hardware/network, method (*SessionWithCtxInterface) Detach(context.Context, uint8) (SessionDetachResult, error)
+pkg syscall/zx/hardware/network, method (*SessionWithCtxInterface) Handle() *zx.Handle
+pkg syscall/zx/hardware/network, method (*SessionWithCtxInterfaceRequest) Handle() *zx.Handle
+pkg syscall/zx/hardware/network, method (*SessionWithCtxStub) Dispatch(fidl.DispatchArgs) (fidl.Message, bool, error)
+pkg syscall/zx/hardware/network, method (*StatusWatcherEventProxy) Handle() *zx.Handle
+pkg syscall/zx/hardware/network, method (*StatusWatcherWithCtxInterface) Handle() *zx.Handle
+pkg syscall/zx/hardware/network, method (*StatusWatcherWithCtxInterface) WatchStatus(context.Context) (PortStatus, error)
+pkg syscall/zx/hardware/network, method (*StatusWatcherWithCtxInterfaceRequest) Handle() *zx.Handle
+pkg syscall/zx/hardware/network, method (*StatusWatcherWithCtxStub) Dispatch(fidl.DispatchArgs) (fidl.Message, bool, error)
+pkg syscall/zx/hardware/network, method (DeviceClass) I_EnumIsStrict() bool
+pkg syscall/zx/hardware/network, method (DeviceClass) I_EnumValues() []DeviceClass
+pkg syscall/zx/hardware/network, method (DeviceClass) IsUnknown() bool
+pkg syscall/zx/hardware/network, method (DeviceClass) String() string
+pkg syscall/zx/hardware/network, method (EthernetFeatures) ClearBits(EthernetFeatures) EthernetFeatures
+pkg syscall/zx/hardware/network, method (EthernetFeatures) GetUnknownBits() uint64
+pkg syscall/zx/hardware/network, method (EthernetFeatures) HasBits(EthernetFeatures) bool
+pkg syscall/zx/hardware/network, method (EthernetFeatures) HasUnknownBits() bool
+pkg syscall/zx/hardware/network, method (EthernetFeatures) I_BitsIsStrict() bool
+pkg syscall/zx/hardware/network, method (EthernetFeatures) I_BitsMask() EthernetFeatures
+pkg syscall/zx/hardware/network, method (EthernetFeatures) InvertBits() EthernetFeatures
+pkg syscall/zx/hardware/network, method (EthernetFeatures) String() string
+pkg syscall/zx/hardware/network, method (FrameType) I_EnumIsStrict() bool
+pkg syscall/zx/hardware/network, method (FrameType) I_EnumValues() []FrameType
+pkg syscall/zx/hardware/network, method (FrameType) IsUnknown() bool
+pkg syscall/zx/hardware/network, method (FrameType) String() string
+pkg syscall/zx/hardware/network, method (InfoType) I_EnumIsStrict() bool
+pkg syscall/zx/hardware/network, method (InfoType) I_EnumValues() []InfoType
+pkg syscall/zx/hardware/network, method (InfoType) IsUnknown() bool
+pkg syscall/zx/hardware/network, method (InfoType) String() string
+pkg syscall/zx/hardware/network, method (MacFilterMode) I_EnumIsStrict() bool
+pkg syscall/zx/hardware/network, method (MacFilterMode) I_EnumValues() []MacFilterMode
+pkg syscall/zx/hardware/network, method (MacFilterMode) IsUnknown() bool
+pkg syscall/zx/hardware/network, method (MacFilterMode) String() string
+pkg syscall/zx/hardware/network, method (RxAcceleration) I_EnumIsStrict() bool
+pkg syscall/zx/hardware/network, method (RxAcceleration) I_EnumValues() []RxAcceleration
+pkg syscall/zx/hardware/network, method (RxAcceleration) IsUnknown() bool
+pkg syscall/zx/hardware/network, method (RxAcceleration) String() string
+pkg syscall/zx/hardware/network, method (RxFlags) ClearBits(RxFlags) RxFlags
+pkg syscall/zx/hardware/network, method (RxFlags) GetUnknownBits() uint64
+pkg syscall/zx/hardware/network, method (RxFlags) HasBits(RxFlags) bool
+pkg syscall/zx/hardware/network, method (RxFlags) HasUnknownBits() bool
+pkg syscall/zx/hardware/network, method (RxFlags) I_BitsIsStrict() bool
+pkg syscall/zx/hardware/network, method (RxFlags) I_BitsMask() RxFlags
+pkg syscall/zx/hardware/network, method (RxFlags) InvertBits() RxFlags
+pkg syscall/zx/hardware/network, method (RxFlags) String() string
+pkg syscall/zx/hardware/network, method (SessionFlags) ClearBits(SessionFlags) SessionFlags
+pkg syscall/zx/hardware/network, method (SessionFlags) GetUnknownBits() uint64
+pkg syscall/zx/hardware/network, method (SessionFlags) HasBits(SessionFlags) bool
+pkg syscall/zx/hardware/network, method (SessionFlags) HasUnknownBits() bool
+pkg syscall/zx/hardware/network, method (SessionFlags) I_BitsIsStrict() bool
+pkg syscall/zx/hardware/network, method (SessionFlags) I_BitsMask() SessionFlags
+pkg syscall/zx/hardware/network, method (SessionFlags) InvertBits() SessionFlags
+pkg syscall/zx/hardware/network, method (SessionFlags) String() string
+pkg syscall/zx/hardware/network, method (StatusFlags) ClearBits(StatusFlags) StatusFlags
+pkg syscall/zx/hardware/network, method (StatusFlags) GetUnknownBits() uint64
+pkg syscall/zx/hardware/network, method (StatusFlags) HasBits(StatusFlags) bool
+pkg syscall/zx/hardware/network, method (StatusFlags) HasUnknownBits() bool
+pkg syscall/zx/hardware/network, method (StatusFlags) I_BitsIsStrict() bool
+pkg syscall/zx/hardware/network, method (StatusFlags) I_BitsMask() StatusFlags
+pkg syscall/zx/hardware/network, method (StatusFlags) InvertBits() StatusFlags
+pkg syscall/zx/hardware/network, method (StatusFlags) String() string
+pkg syscall/zx/hardware/network, method (TxAcceleration) I_EnumIsStrict() bool
+pkg syscall/zx/hardware/network, method (TxAcceleration) I_EnumValues() []TxAcceleration
+pkg syscall/zx/hardware/network, method (TxAcceleration) IsUnknown() bool
+pkg syscall/zx/hardware/network, method (TxAcceleration) String() string
+pkg syscall/zx/hardware/network, method (TxFlags) ClearBits(TxFlags) TxFlags
+pkg syscall/zx/hardware/network, method (TxFlags) GetUnknownBits() uint64
+pkg syscall/zx/hardware/network, method (TxFlags) HasBits(TxFlags) bool
+pkg syscall/zx/hardware/network, method (TxFlags) HasUnknownBits() bool
+pkg syscall/zx/hardware/network, method (TxFlags) I_BitsIsStrict() bool
+pkg syscall/zx/hardware/network, method (TxFlags) I_BitsMask() TxFlags
+pkg syscall/zx/hardware/network, method (TxFlags) InvertBits() TxFlags
+pkg syscall/zx/hardware/network, method (TxFlags) String() string
+pkg syscall/zx/hardware/network, method (TxReturnFlags) ClearBits(TxReturnFlags) TxReturnFlags
+pkg syscall/zx/hardware/network, method (TxReturnFlags) GetUnknownBits() uint64
+pkg syscall/zx/hardware/network, method (TxReturnFlags) HasBits(TxReturnFlags) bool
+pkg syscall/zx/hardware/network, method (TxReturnFlags) HasUnknownBits() bool
+pkg syscall/zx/hardware/network, method (TxReturnFlags) I_BitsIsStrict() bool
+pkg syscall/zx/hardware/network, method (TxReturnFlags) I_BitsMask() TxReturnFlags
+pkg syscall/zx/hardware/network, method (TxReturnFlags) InvertBits() TxReturnFlags
+pkg syscall/zx/hardware/network, method (TxReturnFlags) String() string
+pkg syscall/zx/hardware/network, type DeviceClass uint16
+pkg syscall/zx/hardware/network, type DeviceEventProxy struct
+pkg syscall/zx/hardware/network, type DeviceEventProxy struct, embedded zx.Channel
+pkg syscall/zx/hardware/network, type DeviceInfo struct
+pkg syscall/zx/hardware/network, type DeviceInfo struct, BufferAlignment uint32
+pkg syscall/zx/hardware/network, type DeviceInfo struct, BufferAlignmentPresent bool
+pkg syscall/zx/hardware/network, type DeviceInfo struct, DescriptorVersion uint8
+pkg syscall/zx/hardware/network, type DeviceInfo struct, DescriptorVersionPresent bool
+pkg syscall/zx/hardware/network, type DeviceInfo struct, I_unknownData interface{}
+pkg syscall/zx/hardware/network, type DeviceInfo struct, MaxBufferLength uint32
+pkg syscall/zx/hardware/network, type DeviceInfo struct, MaxBufferLengthPresent bool
+pkg syscall/zx/hardware/network, type DeviceInfo struct, MaxBufferParts uint8
+pkg syscall/zx/hardware/network, type DeviceInfo struct, MaxBufferPartsPresent bool
+pkg syscall/zx/hardware/network, type DeviceInfo struct, MinDescriptorLength uint8
+pkg syscall/zx/hardware/network, type DeviceInfo struct, MinDescriptorLengthPresent bool
+pkg syscall/zx/hardware/network, type DeviceInfo struct, MinRxBufferLength uint32
+pkg syscall/zx/hardware/network, type DeviceInfo struct, MinRxBufferLengthPresent bool
+pkg syscall/zx/hardware/network, type DeviceInfo struct, MinTxBufferHead uint16
+pkg syscall/zx/hardware/network, type DeviceInfo struct, MinTxBufferHeadPresent bool
+pkg syscall/zx/hardware/network, type DeviceInfo struct, MinTxBufferLength uint32
+pkg syscall/zx/hardware/network, type DeviceInfo struct, MinTxBufferLengthPresent bool
+pkg syscall/zx/hardware/network, type DeviceInfo struct, MinTxBufferTail uint16
+pkg syscall/zx/hardware/network, type DeviceInfo struct, MinTxBufferTailPresent bool
+pkg syscall/zx/hardware/network, type DeviceInfo struct, RxAccel []RxAcceleration
+pkg syscall/zx/hardware/network, type DeviceInfo struct, RxAccelPresent bool
+pkg syscall/zx/hardware/network, type DeviceInfo struct, RxDepth uint16
+pkg syscall/zx/hardware/network, type DeviceInfo struct, RxDepthPresent bool
+pkg syscall/zx/hardware/network, type DeviceInfo struct, TxAccel []TxAcceleration
+pkg syscall/zx/hardware/network, type DeviceInfo struct, TxAccelPresent bool
+pkg syscall/zx/hardware/network, type DeviceInfo struct, TxDepth uint16
+pkg syscall/zx/hardware/network, type DeviceInfo struct, TxDepthPresent bool
+pkg syscall/zx/hardware/network, type DeviceInstanceEventProxy struct
+pkg syscall/zx/hardware/network, type DeviceInstanceEventProxy struct, embedded zx.Channel
+pkg syscall/zx/hardware/network, type DeviceInstanceWithCtx interface { GetDevice }
+pkg syscall/zx/hardware/network, type DeviceInstanceWithCtx interface, GetDevice(context.Context, DeviceWithCtxInterfaceRequest) error
+pkg syscall/zx/hardware/network, type DeviceInstanceWithCtxInterface struct
+pkg syscall/zx/hardware/network, type DeviceInstanceWithCtxInterface struct, embedded zx.Channel
+pkg syscall/zx/hardware/network, type DeviceInstanceWithCtxInterfaceRequest struct
+pkg syscall/zx/hardware/network, type DeviceInstanceWithCtxInterfaceRequest struct, embedded zx.Channel
+pkg syscall/zx/hardware/network, type DeviceInstanceWithCtxStub struct
+pkg syscall/zx/hardware/network, type DeviceInstanceWithCtxStub struct, Impl DeviceInstanceWithCtx
+pkg syscall/zx/hardware/network, type DeviceInstanceWithCtxTransitionalBase struct
+pkg syscall/zx/hardware/network, type DeviceOpenSessionResponse struct
+pkg syscall/zx/hardware/network, type DeviceOpenSessionResponse struct, Fifos Fifos
+pkg syscall/zx/hardware/network, type DeviceOpenSessionResponse struct, Session SessionWithCtxInterface
+pkg syscall/zx/hardware/network, type DeviceOpenSessionResult struct
+pkg syscall/zx/hardware/network, type DeviceOpenSessionResult struct, Err int32
+pkg syscall/zx/hardware/network, type DeviceOpenSessionResult struct, Response DeviceOpenSessionResponse
+pkg syscall/zx/hardware/network, type DeviceOpenSessionResult struct, embedded I_deviceOpenSessionResultTag
+pkg syscall/zx/hardware/network, type DevicePortEvent struct
+pkg syscall/zx/hardware/network, type DevicePortEvent struct, Added uint8
+pkg syscall/zx/hardware/network, type DevicePortEvent struct, Existing uint8
+pkg syscall/zx/hardware/network, type DevicePortEvent struct, Idle Empty
+pkg syscall/zx/hardware/network, type DevicePortEvent struct, Removed uint8
+pkg syscall/zx/hardware/network, type DevicePortEvent struct, embedded I_devicePortEventTag
+pkg syscall/zx/hardware/network, type DeviceWithCtx interface { GetInfo, GetPort, GetPortWatcher, OpenSession }
+pkg syscall/zx/hardware/network, type DeviceWithCtx interface, GetInfo(context.Context) (DeviceInfo, error)
+pkg syscall/zx/hardware/network, type DeviceWithCtx interface, GetPort(context.Context, uint8, PortWithCtxInterfaceRequest) error
+pkg syscall/zx/hardware/network, type DeviceWithCtx interface, GetPortWatcher(context.Context, PortWatcherWithCtxInterfaceRequest) error
+pkg syscall/zx/hardware/network, type DeviceWithCtx interface, OpenSession(context.Context, string, SessionInfo) (DeviceOpenSessionResult, error)
+pkg syscall/zx/hardware/network, type DeviceWithCtxInterface struct
+pkg syscall/zx/hardware/network, type DeviceWithCtxInterface struct, embedded zx.Channel
+pkg syscall/zx/hardware/network, type DeviceWithCtxInterfaceRequest struct
+pkg syscall/zx/hardware/network, type DeviceWithCtxInterfaceRequest struct, embedded zx.Channel
+pkg syscall/zx/hardware/network, type DeviceWithCtxStub struct
+pkg syscall/zx/hardware/network, type DeviceWithCtxStub struct, Impl DeviceWithCtx
+pkg syscall/zx/hardware/network, type DeviceWithCtxTransitionalBase struct
+pkg syscall/zx/hardware/network, type Empty struct
+pkg syscall/zx/hardware/network, type EthernetFeatures uint32
+pkg syscall/zx/hardware/network, type Fifos struct
+pkg syscall/zx/hardware/network, type Fifos struct, Rx zx.Handle
+pkg syscall/zx/hardware/network, type Fifos struct, Tx zx.Handle
+pkg syscall/zx/hardware/network, type FrameType uint8
+pkg syscall/zx/hardware/network, type FrameTypeSupport struct
+pkg syscall/zx/hardware/network, type FrameTypeSupport struct, Features uint32
+pkg syscall/zx/hardware/network, type FrameTypeSupport struct, SupportedFlags TxFlags
+pkg syscall/zx/hardware/network, type FrameTypeSupport struct, Type FrameType
+pkg syscall/zx/hardware/network, type I_deviceOpenSessionResultTag uint64
+pkg syscall/zx/hardware/network, type I_devicePortEventTag uint64
+pkg syscall/zx/hardware/network, type I_sessionAttachResultTag uint64
+pkg syscall/zx/hardware/network, type I_sessionDetachResultTag uint64
+pkg syscall/zx/hardware/network, type InfoType uint32
+pkg syscall/zx/hardware/network, type MacAddressingEventProxy struct
+pkg syscall/zx/hardware/network, type MacAddressingEventProxy struct, embedded zx.Channel
+pkg syscall/zx/hardware/network, type MacAddressingWithCtx interface { AddMulticastAddress, GetUnicastAddress, RemoveMulticastAddress, SetMode }
+pkg syscall/zx/hardware/network, type MacAddressingWithCtx interface, AddMulticastAddress(context.Context, net.MacAddress) (int32, error)
+pkg syscall/zx/hardware/network, type MacAddressingWithCtx interface, GetUnicastAddress(context.Context) (net.MacAddress, error)
+pkg syscall/zx/hardware/network, type MacAddressingWithCtx interface, RemoveMulticastAddress(context.Context, net.MacAddress) (int32, error)
+pkg syscall/zx/hardware/network, type MacAddressingWithCtx interface, SetMode(context.Context, MacFilterMode) (int32, error)
+pkg syscall/zx/hardware/network, type MacAddressingWithCtxInterface struct
+pkg syscall/zx/hardware/network, type MacAddressingWithCtxInterface struct, embedded zx.Channel
+pkg syscall/zx/hardware/network, type MacAddressingWithCtxInterfaceRequest struct
+pkg syscall/zx/hardware/network, type MacAddressingWithCtxInterfaceRequest struct, embedded zx.Channel
+pkg syscall/zx/hardware/network, type MacAddressingWithCtxStub struct
+pkg syscall/zx/hardware/network, type MacAddressingWithCtxStub struct, Impl MacAddressingWithCtx
+pkg syscall/zx/hardware/network, type MacAddressingWithCtxTransitionalBase struct
+pkg syscall/zx/hardware/network, type MacFilterMode uint32
+pkg syscall/zx/hardware/network, type PortEventProxy struct
+pkg syscall/zx/hardware/network, type PortEventProxy struct, embedded zx.Channel
+pkg syscall/zx/hardware/network, type PortInfo struct
+pkg syscall/zx/hardware/network, type PortInfo struct, Class DeviceClass
+pkg syscall/zx/hardware/network, type PortInfo struct, ClassPresent bool
+pkg syscall/zx/hardware/network, type PortInfo struct, I_unknownData interface{}
+pkg syscall/zx/hardware/network, type PortInfo struct, Id uint8
+pkg syscall/zx/hardware/network, type PortInfo struct, IdPresent bool
+pkg syscall/zx/hardware/network, type PortInfo struct, RxTypes []FrameType
+pkg syscall/zx/hardware/network, type PortInfo struct, RxTypesPresent bool
+pkg syscall/zx/hardware/network, type PortInfo struct, TxTypes []FrameTypeSupport
+pkg syscall/zx/hardware/network, type PortInfo struct, TxTypesPresent bool
+pkg syscall/zx/hardware/network, type PortStatus struct
+pkg syscall/zx/hardware/network, type PortStatus struct, Flags StatusFlags
+pkg syscall/zx/hardware/network, type PortStatus struct, FlagsPresent bool
+pkg syscall/zx/hardware/network, type PortStatus struct, I_unknownData interface{}
+pkg syscall/zx/hardware/network, type PortStatus struct, Mtu uint32
+pkg syscall/zx/hardware/network, type PortStatus struct, MtuPresent bool
+pkg syscall/zx/hardware/network, type PortWatcherEventProxy struct
+pkg syscall/zx/hardware/network, type PortWatcherEventProxy struct, embedded zx.Channel
+pkg syscall/zx/hardware/network, type PortWatcherWithCtx interface { Watch }
+pkg syscall/zx/hardware/network, type PortWatcherWithCtx interface, Watch(context.Context) (DevicePortEvent, error)
+pkg syscall/zx/hardware/network, type PortWatcherWithCtxInterface struct
+pkg syscall/zx/hardware/network, type PortWatcherWithCtxInterface struct, embedded zx.Channel
+pkg syscall/zx/hardware/network, type PortWatcherWithCtxInterfaceRequest struct
+pkg syscall/zx/hardware/network, type PortWatcherWithCtxInterfaceRequest struct, embedded zx.Channel
+pkg syscall/zx/hardware/network, type PortWatcherWithCtxStub struct
+pkg syscall/zx/hardware/network, type PortWatcherWithCtxStub struct, Impl PortWatcherWithCtx
+pkg syscall/zx/hardware/network, type PortWatcherWithCtxTransitionalBase struct
+pkg syscall/zx/hardware/network, type PortWithCtx interface { GetInfo, GetMac, GetStatus, GetStatusWatcher }
+pkg syscall/zx/hardware/network, type PortWithCtx interface, GetInfo(context.Context) (PortInfo, error)
+pkg syscall/zx/hardware/network, type PortWithCtx interface, GetMac(context.Context, MacAddressingWithCtxInterfaceRequest) error
+pkg syscall/zx/hardware/network, type PortWithCtx interface, GetStatus(context.Context) (PortStatus, error)
+pkg syscall/zx/hardware/network, type PortWithCtx interface, GetStatusWatcher(context.Context, StatusWatcherWithCtxInterfaceRequest, uint32) error
+pkg syscall/zx/hardware/network, type PortWithCtxInterface struct
+pkg syscall/zx/hardware/network, type PortWithCtxInterface struct, embedded zx.Channel
+pkg syscall/zx/hardware/network, type PortWithCtxInterfaceRequest struct
+pkg syscall/zx/hardware/network, type PortWithCtxInterfaceRequest struct, embedded zx.Channel
+pkg syscall/zx/hardware/network, type PortWithCtxStub struct
+pkg syscall/zx/hardware/network, type PortWithCtxStub struct, Impl PortWithCtx
+pkg syscall/zx/hardware/network, type PortWithCtxTransitionalBase struct
+pkg syscall/zx/hardware/network, type RxAcceleration uint8
+pkg syscall/zx/hardware/network, type RxFlags uint32
+pkg syscall/zx/hardware/network, type SessionAttachResponse struct
+pkg syscall/zx/hardware/network, type SessionAttachResult struct
+pkg syscall/zx/hardware/network, type SessionAttachResult struct, Err int32
+pkg syscall/zx/hardware/network, type SessionAttachResult struct, Response SessionAttachResponse
+pkg syscall/zx/hardware/network, type SessionAttachResult struct, embedded I_sessionAttachResultTag
+pkg syscall/zx/hardware/network, type SessionDetachResponse struct
+pkg syscall/zx/hardware/network, type SessionDetachResult struct
+pkg syscall/zx/hardware/network, type SessionDetachResult struct, Err int32
+pkg syscall/zx/hardware/network, type SessionDetachResult struct, Response SessionDetachResponse
+pkg syscall/zx/hardware/network, type SessionDetachResult struct, embedded I_sessionDetachResultTag
+pkg syscall/zx/hardware/network, type SessionEventProxy struct
+pkg syscall/zx/hardware/network, type SessionEventProxy struct, embedded zx.Channel
+pkg syscall/zx/hardware/network, type SessionFlags uint16
+pkg syscall/zx/hardware/network, type SessionInfo struct
+pkg syscall/zx/hardware/network, type SessionInfo struct, Data zx.VMO
+pkg syscall/zx/hardware/network, type SessionInfo struct, DataPresent bool
+pkg syscall/zx/hardware/network, type SessionInfo struct, DescriptorCount uint16
+pkg syscall/zx/hardware/network, type SessionInfo struct, DescriptorCountPresent bool
+pkg syscall/zx/hardware/network, type SessionInfo struct, DescriptorLength uint8
+pkg syscall/zx/hardware/network, type SessionInfo struct, DescriptorLengthPresent bool
+pkg syscall/zx/hardware/network, type SessionInfo struct, DescriptorVersion uint8
+pkg syscall/zx/hardware/network, type SessionInfo struct, DescriptorVersionPresent bool
+pkg syscall/zx/hardware/network, type SessionInfo struct, Descriptors zx.VMO
+pkg syscall/zx/hardware/network, type SessionInfo struct, DescriptorsPresent bool
+pkg syscall/zx/hardware/network, type SessionInfo struct, I_unknownData interface{}
+pkg syscall/zx/hardware/network, type SessionInfo struct, Options SessionFlags
+pkg syscall/zx/hardware/network, type SessionInfo struct, OptionsPresent bool
+pkg syscall/zx/hardware/network, type SessionWithCtx interface { Attach, Close, Detach }
+pkg syscall/zx/hardware/network, type SessionWithCtx interface, Attach(context.Context, uint8, []FrameType) (SessionAttachResult, error)
+pkg syscall/zx/hardware/network, type SessionWithCtx interface, Close(context.Context) error
+pkg syscall/zx/hardware/network, type SessionWithCtx interface, Detach(context.Context, uint8) (SessionDetachResult, error)
+pkg syscall/zx/hardware/network, type SessionWithCtxInterface struct
+pkg syscall/zx/hardware/network, type SessionWithCtxInterface struct, embedded zx.Channel
+pkg syscall/zx/hardware/network, type SessionWithCtxInterfaceRequest struct
+pkg syscall/zx/hardware/network, type SessionWithCtxInterfaceRequest struct, embedded zx.Channel
+pkg syscall/zx/hardware/network, type SessionWithCtxStub struct
+pkg syscall/zx/hardware/network, type SessionWithCtxStub struct, Impl SessionWithCtx
+pkg syscall/zx/hardware/network, type SessionWithCtxTransitionalBase struct
+pkg syscall/zx/hardware/network, type StatusFlags uint32
+pkg syscall/zx/hardware/network, type StatusWatcherEventProxy struct
+pkg syscall/zx/hardware/network, type StatusWatcherEventProxy struct, embedded zx.Channel
+pkg syscall/zx/hardware/network, type StatusWatcherWithCtx interface { WatchStatus }
+pkg syscall/zx/hardware/network, type StatusWatcherWithCtx interface, WatchStatus(context.Context) (PortStatus, error)
+pkg syscall/zx/hardware/network, type StatusWatcherWithCtxInterface struct
+pkg syscall/zx/hardware/network, type StatusWatcherWithCtxInterface struct, embedded zx.Channel
+pkg syscall/zx/hardware/network, type StatusWatcherWithCtxInterfaceRequest struct
+pkg syscall/zx/hardware/network, type StatusWatcherWithCtxInterfaceRequest struct, embedded zx.Channel
+pkg syscall/zx/hardware/network, type StatusWatcherWithCtxStub struct
+pkg syscall/zx/hardware/network, type StatusWatcherWithCtxStub struct, Impl StatusWatcherWithCtx
+pkg syscall/zx/hardware/network, type StatusWatcherWithCtxTransitionalBase struct
+pkg syscall/zx/hardware/network, type TxAcceleration uint8
+pkg syscall/zx/hardware/network, type TxFlags uint32
+pkg syscall/zx/hardware/network, type TxReturnFlags uint32
+pkg syscall/zx/io, const CloneFlagSameRights = 67108864
+pkg syscall/zx/io, const CloneFlagSameRights uint32
+pkg syscall/zx/io, const DeviceSignalError = 134217728
+pkg syscall/zx/io, const DeviceSignalError uint32
+pkg syscall/zx/io, const DeviceSignalHangup = 268435456
+pkg syscall/zx/io, const DeviceSignalHangup uint32
+pkg syscall/zx/io, const DeviceSignalOob = 33554432
+pkg syscall/zx/io, const DeviceSignalOob uint32
+pkg syscall/zx/io, const DeviceSignalReadable = 16777216
+pkg syscall/zx/io, const DeviceSignalReadable uint32
+pkg syscall/zx/io, const DeviceSignalWritable = 67108864
+pkg syscall/zx/io, const DeviceSignalWritable uint32
+pkg syscall/zx/io, const DirectoryAddInotifyFilterOrdinal = 6625509513336940747
+pkg syscall/zx/io, const DirectoryAddInotifyFilterOrdinal uint64
+pkg syscall/zx/io, const DirectoryAdminAddInotifyFilterOrdinal = 6625509513336940747
+pkg syscall/zx/io, const DirectoryAdminAddInotifyFilterOrdinal uint64
+pkg syscall/zx/io, const DirectoryAdminAdvisoryLockOrdinal = 7158728121514993402
+pkg syscall/zx/io, const DirectoryAdminAdvisoryLockOrdinal uint64
+pkg syscall/zx/io, const DirectoryAdminCloneOrdinal = 6512600400724287855
+pkg syscall/zx/io, const DirectoryAdminCloneOrdinal uint64
+pkg syscall/zx/io, const DirectoryAdminCloseOrdinal = 5983530995951066180
+pkg syscall/zx/io, const DirectoryAdminCloseOrdinal uint64
+pkg syscall/zx/io, const DirectoryAdminDescribeOrdinal = 1152055232528178848
+pkg syscall/zx/io, const DirectoryAdminDescribeOrdinal uint64
+pkg syscall/zx/io, const DirectoryAdminGetAttrOrdinal = 8689798978500614909
+pkg syscall/zx/io, const DirectoryAdminGetAttrOrdinal uint64
+pkg syscall/zx/io, const DirectoryAdminGetDevicePathOrdinal = 8571163485535175003
+pkg syscall/zx/io, const DirectoryAdminGetDevicePathOrdinal uint64
+pkg syscall/zx/io, const DirectoryAdminGetTokenOrdinal = 2787337947777369685
+pkg syscall/zx/io, const DirectoryAdminGetTokenOrdinal uint64
+pkg syscall/zx/io, const DirectoryAdminLinkOrdinal = 8360374984291987687
+pkg syscall/zx/io, const DirectoryAdminLinkOrdinal uint64
+pkg syscall/zx/io, const DirectoryAdminMountAndCreateOrdinal = 8919240678700135347
+pkg syscall/zx/io, const DirectoryAdminMountAndCreateOrdinal uint64
+pkg syscall/zx/io, const DirectoryAdminMountOrdinal = 1126294431032158160
+pkg syscall/zx/io, const DirectoryAdminMountOrdinal uint64
+pkg syscall/zx/io, const DirectoryAdminNodeGetFlagsOrdinal = 6595803110182632097
+pkg syscall/zx/io, const DirectoryAdminNodeGetFlagsOrdinal uint64
+pkg syscall/zx/io, const DirectoryAdminNodeSetFlagsOrdinal = 5950864159036794675
+pkg syscall/zx/io, const DirectoryAdminNodeSetFlagsOrdinal uint64
+pkg syscall/zx/io, const DirectoryAdminOnOpenOrdinal = 9207534335756671346
+pkg syscall/zx/io, const DirectoryAdminOnOpenOrdinal uint64
+pkg syscall/zx/io, const DirectoryAdminOpenOrdinal = 3193127272456937152
+pkg syscall/zx/io, const DirectoryAdminOpenOrdinal uint64
+pkg syscall/zx/io, const DirectoryAdminQueryFilesystemOrdinal = 5370424362196764509
+pkg syscall/zx/io, const DirectoryAdminQueryFilesystemOrdinal uint64
+pkg syscall/zx/io, const DirectoryAdminReadDirentsOrdinal = 3855785432100874762
+pkg syscall/zx/io, const DirectoryAdminReadDirentsOrdinal uint64
+pkg syscall/zx/io, const DirectoryAdminRename2Ordinal = 8097726607824333022
+pkg syscall/zx/io, const DirectoryAdminRename2Ordinal uint64
+pkg syscall/zx/io, const DirectoryAdminRenameOrdinal = 760546084064053509
+pkg syscall/zx/io, const DirectoryAdminRenameOrdinal uint64
+pkg syscall/zx/io, const DirectoryAdminRewindOrdinal = 1635123508515392625
+pkg syscall/zx/io, const DirectoryAdminRewindOrdinal uint64
+pkg syscall/zx/io, const DirectoryAdminSetAttrOrdinal = 4721673413776871238
+pkg syscall/zx/io, const DirectoryAdminSetAttrOrdinal uint64
+pkg syscall/zx/io, const DirectoryAdminSyncOrdinal = 1773723578397144345
+pkg syscall/zx/io, const DirectoryAdminSyncOrdinal uint64
+pkg syscall/zx/io, const DirectoryAdminUnlink2Ordinal = 8433556716759383021
+pkg syscall/zx/io, const DirectoryAdminUnlink2Ordinal uint64
+pkg syscall/zx/io, const DirectoryAdminUnlinkOrdinal = 6489679398145932323
+pkg syscall/zx/io, const DirectoryAdminUnlinkOrdinal uint64
+pkg syscall/zx/io, const DirectoryAdminUnmountNodeOrdinal = 2790500101479437275
+pkg syscall/zx/io, const DirectoryAdminUnmountNodeOrdinal uint64
+pkg syscall/zx/io, const DirectoryAdminUnmountOrdinal = 9053463840573213092
+pkg syscall/zx/io, const DirectoryAdminUnmountOrdinal uint64
+pkg syscall/zx/io, const DirectoryAdminWatchOrdinal = 6275512344170098065
+pkg syscall/zx/io, const DirectoryAdminWatchOrdinal uint64
+pkg syscall/zx/io, const DirectoryAdvisoryLockOrdinal = 7158728121514993402
+pkg syscall/zx/io, const DirectoryAdvisoryLockOrdinal uint64
+pkg syscall/zx/io, const DirectoryCloneOrdinal = 6512600400724287855
+pkg syscall/zx/io, const DirectoryCloneOrdinal uint64
+pkg syscall/zx/io, const DirectoryCloseOrdinal = 5983530995951066180
+pkg syscall/zx/io, const DirectoryCloseOrdinal uint64
+pkg syscall/zx/io, const DirectoryDescribeOrdinal = 1152055232528178848
+pkg syscall/zx/io, const DirectoryDescribeOrdinal uint64
+pkg syscall/zx/io, const DirectoryGetAttrOrdinal = 8689798978500614909
+pkg syscall/zx/io, const DirectoryGetAttrOrdinal uint64
+pkg syscall/zx/io, const DirectoryGetTokenOrdinal = 2787337947777369685
+pkg syscall/zx/io, const DirectoryGetTokenOrdinal uint64
+pkg syscall/zx/io, const DirectoryLinkOrdinal = 8360374984291987687
+pkg syscall/zx/io, const DirectoryLinkOrdinal uint64
+pkg syscall/zx/io, const DirectoryNodeGetFlagsOrdinal = 6595803110182632097
+pkg syscall/zx/io, const DirectoryNodeGetFlagsOrdinal uint64
+pkg syscall/zx/io, const DirectoryNodeSetFlagsOrdinal = 5950864159036794675
+pkg syscall/zx/io, const DirectoryNodeSetFlagsOrdinal uint64
+pkg syscall/zx/io, const DirectoryOnOpenOrdinal = 9207534335756671346
+pkg syscall/zx/io, const DirectoryOnOpenOrdinal uint64
+pkg syscall/zx/io, const DirectoryOpenOrdinal = 3193127272456937152
+pkg syscall/zx/io, const DirectoryOpenOrdinal uint64
+pkg syscall/zx/io, const DirectoryReadDirentsOrdinal = 3855785432100874762
+pkg syscall/zx/io, const DirectoryReadDirentsOrdinal uint64
+pkg syscall/zx/io, const DirectoryRename2Ordinal = 8097726607824333022
+pkg syscall/zx/io, const DirectoryRename2Ordinal uint64
+pkg syscall/zx/io, const DirectoryRename2ResultErr = 2
+pkg syscall/zx/io, const DirectoryRename2ResultErr ideal-int
+pkg syscall/zx/io, const DirectoryRename2ResultResponse = 1
+pkg syscall/zx/io, const DirectoryRename2ResultResponse ideal-int
+pkg syscall/zx/io, const DirectoryRenameOrdinal = 760546084064053509
+pkg syscall/zx/io, const DirectoryRenameOrdinal uint64
+pkg syscall/zx/io, const DirectoryRewindOrdinal = 1635123508515392625
+pkg syscall/zx/io, const DirectoryRewindOrdinal uint64
+pkg syscall/zx/io, const DirectorySetAttrOrdinal = 4721673413776871238
+pkg syscall/zx/io, const DirectorySetAttrOrdinal uint64
+pkg syscall/zx/io, const DirectorySyncOrdinal = 1773723578397144345
+pkg syscall/zx/io, const DirectorySyncOrdinal uint64
+pkg syscall/zx/io, const DirectoryUnlink2Ordinal = 8433556716759383021
+pkg syscall/zx/io, const DirectoryUnlink2Ordinal uint64
+pkg syscall/zx/io, const DirectoryUnlink2ResultErr = 2
+pkg syscall/zx/io, const DirectoryUnlink2ResultErr ideal-int
+pkg syscall/zx/io, const DirectoryUnlink2ResultResponse = 1
+pkg syscall/zx/io, const DirectoryUnlink2ResultResponse ideal-int
+pkg syscall/zx/io, const DirectoryUnlinkOrdinal = 6489679398145932323
+pkg syscall/zx/io, const DirectoryUnlinkOrdinal uint64
+pkg syscall/zx/io, const DirectoryWatchOrdinal = 6275512344170098065
+pkg syscall/zx/io, const DirectoryWatchOrdinal uint64
+pkg syscall/zx/io, const DirectoryWatcherOnEventOrdinal = 4122940494123843882
+pkg syscall/zx/io, const DirectoryWatcherOnEventOrdinal uint64
+pkg syscall/zx/io, const DirentTypeBlockDevice = 6
+pkg syscall/zx/io, const DirentTypeBlockDevice uint8
+pkg syscall/zx/io, const DirentTypeDirectory = 4
+pkg syscall/zx/io, const DirentTypeDirectory uint8
+pkg syscall/zx/io, const DirentTypeFile = 8
+pkg syscall/zx/io, const DirentTypeFile uint8
+pkg syscall/zx/io, const DirentTypeService = 16
+pkg syscall/zx/io, const DirentTypeService uint8
+pkg syscall/zx/io, const DirentTypeSocket = 12
+pkg syscall/zx/io, const DirentTypeSocket uint8
+pkg syscall/zx/io, const DirentTypeUnknown = 0
+pkg syscall/zx/io, const DirentTypeUnknown uint8
+pkg syscall/zx/io, const FileAdvisoryLockOrdinal = 7158728121514993402
+pkg syscall/zx/io, const FileAdvisoryLockOrdinal uint64
+pkg syscall/zx/io, const FileCloneOrdinal = 6512600400724287855
+pkg syscall/zx/io, const FileCloneOrdinal uint64
+pkg syscall/zx/io, const FileCloseOrdinal = 5983530995951066180
+pkg syscall/zx/io, const FileCloseOrdinal uint64
+pkg syscall/zx/io, const FileDescribeOrdinal = 1152055232528178848
+pkg syscall/zx/io, const FileDescribeOrdinal uint64
+pkg syscall/zx/io, const FileGetAttrOrdinal = 8689798978500614909
+pkg syscall/zx/io, const FileGetAttrOrdinal uint64
+pkg syscall/zx/io, const FileGetBufferOrdinal = 5445898995516234065
+pkg syscall/zx/io, const FileGetBufferOrdinal uint64
+pkg syscall/zx/io, const FileGetFlagsOrdinal = 2309194512404294550
+pkg syscall/zx/io, const FileGetFlagsOrdinal uint64
+pkg syscall/zx/io, const FileNodeGetFlagsOrdinal = 6595803110182632097
+pkg syscall/zx/io, const FileNodeGetFlagsOrdinal uint64
+pkg syscall/zx/io, const FileNodeSetFlagsOrdinal = 5950864159036794675
+pkg syscall/zx/io, const FileNodeSetFlagsOrdinal uint64
+pkg syscall/zx/io, const FileOnOpenOrdinal = 9207534335756671346
+pkg syscall/zx/io, const FileOnOpenOrdinal uint64
+pkg syscall/zx/io, const FileReadAtOrdinal = 7289056479437150025
+pkg syscall/zx/io, const FileReadAtOrdinal uint64
+pkg syscall/zx/io, const FileReadOrdinal = 3004665143387037836
+pkg syscall/zx/io, const FileReadOrdinal uint64
+pkg syscall/zx/io, const FileSeekOrdinal = 3623542728230495124
+pkg syscall/zx/io, const FileSeekOrdinal uint64
+pkg syscall/zx/io, const FileSetAttrOrdinal = 4721673413776871238
+pkg syscall/zx/io, const FileSetAttrOrdinal uint64
+pkg syscall/zx/io, const FileSetFlagsOrdinal = 8160301876628623681
+pkg syscall/zx/io, const FileSetFlagsOrdinal uint64
+pkg syscall/zx/io, const FileSignalReadable = 16777216
+pkg syscall/zx/io, const FileSignalReadable uint32
+pkg syscall/zx/io, const FileSignalWritable = 33554432
+pkg syscall/zx/io, const FileSignalWritable uint32
+pkg syscall/zx/io, const FileSyncOrdinal = 1773723578397144345
+pkg syscall/zx/io, const FileSyncOrdinal uint64
+pkg syscall/zx/io, const FileTruncateOrdinal = 6829976253355404763
+pkg syscall/zx/io, const FileTruncateOrdinal uint64
+pkg syscall/zx/io, const FileWriteAtOrdinal = 5416107795679508964
+pkg syscall/zx/io, const FileWriteAtOrdinal uint64
+pkg syscall/zx/io, const FileWriteOrdinal = 4279601575788552795
+pkg syscall/zx/io, const FileWriteOrdinal uint64
+pkg syscall/zx/io, const InoUnknown = 18446744073709551615
+pkg syscall/zx/io, const InoUnknown uint64
+pkg syscall/zx/io, const MaxBuf = 8192
+pkg syscall/zx/io, const MaxBuf uint64
+pkg syscall/zx/io, const MaxFilename = 255
+pkg syscall/zx/io, const MaxFilename uint64
+pkg syscall/zx/io, const MaxFsNameBuffer = 32
+pkg syscall/zx/io, const MaxFsNameBuffer uint64
+pkg syscall/zx/io, const MaxPath = 4096
+pkg syscall/zx/io, const MaxPath uint64
+pkg syscall/zx/io, const ModeProtectionMask = 4095
+pkg syscall/zx/io, const ModeProtectionMask uint32
+pkg syscall/zx/io, const ModeTypeBlockDevice = 24576
+pkg syscall/zx/io, const ModeTypeBlockDevice uint32
+pkg syscall/zx/io, const ModeTypeDirectory = 16384
+pkg syscall/zx/io, const ModeTypeDirectory uint32
+pkg syscall/zx/io, const ModeTypeFile = 32768
+pkg syscall/zx/io, const ModeTypeFile uint32
+pkg syscall/zx/io, const ModeTypeMask = 1044480
+pkg syscall/zx/io, const ModeTypeMask uint32
+pkg syscall/zx/io, const ModeTypeService = 65536
+pkg syscall/zx/io, const ModeTypeService uint32
+pkg syscall/zx/io, const ModeTypeSocket = 49152
+pkg syscall/zx/io, const ModeTypeSocket uint32
+pkg syscall/zx/io, const MountCreateFlagReplace = 1
+pkg syscall/zx/io, const MountCreateFlagReplace uint32
+pkg syscall/zx/io, const NodeAttributeFlagCreationTime = 1
+pkg syscall/zx/io, const NodeAttributeFlagCreationTime uint32
+pkg syscall/zx/io, const NodeAttributeFlagModificationTime = 2
+pkg syscall/zx/io, const NodeAttributeFlagModificationTime uint32
+pkg syscall/zx/io, const NodeCloneOrdinal = 6512600400724287855
+pkg syscall/zx/io, const NodeCloneOrdinal uint64
+pkg syscall/zx/io, const NodeCloseOrdinal = 5983530995951066180
+pkg syscall/zx/io, const NodeCloseOrdinal uint64
+pkg syscall/zx/io, const NodeDescribeOrdinal = 1152055232528178848
+pkg syscall/zx/io, const NodeDescribeOrdinal uint64
+pkg syscall/zx/io, const NodeGetAttrOrdinal = 8689798978500614909
+pkg syscall/zx/io, const NodeGetAttrOrdinal uint64
+pkg syscall/zx/io, const NodeInfoDatagramSocket = 9
+pkg syscall/zx/io, const NodeInfoDatagramSocket ideal-int
+pkg syscall/zx/io, const NodeInfoDevice = 6
+pkg syscall/zx/io, const NodeInfoDevice ideal-int
+pkg syscall/zx/io, const NodeInfoDirectory = 3
+pkg syscall/zx/io, const NodeInfoDirectory ideal-int
+pkg syscall/zx/io, const NodeInfoFile = 2
+pkg syscall/zx/io, const NodeInfoFile ideal-int
+pkg syscall/zx/io, const NodeInfoPipe = 4
+pkg syscall/zx/io, const NodeInfoPipe ideal-int
+pkg syscall/zx/io, const NodeInfoService = 1
+pkg syscall/zx/io, const NodeInfoService ideal-int
+pkg syscall/zx/io, const NodeInfoStreamSocket = 10
+pkg syscall/zx/io, const NodeInfoStreamSocket ideal-int
+pkg syscall/zx/io, const NodeInfoTty = 7
+pkg syscall/zx/io, const NodeInfoTty ideal-int
+pkg syscall/zx/io, const NodeInfoVmofile = 5
+pkg syscall/zx/io, const NodeInfoVmofile ideal-int
+pkg syscall/zx/io, const NodeNodeGetFlagsOrdinal = 6595803110182632097
+pkg syscall/zx/io, const NodeNodeGetFlagsOrdinal uint64
+pkg syscall/zx/io, const NodeNodeSetFlagsOrdinal = 5950864159036794675
+pkg syscall/zx/io, const NodeNodeSetFlagsOrdinal uint64
+pkg syscall/zx/io, const NodeOnOpenOrdinal = 9207534335756671346
+pkg syscall/zx/io, const NodeOnOpenOrdinal uint64
+pkg syscall/zx/io, const NodeSetAttrOrdinal = 4721673413776871238
+pkg syscall/zx/io, const NodeSetAttrOrdinal uint64
+pkg syscall/zx/io, const NodeSyncOrdinal = 1773723578397144345
+pkg syscall/zx/io, const NodeSyncOrdinal uint64
+pkg syscall/zx/io, const OpenFlagAppend = 1048576
+pkg syscall/zx/io, const OpenFlagAppend uint32
+pkg syscall/zx/io, const OpenFlagCreate = 65536
+pkg syscall/zx/io, const OpenFlagCreate uint32
+pkg syscall/zx/io, const OpenFlagCreateIfAbsent = 131072
+pkg syscall/zx/io, const OpenFlagCreateIfAbsent uint32
+pkg syscall/zx/io, const OpenFlagDescribe = 8388608
+pkg syscall/zx/io, const OpenFlagDescribe uint32
+pkg syscall/zx/io, const OpenFlagDirectory = 524288
+pkg syscall/zx/io, const OpenFlagDirectory uint32
+pkg syscall/zx/io, const OpenFlagNoRemote = 2097152
+pkg syscall/zx/io, const OpenFlagNoRemote uint32
+pkg syscall/zx/io, const OpenFlagNodeReference = 4194304
+pkg syscall/zx/io, const OpenFlagNodeReference uint32
+pkg syscall/zx/io, const OpenFlagNotDirectory = 33554432
+pkg syscall/zx/io, const OpenFlagNotDirectory uint32
+pkg syscall/zx/io, const OpenFlagPosix = 16777216
+pkg syscall/zx/io, const OpenFlagPosix uint32
+pkg syscall/zx/io, const OpenFlagTruncate = 262144
+pkg syscall/zx/io, const OpenFlagTruncate uint32
+pkg syscall/zx/io, const OpenFlagsAllowedWithNodeReference = 46661632
+pkg syscall/zx/io, const OpenFlagsAllowedWithNodeReference uint32
+pkg syscall/zx/io, const OpenRightAdmin = 4
+pkg syscall/zx/io, const OpenRightAdmin uint32
+pkg syscall/zx/io, const OpenRightExecutable = 8
+pkg syscall/zx/io, const OpenRightExecutable uint32
+pkg syscall/zx/io, const OpenRightReadable = 1
+pkg syscall/zx/io, const OpenRightReadable uint32
+pkg syscall/zx/io, const OpenRightWritable = 2
+pkg syscall/zx/io, const OpenRightWritable uint32
+pkg syscall/zx/io, const SeekOriginCurrent = 1
+pkg syscall/zx/io, const SeekOriginCurrent SeekOrigin
+pkg syscall/zx/io, const SeekOriginEnd = 2
+pkg syscall/zx/io, const SeekOriginEnd SeekOrigin
+pkg syscall/zx/io, const SeekOriginStart = 0
+pkg syscall/zx/io, const SeekOriginStart SeekOrigin
+pkg syscall/zx/io, const VmoFlagExact = 131072
+pkg syscall/zx/io, const VmoFlagExact uint32
+pkg syscall/zx/io, const VmoFlagExec = 4
+pkg syscall/zx/io, const VmoFlagExec uint32
+pkg syscall/zx/io, const VmoFlagPrivate = 65536
+pkg syscall/zx/io, const VmoFlagPrivate uint32
+pkg syscall/zx/io, const VmoFlagRead = 1
+pkg syscall/zx/io, const VmoFlagRead uint32
+pkg syscall/zx/io, const VmoFlagWrite = 2
+pkg syscall/zx/io, const VmoFlagWrite uint32
+pkg syscall/zx/io, const WatchEventAdded = 1
+pkg syscall/zx/io, const WatchEventAdded uint8
+pkg syscall/zx/io, const WatchEventDeleted = 0
+pkg syscall/zx/io, const WatchEventDeleted uint8
+pkg syscall/zx/io, const WatchEventExisting = 3
+pkg syscall/zx/io, const WatchEventExisting uint8
+pkg syscall/zx/io, const WatchEventIdle = 4
+pkg syscall/zx/io, const WatchEventIdle uint8
+pkg syscall/zx/io, const WatchEventRemoved = 2
+pkg syscall/zx/io, const WatchEventRemoved uint8
+pkg syscall/zx/io, const WatchMaskAdded = 2
+pkg syscall/zx/io, const WatchMaskAdded uint32
+pkg syscall/zx/io, const WatchMaskAll = 31
+pkg syscall/zx/io, const WatchMaskAll uint32
+pkg syscall/zx/io, const WatchMaskDeleted = 1
+pkg syscall/zx/io, const WatchMaskDeleted uint32
+pkg syscall/zx/io, const WatchMaskExisting = 8
+pkg syscall/zx/io, const WatchMaskExisting uint32
+pkg syscall/zx/io, const WatchMaskIdle = 16
+pkg syscall/zx/io, const WatchMaskIdle uint32
+pkg syscall/zx/io, const WatchMaskRemoved = 4
+pkg syscall/zx/io, const WatchMaskRemoved uint32
+pkg syscall/zx/io, func DirectoryRename2ResultWithErr(int32) DirectoryRename2Result
+pkg syscall/zx/io, func DirectoryRename2ResultWithResponse(DirectoryRename2Response) DirectoryRename2Result
+pkg syscall/zx/io, func DirectoryUnlink2ResultWithErr(int32) DirectoryUnlink2Result
+pkg syscall/zx/io, func DirectoryUnlink2ResultWithResponse(DirectoryUnlink2Response) DirectoryUnlink2Result
+pkg syscall/zx/io, func NewDirectoryAdminWithCtxInterfaceRequest() (DirectoryAdminWithCtxInterfaceRequest, *DirectoryAdminWithCtxInterface, error)
+pkg syscall/zx/io, func NewDirectoryWatcherWithCtxInterfaceRequest() (DirectoryWatcherWithCtxInterfaceRequest, *DirectoryWatcherWithCtxInterface, error)
+pkg syscall/zx/io, func NewDirectoryWithCtxInterfaceRequest() (DirectoryWithCtxInterfaceRequest, *DirectoryWithCtxInterface, error)
+pkg syscall/zx/io, func NewFileWithCtxInterfaceRequest() (FileWithCtxInterfaceRequest, *FileWithCtxInterface, error)
+pkg syscall/zx/io, func NewNodeWithCtxInterfaceRequest() (NodeWithCtxInterfaceRequest, *NodeWithCtxInterface, error)
+pkg syscall/zx/io, func NodeInfoWithDatagramSocket(DatagramSocket) NodeInfo
+pkg syscall/zx/io, func NodeInfoWithDevice(Device) NodeInfo
+pkg syscall/zx/io, func NodeInfoWithDirectory(DirectoryObject) NodeInfo
+pkg syscall/zx/io, func NodeInfoWithFile(FileObject) NodeInfo
+pkg syscall/zx/io, func NodeInfoWithPipe(Pipe) NodeInfo
+pkg syscall/zx/io, func NodeInfoWithService(Service) NodeInfo
+pkg syscall/zx/io, func NodeInfoWithStreamSocket(StreamSocket) NodeInfo
+pkg syscall/zx/io, func NodeInfoWithTty(Tty) NodeInfo
+pkg syscall/zx/io, func NodeInfoWithVmofile(Vmofile) NodeInfo
+pkg syscall/zx/io, method (*DatagramSocket) Marshaler() fidl.Marshaler
+pkg syscall/zx/io, method (*Device) Marshaler() fidl.Marshaler
+pkg syscall/zx/io, method (*DirectoryAdminEventProxy) Handle() *zx.Handle
+pkg syscall/zx/io, method (*DirectoryAdminEventProxy) OnOpen(int32, *NodeInfo) error
+pkg syscall/zx/io, method (*DirectoryAdminWithCtxInterface) AddInotifyFilter(context.Context, string, io2.InotifyWatchMask, uint32, zx.Socket) error
+pkg syscall/zx/io, method (*DirectoryAdminWithCtxInterface) AdvisoryLock(context.Context, io2.AdvisoryLockRequest) (io2.AdvisoryLockingAdvisoryLockResult, error)
+pkg syscall/zx/io, method (*DirectoryAdminWithCtxInterface) Clone(context.Context, uint32, NodeWithCtxInterfaceRequest) error
+pkg syscall/zx/io, method (*DirectoryAdminWithCtxInterface) Close(context.Context) (int32, error)
+pkg syscall/zx/io, method (*DirectoryAdminWithCtxInterface) Describe(context.Context) (NodeInfo, error)
+pkg syscall/zx/io, method (*DirectoryAdminWithCtxInterface) ExpectOnOpen(context.Context) (int32, *NodeInfo, error)
+pkg syscall/zx/io, method (*DirectoryAdminWithCtxInterface) GetAttr(context.Context) (int32, NodeAttributes, error)
+pkg syscall/zx/io, method (*DirectoryAdminWithCtxInterface) GetDevicePath(context.Context) (int32, *string, error)
+pkg syscall/zx/io, method (*DirectoryAdminWithCtxInterface) GetToken(context.Context) (int32, zx.Handle, error)
+pkg syscall/zx/io, method (*DirectoryAdminWithCtxInterface) Handle() *zx.Handle
+pkg syscall/zx/io, method (*DirectoryAdminWithCtxInterface) Link(context.Context, string, zx.Handle, string) (int32, error)
+pkg syscall/zx/io, method (*DirectoryAdminWithCtxInterface) Mount(context.Context, DirectoryWithCtxInterface) (int32, error)
+pkg syscall/zx/io, method (*DirectoryAdminWithCtxInterface) MountAndCreate(context.Context, DirectoryWithCtxInterface, string, uint32) (int32, error)
+pkg syscall/zx/io, method (*DirectoryAdminWithCtxInterface) NodeGetFlags(context.Context) (int32, uint32, error)
+pkg syscall/zx/io, method (*DirectoryAdminWithCtxInterface) NodeSetFlags(context.Context, uint32) (int32, error)
+pkg syscall/zx/io, method (*DirectoryAdminWithCtxInterface) Open(context.Context, uint32, uint32, string, NodeWithCtxInterfaceRequest) error
+pkg syscall/zx/io, method (*DirectoryAdminWithCtxInterface) QueryFilesystem(context.Context) (int32, *FilesystemInfo, error)
+pkg syscall/zx/io, method (*DirectoryAdminWithCtxInterface) ReadDirents(context.Context, uint64) (int32, []uint8, error)
+pkg syscall/zx/io, method (*DirectoryAdminWithCtxInterface) Rename(context.Context, string, zx.Handle, string) (int32, error)
+pkg syscall/zx/io, method (*DirectoryAdminWithCtxInterface) Rename2(context.Context, string, zx.Event, string) (DirectoryRename2Result, error)
+pkg syscall/zx/io, method (*DirectoryAdminWithCtxInterface) Rewind(context.Context) (int32, error)
+pkg syscall/zx/io, method (*DirectoryAdminWithCtxInterface) SetAttr(context.Context, uint32, NodeAttributes) (int32, error)
+pkg syscall/zx/io, method (*DirectoryAdminWithCtxInterface) Sync(context.Context) (int32, error)
+pkg syscall/zx/io, method (*DirectoryAdminWithCtxInterface) Unlink(context.Context, string) (int32, error)
+pkg syscall/zx/io, method (*DirectoryAdminWithCtxInterface) Unlink2(context.Context, string, io2.UnlinkOptions) (DirectoryUnlink2Result, error)
+pkg syscall/zx/io, method (*DirectoryAdminWithCtxInterface) Unmount(context.Context) (int32, error)
+pkg syscall/zx/io, method (*DirectoryAdminWithCtxInterface) UnmountNode(context.Context) (int32, DirectoryWithCtxInterface, error)
+pkg syscall/zx/io, method (*DirectoryAdminWithCtxInterface) Watch(context.Context, uint32, uint32, zx.Channel) (int32, error)
+pkg syscall/zx/io, method (*DirectoryAdminWithCtxInterfaceRequest) Handle() *zx.Handle
+pkg syscall/zx/io, method (*DirectoryAdminWithCtxStub) Dispatch(fidl.DispatchArgs) (fidl.Message, bool, error)
+pkg syscall/zx/io, method (*DirectoryAdminWithCtxTransitionalBase) AdvisoryLock(context.Context, io2.AdvisoryLockRequest) (io2.AdvisoryLockingAdvisoryLockResult, error)
+pkg syscall/zx/io, method (*DirectoryAdminWithCtxTransitionalBase) NodeGetFlags(context.Context) (int32, uint32, error)
+pkg syscall/zx/io, method (*DirectoryAdminWithCtxTransitionalBase) NodeSetFlags(context.Context, uint32) (int32, error)
+pkg syscall/zx/io, method (*DirectoryAdminWithCtxTransitionalBase) Rename(context.Context, string, zx.Handle, string) (int32, error)
+pkg syscall/zx/io, method (*DirectoryAdminWithCtxTransitionalBase) Unlink2(context.Context, string, io2.UnlinkOptions) (DirectoryUnlink2Result, error)
+pkg syscall/zx/io, method (*DirectoryEventProxy) Handle() *zx.Handle
+pkg syscall/zx/io, method (*DirectoryEventProxy) OnOpen(int32, *NodeInfo) error
+pkg syscall/zx/io, method (*DirectoryObject) Marshaler() fidl.Marshaler
+pkg syscall/zx/io, method (*DirectoryRename2Response) Marshaler() fidl.Marshaler
+pkg syscall/zx/io, method (*DirectoryRename2Result) Ordinal() uint64
+pkg syscall/zx/io, method (*DirectoryRename2Result) SetErr(int32)
+pkg syscall/zx/io, method (*DirectoryRename2Result) SetResponse(DirectoryRename2Response)
+pkg syscall/zx/io, method (*DirectoryRename2Result) Which() I_directoryRename2ResultTag
+pkg syscall/zx/io, method (*DirectoryUnlink2Response) Marshaler() fidl.Marshaler
+pkg syscall/zx/io, method (*DirectoryUnlink2Result) Ordinal() uint64
+pkg syscall/zx/io, method (*DirectoryUnlink2Result) SetErr(int32)
+pkg syscall/zx/io, method (*DirectoryUnlink2Result) SetResponse(DirectoryUnlink2Response)
+pkg syscall/zx/io, method (*DirectoryUnlink2Result) Which() I_directoryUnlink2ResultTag
+pkg syscall/zx/io, method (*DirectoryWatcherEventProxy) Handle() *zx.Handle
+pkg syscall/zx/io, method (*DirectoryWatcherWithCtxInterface) Handle() *zx.Handle
+pkg syscall/zx/io, method (*DirectoryWatcherWithCtxInterface) OnEvent(context.Context, []uint8) error
+pkg syscall/zx/io, method (*DirectoryWatcherWithCtxInterfaceRequest) Handle() *zx.Handle
+pkg syscall/zx/io, method (*DirectoryWatcherWithCtxStub) Dispatch(fidl.DispatchArgs) (fidl.Message, bool, error)
+pkg syscall/zx/io, method (*DirectoryWithCtxInterface) AddInotifyFilter(context.Context, string, io2.InotifyWatchMask, uint32, zx.Socket) error
+pkg syscall/zx/io, method (*DirectoryWithCtxInterface) AdvisoryLock(context.Context, io2.AdvisoryLockRequest) (io2.AdvisoryLockingAdvisoryLockResult, error)
+pkg syscall/zx/io, method (*DirectoryWithCtxInterface) Clone(context.Context, uint32, NodeWithCtxInterfaceRequest) error
+pkg syscall/zx/io, method (*DirectoryWithCtxInterface) Close(context.Context) (int32, error)
+pkg syscall/zx/io, method (*DirectoryWithCtxInterface) Describe(context.Context) (NodeInfo, error)
+pkg syscall/zx/io, method (*DirectoryWithCtxInterface) ExpectOnOpen(context.Context) (int32, *NodeInfo, error)
+pkg syscall/zx/io, method (*DirectoryWithCtxInterface) GetAttr(context.Context) (int32, NodeAttributes, error)
+pkg syscall/zx/io, method (*DirectoryWithCtxInterface) GetToken(context.Context) (int32, zx.Handle, error)
+pkg syscall/zx/io, method (*DirectoryWithCtxInterface) Handle() *zx.Handle
+pkg syscall/zx/io, method (*DirectoryWithCtxInterface) Link(context.Context, string, zx.Handle, string) (int32, error)
+pkg syscall/zx/io, method (*DirectoryWithCtxInterface) NodeGetFlags(context.Context) (int32, uint32, error)
+pkg syscall/zx/io, method (*DirectoryWithCtxInterface) NodeSetFlags(context.Context, uint32) (int32, error)
+pkg syscall/zx/io, method (*DirectoryWithCtxInterface) Open(context.Context, uint32, uint32, string, NodeWithCtxInterfaceRequest) error
+pkg syscall/zx/io, method (*DirectoryWithCtxInterface) ReadDirents(context.Context, uint64) (int32, []uint8, error)
+pkg syscall/zx/io, method (*DirectoryWithCtxInterface) Rename(context.Context, string, zx.Handle, string) (int32, error)
+pkg syscall/zx/io, method (*DirectoryWithCtxInterface) Rename2(context.Context, string, zx.Event, string) (DirectoryRename2Result, error)
+pkg syscall/zx/io, method (*DirectoryWithCtxInterface) Rewind(context.Context) (int32, error)
+pkg syscall/zx/io, method (*DirectoryWithCtxInterface) SetAttr(context.Context, uint32, NodeAttributes) (int32, error)
+pkg syscall/zx/io, method (*DirectoryWithCtxInterface) Sync(context.Context) (int32, error)
+pkg syscall/zx/io, method (*DirectoryWithCtxInterface) Unlink(context.Context, string) (int32, error)
+pkg syscall/zx/io, method (*DirectoryWithCtxInterface) Unlink2(context.Context, string, io2.UnlinkOptions) (DirectoryUnlink2Result, error)
+pkg syscall/zx/io, method (*DirectoryWithCtxInterface) Watch(context.Context, uint32, uint32, zx.Channel) (int32, error)
+pkg syscall/zx/io, method (*DirectoryWithCtxInterfaceRequest) Handle() *zx.Handle
+pkg syscall/zx/io, method (*DirectoryWithCtxStub) Dispatch(fidl.DispatchArgs) (fidl.Message, bool, error)
+pkg syscall/zx/io, method (*DirectoryWithCtxTransitionalBase) AdvisoryLock(context.Context, io2.AdvisoryLockRequest) (io2.AdvisoryLockingAdvisoryLockResult, error)
+pkg syscall/zx/io, method (*DirectoryWithCtxTransitionalBase) NodeGetFlags(context.Context) (int32, uint32, error)
+pkg syscall/zx/io, method (*DirectoryWithCtxTransitionalBase) NodeSetFlags(context.Context, uint32) (int32, error)
+pkg syscall/zx/io, method (*DirectoryWithCtxTransitionalBase) Rename(context.Context, string, zx.Handle, string) (int32, error)
+pkg syscall/zx/io, method (*DirectoryWithCtxTransitionalBase) Unlink2(context.Context, string, io2.UnlinkOptions) (DirectoryUnlink2Result, error)
+pkg syscall/zx/io, method (*FileEventProxy) Handle() *zx.Handle
+pkg syscall/zx/io, method (*FileEventProxy) OnOpen(int32, *NodeInfo) error
+pkg syscall/zx/io, method (*FileObject) Marshaler() fidl.Marshaler
+pkg syscall/zx/io, method (*FileWithCtxInterface) AdvisoryLock(context.Context, io2.AdvisoryLockRequest) (io2.AdvisoryLockingAdvisoryLockResult, error)
+pkg syscall/zx/io, method (*FileWithCtxInterface) Clone(context.Context, uint32, NodeWithCtxInterfaceRequest) error
+pkg syscall/zx/io, method (*FileWithCtxInterface) Close(context.Context) (int32, error)
+pkg syscall/zx/io, method (*FileWithCtxInterface) Describe(context.Context) (NodeInfo, error)
+pkg syscall/zx/io, method (*FileWithCtxInterface) ExpectOnOpen(context.Context) (int32, *NodeInfo, error)
+pkg syscall/zx/io, method (*FileWithCtxInterface) GetAttr(context.Context) (int32, NodeAttributes, error)
+pkg syscall/zx/io, method (*FileWithCtxInterface) GetBuffer(context.Context, uint32) (int32, *mem.Buffer, error)
+pkg syscall/zx/io, method (*FileWithCtxInterface) GetFlags(context.Context) (int32, uint32, error)
+pkg syscall/zx/io, method (*FileWithCtxInterface) Handle() *zx.Handle
+pkg syscall/zx/io, method (*FileWithCtxInterface) NodeGetFlags(context.Context) (int32, uint32, error)
+pkg syscall/zx/io, method (*FileWithCtxInterface) NodeSetFlags(context.Context, uint32) (int32, error)
+pkg syscall/zx/io, method (*FileWithCtxInterface) Read(context.Context, uint64) (int32, []uint8, error)
+pkg syscall/zx/io, method (*FileWithCtxInterface) ReadAt(context.Context, uint64, uint64) (int32, []uint8, error)
+pkg syscall/zx/io, method (*FileWithCtxInterface) Seek(context.Context, int64, SeekOrigin) (int32, uint64, error)
+pkg syscall/zx/io, method (*FileWithCtxInterface) SetAttr(context.Context, uint32, NodeAttributes) (int32, error)
+pkg syscall/zx/io, method (*FileWithCtxInterface) SetFlags(context.Context, uint32) (int32, error)
+pkg syscall/zx/io, method (*FileWithCtxInterface) Sync(context.Context) (int32, error)
+pkg syscall/zx/io, method (*FileWithCtxInterface) Truncate(context.Context, uint64) (int32, error)
+pkg syscall/zx/io, method (*FileWithCtxInterface) Write(context.Context, []uint8) (int32, uint64, error)
+pkg syscall/zx/io, method (*FileWithCtxInterface) WriteAt(context.Context, []uint8, uint64) (int32, uint64, error)
+pkg syscall/zx/io, method (*FileWithCtxInterfaceRequest) Handle() *zx.Handle
+pkg syscall/zx/io, method (*FileWithCtxStub) Dispatch(fidl.DispatchArgs) (fidl.Message, bool, error)
+pkg syscall/zx/io, method (*FileWithCtxTransitionalBase) AdvisoryLock(context.Context, io2.AdvisoryLockRequest) (io2.AdvisoryLockingAdvisoryLockResult, error)
+pkg syscall/zx/io, method (*FileWithCtxTransitionalBase) NodeGetFlags(context.Context) (int32, uint32, error)
+pkg syscall/zx/io, method (*FileWithCtxTransitionalBase) NodeSetFlags(context.Context, uint32) (int32, error)
+pkg syscall/zx/io, method (*FilesystemInfo) Marshaler() fidl.Marshaler
+pkg syscall/zx/io, method (*NodeAttributes) Marshaler() fidl.Marshaler
+pkg syscall/zx/io, method (*NodeEventProxy) Handle() *zx.Handle
+pkg syscall/zx/io, method (*NodeEventProxy) OnOpen(int32, *NodeInfo) error
+pkg syscall/zx/io, method (*NodeInfo) Ordinal() uint64
+pkg syscall/zx/io, method (*NodeInfo) SetDatagramSocket(DatagramSocket)
+pkg syscall/zx/io, method (*NodeInfo) SetDevice(Device)
+pkg syscall/zx/io, method (*NodeInfo) SetDirectory(DirectoryObject)
+pkg syscall/zx/io, method (*NodeInfo) SetFile(FileObject)
+pkg syscall/zx/io, method (*NodeInfo) SetPipe(Pipe)
+pkg syscall/zx/io, method (*NodeInfo) SetService(Service)
+pkg syscall/zx/io, method (*NodeInfo) SetStreamSocket(StreamSocket)
+pkg syscall/zx/io, method (*NodeInfo) SetTty(Tty)
+pkg syscall/zx/io, method (*NodeInfo) SetVmofile(Vmofile)
+pkg syscall/zx/io, method (*NodeInfo) Which() I_nodeInfoTag
+pkg syscall/zx/io, method (*NodeWithCtxInterface) Clone(context.Context, uint32, NodeWithCtxInterfaceRequest) error
+pkg syscall/zx/io, method (*NodeWithCtxInterface) Close(context.Context) (int32, error)
+pkg syscall/zx/io, method (*NodeWithCtxInterface) Describe(context.Context) (NodeInfo, error)
+pkg syscall/zx/io, method (*NodeWithCtxInterface) ExpectOnOpen(context.Context) (int32, *NodeInfo, error)
+pkg syscall/zx/io, method (*NodeWithCtxInterface) GetAttr(context.Context) (int32, NodeAttributes, error)
+pkg syscall/zx/io, method (*NodeWithCtxInterface) Handle() *zx.Handle
+pkg syscall/zx/io, method (*NodeWithCtxInterface) NodeGetFlags(context.Context) (int32, uint32, error)
+pkg syscall/zx/io, method (*NodeWithCtxInterface) NodeSetFlags(context.Context, uint32) (int32, error)
+pkg syscall/zx/io, method (*NodeWithCtxInterface) SetAttr(context.Context, uint32, NodeAttributes) (int32, error)
+pkg syscall/zx/io, method (*NodeWithCtxInterface) Sync(context.Context) (int32, error)
+pkg syscall/zx/io, method (*NodeWithCtxInterfaceRequest) Handle() *zx.Handle
+pkg syscall/zx/io, method (*NodeWithCtxStub) Dispatch(fidl.DispatchArgs) (fidl.Message, bool, error)
+pkg syscall/zx/io, method (*NodeWithCtxTransitionalBase) NodeGetFlags(context.Context) (int32, uint32, error)
+pkg syscall/zx/io, method (*NodeWithCtxTransitionalBase) NodeSetFlags(context.Context, uint32) (int32, error)
+pkg syscall/zx/io, method (*Pipe) Marshaler() fidl.Marshaler
+pkg syscall/zx/io, method (*Service) Marshaler() fidl.Marshaler
+pkg syscall/zx/io, method (*StreamSocket) Marshaler() fidl.Marshaler
+pkg syscall/zx/io, method (*Tty) Marshaler() fidl.Marshaler
+pkg syscall/zx/io, method (*Vmofile) Marshaler() fidl.Marshaler
+pkg syscall/zx/io, method (*WatchedEvent) Marshaler() fidl.Marshaler
+pkg syscall/zx/io, method (SeekOrigin) I_EnumIsStrict() bool
+pkg syscall/zx/io, method (SeekOrigin) I_EnumValues() []SeekOrigin
+pkg syscall/zx/io, method (SeekOrigin) IsUnknown() bool
+pkg syscall/zx/io, method (SeekOrigin) String() string
+pkg syscall/zx/io, type DatagramSocket struct
+pkg syscall/zx/io, type DatagramSocket struct, Event zx.Handle
+pkg syscall/zx/io, type Device struct
+pkg syscall/zx/io, type Device struct, Event zx.Handle
+pkg syscall/zx/io, type DirectoryAdminEventProxy struct
+pkg syscall/zx/io, type DirectoryAdminEventProxy struct, embedded zx.Channel
+pkg syscall/zx/io, type DirectoryAdminWithCtx interface { AddInotifyFilter, AdvisoryLock, Clone, Close, Describe, GetAttr, GetDevicePath, GetToken, Link, Mount, MountAndCreate, NodeGetFlags, NodeSetFlags, Open, QueryFilesystem, ReadDirents, Rename, Rename2, Rewind, SetAttr, Sync, Unlink, Unlink2, Unmount, UnmountNode, Watch }
+pkg syscall/zx/io, type DirectoryAdminWithCtx interface, AddInotifyFilter(context.Context, string, io2.InotifyWatchMask, uint32, zx.Socket) error
+pkg syscall/zx/io, type DirectoryAdminWithCtx interface, AdvisoryLock(context.Context, io2.AdvisoryLockRequest) (io2.AdvisoryLockingAdvisoryLockResult, error)
+pkg syscall/zx/io, type DirectoryAdminWithCtx interface, Clone(context.Context, uint32, NodeWithCtxInterfaceRequest) error
+pkg syscall/zx/io, type DirectoryAdminWithCtx interface, Close(context.Context) (int32, error)
+pkg syscall/zx/io, type DirectoryAdminWithCtx interface, Describe(context.Context) (NodeInfo, error)
+pkg syscall/zx/io, type DirectoryAdminWithCtx interface, GetAttr(context.Context) (int32, NodeAttributes, error)
+pkg syscall/zx/io, type DirectoryAdminWithCtx interface, GetDevicePath(context.Context) (int32, *string, error)
+pkg syscall/zx/io, type DirectoryAdminWithCtx interface, GetToken(context.Context) (int32, zx.Handle, error)
+pkg syscall/zx/io, type DirectoryAdminWithCtx interface, Link(context.Context, string, zx.Handle, string) (int32, error)
+pkg syscall/zx/io, type DirectoryAdminWithCtx interface, Mount(context.Context, DirectoryWithCtxInterface) (int32, error)
+pkg syscall/zx/io, type DirectoryAdminWithCtx interface, MountAndCreate(context.Context, DirectoryWithCtxInterface, string, uint32) (int32, error)
+pkg syscall/zx/io, type DirectoryAdminWithCtx interface, NodeGetFlags(context.Context) (int32, uint32, error)
+pkg syscall/zx/io, type DirectoryAdminWithCtx interface, NodeSetFlags(context.Context, uint32) (int32, error)
+pkg syscall/zx/io, type DirectoryAdminWithCtx interface, Open(context.Context, uint32, uint32, string, NodeWithCtxInterfaceRequest) error
+pkg syscall/zx/io, type DirectoryAdminWithCtx interface, QueryFilesystem(context.Context) (int32, *FilesystemInfo, error)
+pkg syscall/zx/io, type DirectoryAdminWithCtx interface, ReadDirents(context.Context, uint64) (int32, []uint8, error)
+pkg syscall/zx/io, type DirectoryAdminWithCtx interface, Rename(context.Context, string, zx.Handle, string) (int32, error)
+pkg syscall/zx/io, type DirectoryAdminWithCtx interface, Rename2(context.Context, string, zx.Event, string) (DirectoryRename2Result, error)
+pkg syscall/zx/io, type DirectoryAdminWithCtx interface, Rewind(context.Context) (int32, error)
+pkg syscall/zx/io, type DirectoryAdminWithCtx interface, SetAttr(context.Context, uint32, NodeAttributes) (int32, error)
+pkg syscall/zx/io, type DirectoryAdminWithCtx interface, Sync(context.Context) (int32, error)
+pkg syscall/zx/io, type DirectoryAdminWithCtx interface, Unlink(context.Context, string) (int32, error)
+pkg syscall/zx/io, type DirectoryAdminWithCtx interface, Unlink2(context.Context, string, io2.UnlinkOptions) (DirectoryUnlink2Result, error)
+pkg syscall/zx/io, type DirectoryAdminWithCtx interface, Unmount(context.Context) (int32, error)
+pkg syscall/zx/io, type DirectoryAdminWithCtx interface, UnmountNode(context.Context) (int32, DirectoryWithCtxInterface, error)
+pkg syscall/zx/io, type DirectoryAdminWithCtx interface, Watch(context.Context, uint32, uint32, zx.Channel) (int32, error)
+pkg syscall/zx/io, type DirectoryAdminWithCtxInterface struct
+pkg syscall/zx/io, type DirectoryAdminWithCtxInterface struct, embedded zx.Channel
+pkg syscall/zx/io, type DirectoryAdminWithCtxInterfaceRequest struct
+pkg syscall/zx/io, type DirectoryAdminWithCtxInterfaceRequest struct, embedded zx.Channel
+pkg syscall/zx/io, type DirectoryAdminWithCtxStub struct
+pkg syscall/zx/io, type DirectoryAdminWithCtxStub struct, Impl DirectoryAdminWithCtx
+pkg syscall/zx/io, type DirectoryAdminWithCtxTransitionalBase struct
+pkg syscall/zx/io, type DirectoryEventProxy struct
+pkg syscall/zx/io, type DirectoryEventProxy struct, embedded zx.Channel
+pkg syscall/zx/io, type DirectoryObject struct
+pkg syscall/zx/io, type DirectoryRename2Response struct
+pkg syscall/zx/io, type DirectoryRename2Result struct
+pkg syscall/zx/io, type DirectoryRename2Result struct, Err int32
+pkg syscall/zx/io, type DirectoryRename2Result struct, Response DirectoryRename2Response
+pkg syscall/zx/io, type DirectoryRename2Result struct, embedded I_directoryRename2ResultTag
+pkg syscall/zx/io, type DirectoryUnlink2Response struct
+pkg syscall/zx/io, type DirectoryUnlink2Result struct
+pkg syscall/zx/io, type DirectoryUnlink2Result struct, Err int32
+pkg syscall/zx/io, type DirectoryUnlink2Result struct, Response DirectoryUnlink2Response
+pkg syscall/zx/io, type DirectoryUnlink2Result struct, embedded I_directoryUnlink2ResultTag
+pkg syscall/zx/io, type DirectoryWatcherEventProxy struct
+pkg syscall/zx/io, type DirectoryWatcherEventProxy struct, embedded zx.Channel
+pkg syscall/zx/io, type DirectoryWatcherWithCtx interface { OnEvent }
+pkg syscall/zx/io, type DirectoryWatcherWithCtx interface, OnEvent(context.Context, []uint8) error
+pkg syscall/zx/io, type DirectoryWatcherWithCtxInterface struct
+pkg syscall/zx/io, type DirectoryWatcherWithCtxInterface struct, embedded zx.Channel
+pkg syscall/zx/io, type DirectoryWatcherWithCtxInterfaceRequest struct
+pkg syscall/zx/io, type DirectoryWatcherWithCtxInterfaceRequest struct, embedded zx.Channel
+pkg syscall/zx/io, type DirectoryWatcherWithCtxStub struct
+pkg syscall/zx/io, type DirectoryWatcherWithCtxStub struct, Impl DirectoryWatcherWithCtx
+pkg syscall/zx/io, type DirectoryWatcherWithCtxTransitionalBase struct
+pkg syscall/zx/io, type DirectoryWithCtx interface { AddInotifyFilter, AdvisoryLock, Clone, Close, Describe, GetAttr, GetToken, Link, NodeGetFlags, NodeSetFlags, Open, ReadDirents, Rename, Rename2, Rewind, SetAttr, Sync, Unlink, Unlink2, Watch }
+pkg syscall/zx/io, type DirectoryWithCtx interface, AddInotifyFilter(context.Context, string, io2.InotifyWatchMask, uint32, zx.Socket) error
+pkg syscall/zx/io, type DirectoryWithCtx interface, AdvisoryLock(context.Context, io2.AdvisoryLockRequest) (io2.AdvisoryLockingAdvisoryLockResult, error)
+pkg syscall/zx/io, type DirectoryWithCtx interface, Clone(context.Context, uint32, NodeWithCtxInterfaceRequest) error
+pkg syscall/zx/io, type DirectoryWithCtx interface, Close(context.Context) (int32, error)
+pkg syscall/zx/io, type DirectoryWithCtx interface, Describe(context.Context) (NodeInfo, error)
+pkg syscall/zx/io, type DirectoryWithCtx interface, GetAttr(context.Context) (int32, NodeAttributes, error)
+pkg syscall/zx/io, type DirectoryWithCtx interface, GetToken(context.Context) (int32, zx.Handle, error)
+pkg syscall/zx/io, type DirectoryWithCtx interface, Link(context.Context, string, zx.Handle, string) (int32, error)
+pkg syscall/zx/io, type DirectoryWithCtx interface, NodeGetFlags(context.Context) (int32, uint32, error)
+pkg syscall/zx/io, type DirectoryWithCtx interface, NodeSetFlags(context.Context, uint32) (int32, error)
+pkg syscall/zx/io, type DirectoryWithCtx interface, Open(context.Context, uint32, uint32, string, NodeWithCtxInterfaceRequest) error
+pkg syscall/zx/io, type DirectoryWithCtx interface, ReadDirents(context.Context, uint64) (int32, []uint8, error)
+pkg syscall/zx/io, type DirectoryWithCtx interface, Rename(context.Context, string, zx.Handle, string) (int32, error)
+pkg syscall/zx/io, type DirectoryWithCtx interface, Rename2(context.Context, string, zx.Event, string) (DirectoryRename2Result, error)
+pkg syscall/zx/io, type DirectoryWithCtx interface, Rewind(context.Context) (int32, error)
+pkg syscall/zx/io, type DirectoryWithCtx interface, SetAttr(context.Context, uint32, NodeAttributes) (int32, error)
+pkg syscall/zx/io, type DirectoryWithCtx interface, Sync(context.Context) (int32, error)
+pkg syscall/zx/io, type DirectoryWithCtx interface, Unlink(context.Context, string) (int32, error)
+pkg syscall/zx/io, type DirectoryWithCtx interface, Unlink2(context.Context, string, io2.UnlinkOptions) (DirectoryUnlink2Result, error)
+pkg syscall/zx/io, type DirectoryWithCtx interface, Watch(context.Context, uint32, uint32, zx.Channel) (int32, error)
+pkg syscall/zx/io, type DirectoryWithCtxInterface struct
+pkg syscall/zx/io, type DirectoryWithCtxInterface struct, embedded zx.Channel
+pkg syscall/zx/io, type DirectoryWithCtxInterfaceRequest struct
+pkg syscall/zx/io, type DirectoryWithCtxInterfaceRequest struct, embedded zx.Channel
+pkg syscall/zx/io, type DirectoryWithCtxStub struct
+pkg syscall/zx/io, type DirectoryWithCtxStub struct, Impl DirectoryWithCtx
+pkg syscall/zx/io, type DirectoryWithCtxTransitionalBase struct
+pkg syscall/zx/io, type FileEventProxy struct
+pkg syscall/zx/io, type FileEventProxy struct, embedded zx.Channel
+pkg syscall/zx/io, type FileObject struct
+pkg syscall/zx/io, type FileObject struct, Event zx.Event
+pkg syscall/zx/io, type FileObject struct, Stream zx.Handle
+pkg syscall/zx/io, type FileWithCtx interface { AdvisoryLock, Clone, Close, Describe, GetAttr, GetBuffer, GetFlags, NodeGetFlags, NodeSetFlags, Read, ReadAt, Seek, SetAttr, SetFlags, Sync, Truncate, Write, WriteAt }
+pkg syscall/zx/io, type FileWithCtx interface, AdvisoryLock(context.Context, io2.AdvisoryLockRequest) (io2.AdvisoryLockingAdvisoryLockResult, error)
+pkg syscall/zx/io, type FileWithCtx interface, Clone(context.Context, uint32, NodeWithCtxInterfaceRequest) error
+pkg syscall/zx/io, type FileWithCtx interface, Close(context.Context) (int32, error)
+pkg syscall/zx/io, type FileWithCtx interface, Describe(context.Context) (NodeInfo, error)
+pkg syscall/zx/io, type FileWithCtx interface, GetAttr(context.Context) (int32, NodeAttributes, error)
+pkg syscall/zx/io, type FileWithCtx interface, GetBuffer(context.Context, uint32) (int32, *mem.Buffer, error)
+pkg syscall/zx/io, type FileWithCtx interface, GetFlags(context.Context) (int32, uint32, error)
+pkg syscall/zx/io, type FileWithCtx interface, NodeGetFlags(context.Context) (int32, uint32, error)
+pkg syscall/zx/io, type FileWithCtx interface, NodeSetFlags(context.Context, uint32) (int32, error)
+pkg syscall/zx/io, type FileWithCtx interface, Read(context.Context, uint64) (int32, []uint8, error)
+pkg syscall/zx/io, type FileWithCtx interface, ReadAt(context.Context, uint64, uint64) (int32, []uint8, error)
+pkg syscall/zx/io, type FileWithCtx interface, Seek(context.Context, int64, SeekOrigin) (int32, uint64, error)
+pkg syscall/zx/io, type FileWithCtx interface, SetAttr(context.Context, uint32, NodeAttributes) (int32, error)
+pkg syscall/zx/io, type FileWithCtx interface, SetFlags(context.Context, uint32) (int32, error)
+pkg syscall/zx/io, type FileWithCtx interface, Sync(context.Context) (int32, error)
+pkg syscall/zx/io, type FileWithCtx interface, Truncate(context.Context, uint64) (int32, error)
+pkg syscall/zx/io, type FileWithCtx interface, Write(context.Context, []uint8) (int32, uint64, error)
+pkg syscall/zx/io, type FileWithCtx interface, WriteAt(context.Context, []uint8, uint64) (int32, uint64, error)
+pkg syscall/zx/io, type FileWithCtxInterface struct
+pkg syscall/zx/io, type FileWithCtxInterface struct, embedded zx.Channel
+pkg syscall/zx/io, type FileWithCtxInterfaceRequest struct
+pkg syscall/zx/io, type FileWithCtxInterfaceRequest struct, embedded zx.Channel
+pkg syscall/zx/io, type FileWithCtxStub struct
+pkg syscall/zx/io, type FileWithCtxStub struct, Impl FileWithCtx
+pkg syscall/zx/io, type FileWithCtxTransitionalBase struct
+pkg syscall/zx/io, type FilesystemInfo struct
+pkg syscall/zx/io, type FilesystemInfo struct, BlockSize uint32
+pkg syscall/zx/io, type FilesystemInfo struct, FreeSharedPoolBytes uint64
+pkg syscall/zx/io, type FilesystemInfo struct, FsId uint64
+pkg syscall/zx/io, type FilesystemInfo struct, FsType uint32
+pkg syscall/zx/io, type FilesystemInfo struct, MaxFilenameSize uint32
+pkg syscall/zx/io, type FilesystemInfo struct, Name [32]int8
+pkg syscall/zx/io, type FilesystemInfo struct, Padding uint32
+pkg syscall/zx/io, type FilesystemInfo struct, TotalBytes uint64
+pkg syscall/zx/io, type FilesystemInfo struct, TotalNodes uint64
+pkg syscall/zx/io, type FilesystemInfo struct, UsedBytes uint64
+pkg syscall/zx/io, type FilesystemInfo struct, UsedNodes uint64
+pkg syscall/zx/io, type I_directoryRename2ResultTag uint64
+pkg syscall/zx/io, type I_directoryUnlink2ResultTag uint64
+pkg syscall/zx/io, type I_nodeInfoTag uint64
+pkg syscall/zx/io, type NodeAttributes struct
+pkg syscall/zx/io, type NodeAttributes struct, ContentSize uint64
+pkg syscall/zx/io, type NodeAttributes struct, CreationTime uint64
+pkg syscall/zx/io, type NodeAttributes struct, Id uint64
+pkg syscall/zx/io, type NodeAttributes struct, LinkCount uint64
+pkg syscall/zx/io, type NodeAttributes struct, Mode uint32
+pkg syscall/zx/io, type NodeAttributes struct, ModificationTime uint64
+pkg syscall/zx/io, type NodeAttributes struct, StorageSize uint64
+pkg syscall/zx/io, type NodeEventProxy struct
+pkg syscall/zx/io, type NodeEventProxy struct, embedded zx.Channel
+pkg syscall/zx/io, type NodeInfo struct
+pkg syscall/zx/io, type NodeInfo struct, DatagramSocket DatagramSocket
+pkg syscall/zx/io, type NodeInfo struct, Device Device
+pkg syscall/zx/io, type NodeInfo struct, Directory DirectoryObject
+pkg syscall/zx/io, type NodeInfo struct, File FileObject
+pkg syscall/zx/io, type NodeInfo struct, Pipe Pipe
+pkg syscall/zx/io, type NodeInfo struct, Service Service
+pkg syscall/zx/io, type NodeInfo struct, StreamSocket StreamSocket
+pkg syscall/zx/io, type NodeInfo struct, Tty Tty
+pkg syscall/zx/io, type NodeInfo struct, Vmofile Vmofile
+pkg syscall/zx/io, type NodeInfo struct, embedded I_nodeInfoTag
+pkg syscall/zx/io, type NodeWithCtx interface { Clone, Close, Describe, GetAttr, NodeGetFlags, NodeSetFlags, SetAttr, Sync }
+pkg syscall/zx/io, type NodeWithCtx interface, Clone(context.Context, uint32, NodeWithCtxInterfaceRequest) error
+pkg syscall/zx/io, type NodeWithCtx interface, Close(context.Context) (int32, error)
+pkg syscall/zx/io, type NodeWithCtx interface, Describe(context.Context) (NodeInfo, error)
+pkg syscall/zx/io, type NodeWithCtx interface, GetAttr(context.Context) (int32, NodeAttributes, error)
+pkg syscall/zx/io, type NodeWithCtx interface, NodeGetFlags(context.Context) (int32, uint32, error)
+pkg syscall/zx/io, type NodeWithCtx interface, NodeSetFlags(context.Context, uint32) (int32, error)
+pkg syscall/zx/io, type NodeWithCtx interface, SetAttr(context.Context, uint32, NodeAttributes) (int32, error)
+pkg syscall/zx/io, type NodeWithCtx interface, Sync(context.Context) (int32, error)
+pkg syscall/zx/io, type NodeWithCtxInterface struct
+pkg syscall/zx/io, type NodeWithCtxInterface struct, embedded zx.Channel
+pkg syscall/zx/io, type NodeWithCtxInterfaceRequest struct
+pkg syscall/zx/io, type NodeWithCtxInterfaceRequest struct, embedded zx.Channel
+pkg syscall/zx/io, type NodeWithCtxStub struct
+pkg syscall/zx/io, type NodeWithCtxStub struct, Impl NodeWithCtx
+pkg syscall/zx/io, type NodeWithCtxTransitionalBase struct
+pkg syscall/zx/io, type Pipe struct
+pkg syscall/zx/io, type Pipe struct, Socket zx.Socket
+pkg syscall/zx/io, type SeekOrigin uint32
+pkg syscall/zx/io, type Service struct
+pkg syscall/zx/io, type StreamSocket struct
+pkg syscall/zx/io, type StreamSocket struct, Socket zx.Socket
+pkg syscall/zx/io, type Tty struct
+pkg syscall/zx/io, type Tty struct, Event zx.Handle
+pkg syscall/zx/io, type Vmofile struct
+pkg syscall/zx/io, type Vmofile struct, Length uint64
+pkg syscall/zx/io, type Vmofile struct, Offset uint64
+pkg syscall/zx/io, type Vmofile struct, Vmo zx.VMO
+pkg syscall/zx/io, type WatchedEvent struct
+pkg syscall/zx/io, type WatchedEvent struct, Event uint8
+pkg syscall/zx/io, type WatchedEvent struct, Len uint8
+pkg syscall/zx/io, type WatchedEvent struct, Name []uint8
+pkg syscall/zx/io2, const AdvisoryLockTypeRead = 1
+pkg syscall/zx/io2, const AdvisoryLockTypeRead AdvisoryLockType
+pkg syscall/zx/io2, const AdvisoryLockTypeUnlock = 3
+pkg syscall/zx/io2, const AdvisoryLockTypeUnlock AdvisoryLockType
+pkg syscall/zx/io2, const AdvisoryLockTypeWrite = 2
+pkg syscall/zx/io2, const AdvisoryLockTypeWrite AdvisoryLockType
+pkg syscall/zx/io2, const AdvisoryLockingAdvisoryLockOrdinal = 7158728121514993402
+pkg syscall/zx/io2, const AdvisoryLockingAdvisoryLockOrdinal uint64
+pkg syscall/zx/io2, const AdvisoryLockingAdvisoryLockResultErr = 2
+pkg syscall/zx/io2, const AdvisoryLockingAdvisoryLockResultErr ideal-int
+pkg syscall/zx/io2, const AdvisoryLockingAdvisoryLockResultResponse = 1
+pkg syscall/zx/io2, const AdvisoryLockingAdvisoryLockResultResponse ideal-int
+pkg syscall/zx/io2, const CloseAll = 24
+pkg syscall/zx/io2, const CloseAll InotifyWatchMask
+pkg syscall/zx/io2, const ConnectionFlagsAppend = 4
+pkg syscall/zx/io2, const ConnectionFlagsAppend ConnectionFlags
+pkg syscall/zx/io2, const ConnectionFlagsConnect = 2
+pkg syscall/zx/io2, const ConnectionFlagsConnect ConnectionFlags
+pkg syscall/zx/io2, const ConnectionFlagsGetConnectionInfo = 1
+pkg syscall/zx/io2, const ConnectionFlagsGetConnectionInfo ConnectionFlags
+pkg syscall/zx/io2, const ConnectionFlagsTruncate = 8
+pkg syscall/zx/io2, const ConnectionFlagsTruncate ConnectionFlags
+pkg syscall/zx/io2, const ConnectionFlags_Mask = 15
+pkg syscall/zx/io2, const ConnectionFlags_Mask ConnectionFlags
+pkg syscall/zx/io2, const ConnectionInfoQueryAvailableOperations = 4
+pkg syscall/zx/io2, const ConnectionInfoQueryAvailableOperations ConnectionInfoQuery
+pkg syscall/zx/io2, const ConnectionInfoQueryRepresentation = 1
+pkg syscall/zx/io2, const ConnectionInfoQueryRepresentation ConnectionInfoQuery
+pkg syscall/zx/io2, const ConnectionInfoQueryRights = 2
+pkg syscall/zx/io2, const ConnectionInfoQueryRights ConnectionInfoQuery
+pkg syscall/zx/io2, const ConnectionInfoQuery_Mask = 7
+pkg syscall/zx/io2, const ConnectionInfoQuery_Mask ConnectionInfoQuery
+pkg syscall/zx/io2, const DebuglogCloseOrdinal = 3309063910701555048
+pkg syscall/zx/io2, const DebuglogCloseOrdinal uint64
+pkg syscall/zx/io2, const DebuglogDescribeOrdinal = 5380773581678861359
+pkg syscall/zx/io2, const DebuglogDescribeOrdinal uint64
+pkg syscall/zx/io2, const DebuglogGetAttributesOrdinal = 7448424316484899300
+pkg syscall/zx/io2, const DebuglogGetAttributesOrdinal uint64
+pkg syscall/zx/io2, const DebuglogGetTokenOrdinal = 5704694899098900708
+pkg syscall/zx/io2, const DebuglogGetTokenOrdinal uint64
+pkg syscall/zx/io2, const DebuglogOnConnectionInfoOrdinal = 7365633083752227895
+pkg syscall/zx/io2, const DebuglogOnConnectionInfoOrdinal uint64
+pkg syscall/zx/io2, const DebuglogReopenOrdinal = 8365171012830086815
+pkg syscall/zx/io2, const DebuglogReopenOrdinal uint64
+pkg syscall/zx/io2, const DebuglogSyncOrdinal = 775649110452626349
+pkg syscall/zx/io2, const DebuglogSyncOrdinal uint64
+pkg syscall/zx/io2, const DebuglogUpdateAttributesOrdinal = 9032487194756522421
+pkg syscall/zx/io2, const DebuglogUpdateAttributesOrdinal uint64
+pkg syscall/zx/io2, const DeviceSignalError = 67108864
+pkg syscall/zx/io2, const DeviceSignalError DeviceSignal
+pkg syscall/zx/io2, const DeviceSignalHangup = 134217728
+pkg syscall/zx/io2, const DeviceSignalHangup DeviceSignal
+pkg syscall/zx/io2, const DeviceSignalOob = 268435456
+pkg syscall/zx/io2, const DeviceSignalOob DeviceSignal
+pkg syscall/zx/io2, const DeviceSignalReadable = 16777216
+pkg syscall/zx/io2, const DeviceSignalReadable DeviceSignal
+pkg syscall/zx/io2, const DeviceSignalWritable = 33554432
+pkg syscall/zx/io2, const DeviceSignalWritable DeviceSignal
+pkg syscall/zx/io2, const DeviceSignal_Mask = 520093696
+pkg syscall/zx/io2, const DeviceSignal_Mask DeviceSignal
+pkg syscall/zx/io2, const DirectoryAddInotifyFilterOrdinal = 8953769376668157147
+pkg syscall/zx/io2, const DirectoryAddInotifyFilterOrdinal uint64
+pkg syscall/zx/io2, const DirectoryCloseOrdinal = 3309063910701555048
+pkg syscall/zx/io2, const DirectoryCloseOrdinal uint64
+pkg syscall/zx/io2, const DirectoryDescribeOrdinal = 5380773581678861359
+pkg syscall/zx/io2, const DirectoryDescribeOrdinal uint64
+pkg syscall/zx/io2, const DirectoryEnumerateOrdinal = 856049564156234339
+pkg syscall/zx/io2, const DirectoryEnumerateOrdinal uint64
+pkg syscall/zx/io2, const DirectoryGetAttributesOrdinal = 7448424316484899300
+pkg syscall/zx/io2, const DirectoryGetAttributesOrdinal uint64
+pkg syscall/zx/io2, const DirectoryGetTokenOrdinal = 5704694899098900708
+pkg syscall/zx/io2, const DirectoryGetTokenOrdinal uint64
+pkg syscall/zx/io2, const DirectoryIteratorGetNextOrdinal = 6710478736528213084
+pkg syscall/zx/io2, const DirectoryIteratorGetNextOrdinal uint64
+pkg syscall/zx/io2, const DirectoryIteratorGetNextResultErr = 2
+pkg syscall/zx/io2, const DirectoryIteratorGetNextResultErr ideal-int
+pkg syscall/zx/io2, const DirectoryIteratorGetNextResultResponse = 1
+pkg syscall/zx/io2, const DirectoryIteratorGetNextResultResponse ideal-int
+pkg syscall/zx/io2, const DirectoryLinkOrdinal = 4783754133017656780
+pkg syscall/zx/io2, const DirectoryLinkOrdinal uint64
+pkg syscall/zx/io2, const DirectoryLinkResultErr = 2
+pkg syscall/zx/io2, const DirectoryLinkResultErr ideal-int
+pkg syscall/zx/io2, const DirectoryLinkResultResponse = 1
+pkg syscall/zx/io2, const DirectoryLinkResultResponse ideal-int
+pkg syscall/zx/io2, const DirectoryOnConnectionInfoOrdinal = 7365633083752227895
+pkg syscall/zx/io2, const DirectoryOnConnectionInfoOrdinal uint64
+pkg syscall/zx/io2, const DirectoryOpenOrdinal = 4055276793586922067
+pkg syscall/zx/io2, const DirectoryOpenOrdinal uint64
+pkg syscall/zx/io2, const DirectoryRenameOrdinal = 2296886357278540471
+pkg syscall/zx/io2, const DirectoryRenameOrdinal uint64
+pkg syscall/zx/io2, const DirectoryRenameResultErr = 2
+pkg syscall/zx/io2, const DirectoryRenameResultErr ideal-int
+pkg syscall/zx/io2, const DirectoryRenameResultResponse = 1
+pkg syscall/zx/io2, const DirectoryRenameResultResponse ideal-int
+pkg syscall/zx/io2, const DirectoryReopenOrdinal = 8365171012830086815
+pkg syscall/zx/io2, const DirectoryReopenOrdinal uint64
+pkg syscall/zx/io2, const DirectorySyncOrdinal = 775649110452626349
+pkg syscall/zx/io2, const DirectorySyncOrdinal uint64
+pkg syscall/zx/io2, const DirectoryUnlink2Ordinal = 392046774408296491
+pkg syscall/zx/io2, const DirectoryUnlink2Ordinal uint64
+pkg syscall/zx/io2, const DirectoryUnlink2ResultErr = 2
+pkg syscall/zx/io2, const DirectoryUnlink2ResultErr ideal-int
+pkg syscall/zx/io2, const DirectoryUnlink2ResultResponse = 1
+pkg syscall/zx/io2, const DirectoryUnlink2ResultResponse ideal-int
+pkg syscall/zx/io2, const DirectoryUnlinkOrdinal = 7813140061152029915
+pkg syscall/zx/io2, const DirectoryUnlinkOrdinal uint64
+pkg syscall/zx/io2, const DirectoryUnlinkResultErr = 2
+pkg syscall/zx/io2, const DirectoryUnlinkResultErr ideal-int
+pkg syscall/zx/io2, const DirectoryUnlinkResultResponse = 1
+pkg syscall/zx/io2, const DirectoryUnlinkResultResponse ideal-int
+pkg syscall/zx/io2, const DirectoryUpdateAttributesOrdinal = 9032487194756522421
+pkg syscall/zx/io2, const DirectoryUpdateAttributesOrdinal uint64
+pkg syscall/zx/io2, const DirectoryWatchMaskAdded = 4
+pkg syscall/zx/io2, const DirectoryWatchMaskAdded DirectoryWatchMask
+pkg syscall/zx/io2, const DirectoryWatchMaskExisting = 1
+pkg syscall/zx/io2, const DirectoryWatchMaskExisting DirectoryWatchMask
+pkg syscall/zx/io2, const DirectoryWatchMaskIdle = 2
+pkg syscall/zx/io2, const DirectoryWatchMaskIdle DirectoryWatchMask
+pkg syscall/zx/io2, const DirectoryWatchMaskRemoved = 8
+pkg syscall/zx/io2, const DirectoryWatchMaskRemoved DirectoryWatchMask
+pkg syscall/zx/io2, const DirectoryWatchMask_Mask = 15
+pkg syscall/zx/io2, const DirectoryWatchMask_Mask DirectoryWatchMask
+pkg syscall/zx/io2, const DirectoryWatchOrdinal = 9189783658495477272
+pkg syscall/zx/io2, const DirectoryWatchOrdinal uint64
+pkg syscall/zx/io2, const DirectoryWatchedEventAdded = 3
+pkg syscall/zx/io2, const DirectoryWatchedEventAdded ideal-int
+pkg syscall/zx/io2, const DirectoryWatchedEventExisting = 1
+pkg syscall/zx/io2, const DirectoryWatchedEventExisting ideal-int
+pkg syscall/zx/io2, const DirectoryWatchedEventIdle = 2
+pkg syscall/zx/io2, const DirectoryWatchedEventIdle ideal-int
+pkg syscall/zx/io2, const DirectoryWatchedEventRemoved = 4
+pkg syscall/zx/io2, const DirectoryWatchedEventRemoved ideal-int
+pkg syscall/zx/io2, const DirectoryWatchedEvent_unknownData = 0
+pkg syscall/zx/io2, const DirectoryWatchedEvent_unknownData ideal-int
+pkg syscall/zx/io2, const DirectoryWatcherGetNextOrdinal = 8421233887539678071
+pkg syscall/zx/io2, const DirectoryWatcherGetNextOrdinal uint64
+pkg syscall/zx/io2, const FileAdvisoryLockOrdinal = 7158728121514993402
+pkg syscall/zx/io2, const FileAdvisoryLockOrdinal uint64
+pkg syscall/zx/io2, const FileCloseOrdinal = 3309063910701555048
+pkg syscall/zx/io2, const FileCloseOrdinal uint64
+pkg syscall/zx/io2, const FileDescribeOrdinal = 5380773581678861359
+pkg syscall/zx/io2, const FileDescribeOrdinal uint64
+pkg syscall/zx/io2, const FileGetAttributesOrdinal = 7448424316484899300
+pkg syscall/zx/io2, const FileGetAttributesOrdinal uint64
+pkg syscall/zx/io2, const FileGetMemRangeOrdinal = 6017980577408079531
+pkg syscall/zx/io2, const FileGetMemRangeOrdinal uint64
+pkg syscall/zx/io2, const FileGetMemRangeResultErr = 2
+pkg syscall/zx/io2, const FileGetMemRangeResultErr ideal-int
+pkg syscall/zx/io2, const FileGetMemRangeResultResponse = 1
+pkg syscall/zx/io2, const FileGetMemRangeResultResponse ideal-int
+pkg syscall/zx/io2, const FileGetTokenOrdinal = 5704694899098900708
+pkg syscall/zx/io2, const FileGetTokenOrdinal uint64
+pkg syscall/zx/io2, const FileOnConnectionInfoOrdinal = 7365633083752227895
+pkg syscall/zx/io2, const FileOnConnectionInfoOrdinal uint64
+pkg syscall/zx/io2, const FileReadAtOrdinal = 8595287894587635882
+pkg syscall/zx/io2, const FileReadAtOrdinal uint64
+pkg syscall/zx/io2, const FileReadAtResultErr = 2
+pkg syscall/zx/io2, const FileReadAtResultErr ideal-int
+pkg syscall/zx/io2, const FileReadAtResultResponse = 1
+pkg syscall/zx/io2, const FileReadAtResultResponse ideal-int
+pkg syscall/zx/io2, const FileReadOrdinal = 7687841281776557936
+pkg syscall/zx/io2, const FileReadOrdinal uint64
+pkg syscall/zx/io2, const FileReadResultErr = 2
+pkg syscall/zx/io2, const FileReadResultErr ideal-int
+pkg syscall/zx/io2, const FileReadResultResponse = 1
+pkg syscall/zx/io2, const FileReadResultResponse ideal-int
+pkg syscall/zx/io2, const FileReopenOrdinal = 8365171012830086815
+pkg syscall/zx/io2, const FileReopenOrdinal uint64
+pkg syscall/zx/io2, const FileResizeOrdinal = 6334691519906097692
+pkg syscall/zx/io2, const FileResizeOrdinal uint64
+pkg syscall/zx/io2, const FileResizeResultErr = 2
+pkg syscall/zx/io2, const FileResizeResultErr ideal-int
+pkg syscall/zx/io2, const FileResizeResultResponse = 1
+pkg syscall/zx/io2, const FileResizeResultResponse ideal-int
+pkg syscall/zx/io2, const FileSeekOrdinal = 7842946169382958670
+pkg syscall/zx/io2, const FileSeekOrdinal uint64
+pkg syscall/zx/io2, const FileSeekResultErr = 2
+pkg syscall/zx/io2, const FileSeekResultErr ideal-int
+pkg syscall/zx/io2, const FileSeekResultResponse = 1
+pkg syscall/zx/io2, const FileSeekResultResponse ideal-int
+pkg syscall/zx/io2, const FileSignalReadable = 16777216
+pkg syscall/zx/io2, const FileSignalReadable FileSignal
+pkg syscall/zx/io2, const FileSignalWritable = 33554432
+pkg syscall/zx/io2, const FileSignalWritable FileSignal
+pkg syscall/zx/io2, const FileSignal_Mask = 50331648
+pkg syscall/zx/io2, const FileSignal_Mask FileSignal
+pkg syscall/zx/io2, const FileSyncOrdinal = 775649110452626349
+pkg syscall/zx/io2, const FileSyncOrdinal uint64
+pkg syscall/zx/io2, const FileUpdateAttributesOrdinal = 9032487194756522421
+pkg syscall/zx/io2, const FileUpdateAttributesOrdinal uint64
+pkg syscall/zx/io2, const FileWriteAtOrdinal = 8875177937047458450
+pkg syscall/zx/io2, const FileWriteAtOrdinal uint64
+pkg syscall/zx/io2, const FileWriteAtResultErr = 2
+pkg syscall/zx/io2, const FileWriteAtResultErr ideal-int
+pkg syscall/zx/io2, const FileWriteAtResultResponse = 1
+pkg syscall/zx/io2, const FileWriteAtResultResponse ideal-int
+pkg syscall/zx/io2, const FileWriteOrdinal = 1695376302891228673
+pkg syscall/zx/io2, const FileWriteOrdinal uint64
+pkg syscall/zx/io2, const FileWriteResultErr = 2
+pkg syscall/zx/io2, const FileWriteResultErr ideal-int
+pkg syscall/zx/io2, const FileWriteResultResponse = 1
+pkg syscall/zx/io2, const FileWriteResultResponse ideal-int
+pkg syscall/zx/io2, const InotifyWatchMaskAccess = 1
+pkg syscall/zx/io2, const InotifyWatchMaskAccess InotifyWatchMask
+pkg syscall/zx/io2, const InotifyWatchMaskAttrib = 4
+pkg syscall/zx/io2, const InotifyWatchMaskAttrib InotifyWatchMask
+pkg syscall/zx/io2, const InotifyWatchMaskCloseNowrite = 16
+pkg syscall/zx/io2, const InotifyWatchMaskCloseNowrite InotifyWatchMask
+pkg syscall/zx/io2, const InotifyWatchMaskCloseWrite = 8
+pkg syscall/zx/io2, const InotifyWatchMaskCloseWrite InotifyWatchMask
+pkg syscall/zx/io2, const InotifyWatchMaskCreate = 256
+pkg syscall/zx/io2, const InotifyWatchMaskCreate InotifyWatchMask
+pkg syscall/zx/io2, const InotifyWatchMaskDelete = 512
+pkg syscall/zx/io2, const InotifyWatchMaskDelete InotifyWatchMask
+pkg syscall/zx/io2, const InotifyWatchMaskDeleteSelf = 1024
+pkg syscall/zx/io2, const InotifyWatchMaskDeleteSelf InotifyWatchMask
+pkg syscall/zx/io2, const InotifyWatchMaskDontFollow = 33554432
+pkg syscall/zx/io2, const InotifyWatchMaskDontFollow InotifyWatchMask
+pkg syscall/zx/io2, const InotifyWatchMaskExclUnlink = 67108864
+pkg syscall/zx/io2, const InotifyWatchMaskExclUnlink InotifyWatchMask
+pkg syscall/zx/io2, const InotifyWatchMaskIgnored = 32768
+pkg syscall/zx/io2, const InotifyWatchMaskIgnored InotifyWatchMask
+pkg syscall/zx/io2, const InotifyWatchMaskIsdirectory = 1073741824
+pkg syscall/zx/io2, const InotifyWatchMaskIsdirectory InotifyWatchMask
+pkg syscall/zx/io2, const InotifyWatchMaskMaskAdd = 536870912
+pkg syscall/zx/io2, const InotifyWatchMaskMaskAdd InotifyWatchMask
+pkg syscall/zx/io2, const InotifyWatchMaskMaskCreate = 268435456
+pkg syscall/zx/io2, const InotifyWatchMaskMaskCreate InotifyWatchMask
+pkg syscall/zx/io2, const InotifyWatchMaskModify = 2
+pkg syscall/zx/io2, const InotifyWatchMaskModify InotifyWatchMask
+pkg syscall/zx/io2, const InotifyWatchMaskMoveSelf = 2048
+pkg syscall/zx/io2, const InotifyWatchMaskMoveSelf InotifyWatchMask
+pkg syscall/zx/io2, const InotifyWatchMaskMovedFrom = 64
+pkg syscall/zx/io2, const InotifyWatchMaskMovedFrom InotifyWatchMask
+pkg syscall/zx/io2, const InotifyWatchMaskMovedTo = 128
+pkg syscall/zx/io2, const InotifyWatchMaskMovedTo InotifyWatchMask
+pkg syscall/zx/io2, const InotifyWatchMaskOneshot = 2147483648
+pkg syscall/zx/io2, const InotifyWatchMaskOneshot InotifyWatchMask
+pkg syscall/zx/io2, const InotifyWatchMaskOnlydir = 16777216
+pkg syscall/zx/io2, const InotifyWatchMaskOnlydir InotifyWatchMask
+pkg syscall/zx/io2, const InotifyWatchMaskOpen = 32
+pkg syscall/zx/io2, const InotifyWatchMaskOpen InotifyWatchMask
+pkg syscall/zx/io2, const InotifyWatchMaskQOverflow = 16384
+pkg syscall/zx/io2, const InotifyWatchMaskQOverflow InotifyWatchMask
+pkg syscall/zx/io2, const InotifyWatchMaskUnmount = 8192
+pkg syscall/zx/io2, const InotifyWatchMaskUnmount InotifyWatchMask
+pkg syscall/zx/io2, const InotifyWatchMask_Mask = 4144033791
+pkg syscall/zx/io2, const InotifyWatchMask_Mask InotifyWatchMask
+pkg syscall/zx/io2, const MaxDirectoryBatchSize = 8192
+pkg syscall/zx/io2, const MaxDirectoryBatchSize uint64
+pkg syscall/zx/io2, const MaxNameLength = 255
+pkg syscall/zx/io2, const MaxNameLength uint64
+pkg syscall/zx/io2, const MaxPathLength = 4095
+pkg syscall/zx/io2, const MaxPathLength uint64
+pkg syscall/zx/io2, const MaxTransferSize = 8192
+pkg syscall/zx/io2, const MaxTransferSize uint64
+pkg syscall/zx/io2, const MemoryCloseOrdinal = 3309063910701555048
+pkg syscall/zx/io2, const MemoryCloseOrdinal uint64
+pkg syscall/zx/io2, const MemoryDescribeOrdinal = 5380773581678861359
+pkg syscall/zx/io2, const MemoryDescribeOrdinal uint64
+pkg syscall/zx/io2, const MemoryGetAttributesOrdinal = 7448424316484899300
+pkg syscall/zx/io2, const MemoryGetAttributesOrdinal uint64
+pkg syscall/zx/io2, const MemoryGetTokenOrdinal = 5704694899098900708
+pkg syscall/zx/io2, const MemoryGetTokenOrdinal uint64
+pkg syscall/zx/io2, const MemoryOnConnectionInfoOrdinal = 7365633083752227895
+pkg syscall/zx/io2, const MemoryOnConnectionInfoOrdinal uint64
+pkg syscall/zx/io2, const MemoryReopenOrdinal = 8365171012830086815
+pkg syscall/zx/io2, const MemoryReopenOrdinal uint64
+pkg syscall/zx/io2, const MemorySyncOrdinal = 775649110452626349
+pkg syscall/zx/io2, const MemorySyncOrdinal uint64
+pkg syscall/zx/io2, const MemoryUpdateAttributesOrdinal = 9032487194756522421
+pkg syscall/zx/io2, const MemoryUpdateAttributesOrdinal uint64
+pkg syscall/zx/io2, const Move = 192
+pkg syscall/zx/io2, const Move InotifyWatchMask
+pkg syscall/zx/io2, const NodeAttributesQueryAbilities = 2
+pkg syscall/zx/io2, const NodeAttributesQueryAbilities NodeAttributesQuery
+pkg syscall/zx/io2, const NodeAttributesQueryContentSize = 4
+pkg syscall/zx/io2, const NodeAttributesQueryContentSize NodeAttributesQuery
+pkg syscall/zx/io2, const NodeAttributesQueryCreationTime = 32
+pkg syscall/zx/io2, const NodeAttributesQueryCreationTime NodeAttributesQuery
+pkg syscall/zx/io2, const NodeAttributesQueryId = 128
+pkg syscall/zx/io2, const NodeAttributesQueryId NodeAttributesQuery
+pkg syscall/zx/io2, const NodeAttributesQueryLinkCount = 16
+pkg syscall/zx/io2, const NodeAttributesQueryLinkCount NodeAttributesQuery
+pkg syscall/zx/io2, const NodeAttributesQueryModificationTime = 64
+pkg syscall/zx/io2, const NodeAttributesQueryModificationTime NodeAttributesQuery
+pkg syscall/zx/io2, const NodeAttributesQueryProtocols = 1
+pkg syscall/zx/io2, const NodeAttributesQueryProtocols NodeAttributesQuery
+pkg syscall/zx/io2, const NodeAttributesQueryStorageSize = 8
+pkg syscall/zx/io2, const NodeAttributesQueryStorageSize NodeAttributesQuery
+pkg syscall/zx/io2, const NodeAttributesQuery_Mask = 255
+pkg syscall/zx/io2, const NodeAttributesQuery_Mask NodeAttributesQuery
+pkg syscall/zx/io2, const NodeCloseOrdinal = 3309063910701555048
+pkg syscall/zx/io2, const NodeCloseOrdinal uint64
+pkg syscall/zx/io2, const NodeDescribeOrdinal = 5380773581678861359
+pkg syscall/zx/io2, const NodeDescribeOrdinal uint64
+pkg syscall/zx/io2, const NodeGetAttributesOrdinal = 7448424316484899300
+pkg syscall/zx/io2, const NodeGetAttributesOrdinal uint64
+pkg syscall/zx/io2, const NodeGetAttributesResultErr = 2
+pkg syscall/zx/io2, const NodeGetAttributesResultErr ideal-int
+pkg syscall/zx/io2, const NodeGetAttributesResultResponse = 1
+pkg syscall/zx/io2, const NodeGetAttributesResultResponse ideal-int
+pkg syscall/zx/io2, const NodeGetTokenOrdinal = 5704694899098900708
+pkg syscall/zx/io2, const NodeGetTokenOrdinal uint64
+pkg syscall/zx/io2, const NodeGetTokenResultErr = 2
+pkg syscall/zx/io2, const NodeGetTokenResultErr ideal-int
+pkg syscall/zx/io2, const NodeGetTokenResultResponse = 1
+pkg syscall/zx/io2, const NodeGetTokenResultResponse ideal-int
+pkg syscall/zx/io2, const NodeOnConnectionInfoOrdinal = 7365633083752227895
+pkg syscall/zx/io2, const NodeOnConnectionInfoOrdinal uint64
+pkg syscall/zx/io2, const NodeProtocolsConnector = 1
+pkg syscall/zx/io2, const NodeProtocolsConnector NodeProtocols
+pkg syscall/zx/io2, const NodeProtocolsDebuglog = 64
+pkg syscall/zx/io2, const NodeProtocolsDebuglog NodeProtocols
+pkg syscall/zx/io2, const NodeProtocolsDevice = 268435456
+pkg syscall/zx/io2, const NodeProtocolsDevice NodeProtocols
+pkg syscall/zx/io2, const NodeProtocolsDirectory = 2
+pkg syscall/zx/io2, const NodeProtocolsDirectory NodeProtocols
+pkg syscall/zx/io2, const NodeProtocolsFile = 4
+pkg syscall/zx/io2, const NodeProtocolsFile NodeProtocols
+pkg syscall/zx/io2, const NodeProtocolsMemory = 8
+pkg syscall/zx/io2, const NodeProtocolsMemory NodeProtocols
+pkg syscall/zx/io2, const NodeProtocolsPipe = 32
+pkg syscall/zx/io2, const NodeProtocolsPipe NodeProtocols
+pkg syscall/zx/io2, const NodeProtocolsPosixSocket = 16
+pkg syscall/zx/io2, const NodeProtocolsPosixSocket NodeProtocols
+pkg syscall/zx/io2, const NodeProtocolsTty = 536870912
+pkg syscall/zx/io2, const NodeProtocolsTty NodeProtocols
+pkg syscall/zx/io2, const NodeProtocols_Mask = 805306495
+pkg syscall/zx/io2, const NodeProtocols_Mask NodeProtocols
+pkg syscall/zx/io2, const NodeReopenOrdinal = 8365171012830086815
+pkg syscall/zx/io2, const NodeReopenOrdinal uint64
+pkg syscall/zx/io2, const NodeSyncOrdinal = 775649110452626349
+pkg syscall/zx/io2, const NodeSyncOrdinal uint64
+pkg syscall/zx/io2, const NodeSyncResultErr = 2
+pkg syscall/zx/io2, const NodeSyncResultErr ideal-int
+pkg syscall/zx/io2, const NodeSyncResultResponse = 1
+pkg syscall/zx/io2, const NodeSyncResultResponse ideal-int
+pkg syscall/zx/io2, const NodeUpdateAttributesOrdinal = 9032487194756522421
+pkg syscall/zx/io2, const NodeUpdateAttributesOrdinal uint64
+pkg syscall/zx/io2, const NodeUpdateAttributesResultErr = 2
+pkg syscall/zx/io2, const NodeUpdateAttributesResultErr ideal-int
+pkg syscall/zx/io2, const NodeUpdateAttributesResultResponse = 1
+pkg syscall/zx/io2, const NodeUpdateAttributesResultResponse ideal-int
+pkg syscall/zx/io2, const OpenModeAlwaysCreate = 3
+pkg syscall/zx/io2, const OpenModeAlwaysCreate OpenMode
+pkg syscall/zx/io2, const OpenModeMaybeCreate = 2
+pkg syscall/zx/io2, const OpenModeMaybeCreate OpenMode
+pkg syscall/zx/io2, const OpenModeOpenExisting = 1
+pkg syscall/zx/io2, const OpenModeOpenExisting OpenMode
+pkg syscall/zx/io2, const OpenModeOpenMountPoint = 268435456
+pkg syscall/zx/io2, const OpenModeOpenMountPoint OpenMode
+pkg syscall/zx/io2, const OperationsAdmin = 72057594037927936
+pkg syscall/zx/io2, const OperationsAdmin Operations
+pkg syscall/zx/io2, const OperationsConnect = 1
+pkg syscall/zx/io2, const OperationsConnect Operations
+pkg syscall/zx/io2, const OperationsEnumerate = 64
+pkg syscall/zx/io2, const OperationsEnumerate Operations
+pkg syscall/zx/io2, const OperationsExecute = 8
+pkg syscall/zx/io2, const OperationsExecute Operations
+pkg syscall/zx/io2, const OperationsGetAttributes = 16
+pkg syscall/zx/io2, const OperationsGetAttributes Operations
+pkg syscall/zx/io2, const OperationsModifyDirectory = 256
+pkg syscall/zx/io2, const OperationsModifyDirectory Operations
+pkg syscall/zx/io2, const OperationsReadBytes = 2
+pkg syscall/zx/io2, const OperationsReadBytes Operations
+pkg syscall/zx/io2, const OperationsTraverse = 128
+pkg syscall/zx/io2, const OperationsTraverse Operations
+pkg syscall/zx/io2, const OperationsUpdateAttributes = 32
+pkg syscall/zx/io2, const OperationsUpdateAttributes Operations
+pkg syscall/zx/io2, const OperationsWriteBytes = 4
+pkg syscall/zx/io2, const OperationsWriteBytes Operations
+pkg syscall/zx/io2, const Operations_Mask = 72057594037928447
+pkg syscall/zx/io2, const Operations_Mask Operations
+pkg syscall/zx/io2, const PipeCloseOrdinal = 3309063910701555048
+pkg syscall/zx/io2, const PipeCloseOrdinal uint64
+pkg syscall/zx/io2, const PipeDescribeOrdinal = 5380773581678861359
+pkg syscall/zx/io2, const PipeDescribeOrdinal uint64
+pkg syscall/zx/io2, const PipeGetAttributesOrdinal = 7448424316484899300
+pkg syscall/zx/io2, const PipeGetAttributesOrdinal uint64
+pkg syscall/zx/io2, const PipeGetTokenOrdinal = 5704694899098900708
+pkg syscall/zx/io2, const PipeGetTokenOrdinal uint64
+pkg syscall/zx/io2, const PipeOnConnectionInfoOrdinal = 7365633083752227895
+pkg syscall/zx/io2, const PipeOnConnectionInfoOrdinal uint64
+pkg syscall/zx/io2, const PipeReopenOrdinal = 8365171012830086815
+pkg syscall/zx/io2, const PipeReopenOrdinal uint64
+pkg syscall/zx/io2, const PipeSyncOrdinal = 775649110452626349
+pkg syscall/zx/io2, const PipeSyncOrdinal uint64
+pkg syscall/zx/io2, const PipeUpdateAttributesOrdinal = 9032487194756522421
+pkg syscall/zx/io2, const PipeUpdateAttributesOrdinal uint64
+pkg syscall/zx/io2, const RStarDir = 211
+pkg syscall/zx/io2, const RStarDir Operations
+pkg syscall/zx/io2, const RepresentationConnector = 1
+pkg syscall/zx/io2, const RepresentationConnector ideal-int
+pkg syscall/zx/io2, const RepresentationDebuglog = 7
+pkg syscall/zx/io2, const RepresentationDebuglog ideal-int
+pkg syscall/zx/io2, const RepresentationDevice = 8
+pkg syscall/zx/io2, const RepresentationDevice ideal-int
+pkg syscall/zx/io2, const RepresentationDirectory = 2
+pkg syscall/zx/io2, const RepresentationDirectory ideal-int
+pkg syscall/zx/io2, const RepresentationFile = 3
+pkg syscall/zx/io2, const RepresentationFile ideal-int
+pkg syscall/zx/io2, const RepresentationMemory = 4
+pkg syscall/zx/io2, const RepresentationMemory ideal-int
+pkg syscall/zx/io2, const RepresentationPipe = 6
+pkg syscall/zx/io2, const RepresentationPipe ideal-int
+pkg syscall/zx/io2, const RepresentationPosixSocket = 5
+pkg syscall/zx/io2, const RepresentationPosixSocket ideal-int
+pkg syscall/zx/io2, const RepresentationTty = 9
+pkg syscall/zx/io2, const RepresentationTty ideal-int
+pkg syscall/zx/io2, const Representation_unknownData = 0
+pkg syscall/zx/io2, const Representation_unknownData ideal-int
+pkg syscall/zx/io2, const RightsResolutionMaximize = 1
+pkg syscall/zx/io2, const RightsResolutionMaximize RightsResolution
+pkg syscall/zx/io2, const RightsResolutionPosix = 2
+pkg syscall/zx/io2, const RightsResolutionPosix RightsResolution
+pkg syscall/zx/io2, const RwStarDir = 503
+pkg syscall/zx/io2, const RwStarDir Operations
+pkg syscall/zx/io2, const RxStarDir = 219
+pkg syscall/zx/io2, const RxStarDir Operations
+pkg syscall/zx/io2, const SeekOriginCurrent = 1
+pkg syscall/zx/io2, const SeekOriginCurrent SeekOrigin
+pkg syscall/zx/io2, const SeekOriginEnd = 2
+pkg syscall/zx/io2, const SeekOriginEnd SeekOrigin
+pkg syscall/zx/io2, const SeekOriginStart = 0
+pkg syscall/zx/io2, const SeekOriginStart SeekOrigin
+pkg syscall/zx/io2, const UnlinkFlagsMustBeDirectory = 1
+pkg syscall/zx/io2, const UnlinkFlagsMustBeDirectory UnlinkFlags
+pkg syscall/zx/io2, const UnlinkFlags_Mask = 1
+pkg syscall/zx/io2, const UnlinkFlags_Mask UnlinkFlags
+pkg syscall/zx/io2, const VmoFlagsExecute = 4
+pkg syscall/zx/io2, const VmoFlagsExecute VmoFlags
+pkg syscall/zx/io2, const VmoFlagsPrivateClone = 65536
+pkg syscall/zx/io2, const VmoFlagsPrivateClone VmoFlags
+pkg syscall/zx/io2, const VmoFlagsRead = 1
+pkg syscall/zx/io2, const VmoFlagsRead VmoFlags
+pkg syscall/zx/io2, const VmoFlagsSharedBuffer = 131072
+pkg syscall/zx/io2, const VmoFlagsSharedBuffer VmoFlags
+pkg syscall/zx/io2, const VmoFlagsWrite = 2
+pkg syscall/zx/io2, const VmoFlagsWrite VmoFlags
+pkg syscall/zx/io2, const VmoFlags_Mask = 196615
+pkg syscall/zx/io2, const VmoFlags_Mask VmoFlags
+pkg syscall/zx/io2, const WStarDir = 485
+pkg syscall/zx/io2, const WStarDir Operations
+pkg syscall/zx/io2, const XStarDir = 201
+pkg syscall/zx/io2, const XStarDir Operations
+pkg syscall/zx/io2, func AdvisoryLockingAdvisoryLockResultWithErr(int32) AdvisoryLockingAdvisoryLockResult
+pkg syscall/zx/io2, func AdvisoryLockingAdvisoryLockResultWithResponse(AdvisoryLockingAdvisoryLockResponse) AdvisoryLockingAdvisoryLockResult
+pkg syscall/zx/io2, func DirectoryIteratorGetNextResultWithErr(int32) DirectoryIteratorGetNextResult
+pkg syscall/zx/io2, func DirectoryIteratorGetNextResultWithResponse(DirectoryIteratorGetNextResponse) DirectoryIteratorGetNextResult
+pkg syscall/zx/io2, func DirectoryLinkResultWithErr(int32) DirectoryLinkResult
+pkg syscall/zx/io2, func DirectoryLinkResultWithResponse(DirectoryLinkResponse) DirectoryLinkResult
+pkg syscall/zx/io2, func DirectoryRenameResultWithErr(int32) DirectoryRenameResult
+pkg syscall/zx/io2, func DirectoryRenameResultWithResponse(DirectoryRenameResponse) DirectoryRenameResult
+pkg syscall/zx/io2, func DirectoryUnlink2ResultWithErr(int32) DirectoryUnlink2Result
+pkg syscall/zx/io2, func DirectoryUnlink2ResultWithResponse(DirectoryUnlink2Response) DirectoryUnlink2Result
+pkg syscall/zx/io2, func DirectoryUnlinkResultWithErr(int32) DirectoryUnlinkResult
+pkg syscall/zx/io2, func DirectoryUnlinkResultWithResponse(DirectoryUnlinkResponse) DirectoryUnlinkResult
+pkg syscall/zx/io2, func DirectoryWatchedEventWithAdded(DirectoryEntry) DirectoryWatchedEvent
+pkg syscall/zx/io2, func DirectoryWatchedEventWithExisting(DirectoryEntry) DirectoryWatchedEvent
+pkg syscall/zx/io2, func DirectoryWatchedEventWithIdle(IdleEvent) DirectoryWatchedEvent
+pkg syscall/zx/io2, func DirectoryWatchedEventWithRemoved(string) DirectoryWatchedEvent
+pkg syscall/zx/io2, func FileGetMemRangeResultWithErr(int32) FileGetMemRangeResult
+pkg syscall/zx/io2, func FileGetMemRangeResultWithResponse(FileGetMemRangeResponse) FileGetMemRangeResult
+pkg syscall/zx/io2, func FileReadAtResultWithErr(int32) FileReadAtResult
+pkg syscall/zx/io2, func FileReadAtResultWithResponse(FileReadAtResponse) FileReadAtResult
+pkg syscall/zx/io2, func FileReadResultWithErr(int32) FileReadResult
+pkg syscall/zx/io2, func FileReadResultWithResponse(FileReadResponse) FileReadResult
+pkg syscall/zx/io2, func FileResizeResultWithErr(int32) FileResizeResult
+pkg syscall/zx/io2, func FileResizeResultWithResponse(FileResizeResponse) FileResizeResult
+pkg syscall/zx/io2, func FileSeekResultWithErr(int32) FileSeekResult
+pkg syscall/zx/io2, func FileSeekResultWithResponse(FileSeekResponse) FileSeekResult
+pkg syscall/zx/io2, func FileWriteAtResultWithErr(int32) FileWriteAtResult
+pkg syscall/zx/io2, func FileWriteAtResultWithResponse(FileWriteAtResponse) FileWriteAtResult
+pkg syscall/zx/io2, func FileWriteResultWithErr(int32) FileWriteResult
+pkg syscall/zx/io2, func FileWriteResultWithResponse(FileWriteResponse) FileWriteResult
+pkg syscall/zx/io2, func NewAdvisoryLockingWithCtxInterfaceRequest() (AdvisoryLockingWithCtxInterfaceRequest, *AdvisoryLockingWithCtxInterface, error)
+pkg syscall/zx/io2, func NewDebuglogWithCtxInterfaceRequest() (DebuglogWithCtxInterfaceRequest, *DebuglogWithCtxInterface, error)
+pkg syscall/zx/io2, func NewDirectoryIteratorWithCtxInterfaceRequest() (DirectoryIteratorWithCtxInterfaceRequest, *DirectoryIteratorWithCtxInterface, error)
+pkg syscall/zx/io2, func NewDirectoryWatcherWithCtxInterfaceRequest() (DirectoryWatcherWithCtxInterfaceRequest, *DirectoryWatcherWithCtxInterface, error)
+pkg syscall/zx/io2, func NewDirectoryWithCtxInterfaceRequest() (DirectoryWithCtxInterfaceRequest, *DirectoryWithCtxInterface, error)
+pkg syscall/zx/io2, func NewFileWithCtxInterfaceRequest() (FileWithCtxInterfaceRequest, *FileWithCtxInterface, error)
+pkg syscall/zx/io2, func NewInotifierWithCtxInterfaceRequest() (InotifierWithCtxInterfaceRequest, *InotifierWithCtxInterface, error)
+pkg syscall/zx/io2, func NewMemoryWithCtxInterfaceRequest() (MemoryWithCtxInterfaceRequest, *MemoryWithCtxInterface, error)
+pkg syscall/zx/io2, func NewNodeWithCtxInterfaceRequest() (NodeWithCtxInterfaceRequest, *NodeWithCtxInterface, error)
+pkg syscall/zx/io2, func NewPipeWithCtxInterfaceRequest() (PipeWithCtxInterfaceRequest, *PipeWithCtxInterface, error)
+pkg syscall/zx/io2, func NodeGetAttributesResultWithErr(int32) NodeGetAttributesResult
+pkg syscall/zx/io2, func NodeGetAttributesResultWithResponse(NodeGetAttributesResponse) NodeGetAttributesResult
+pkg syscall/zx/io2, func NodeGetTokenResultWithErr(int32) NodeGetTokenResult
+pkg syscall/zx/io2, func NodeGetTokenResultWithResponse(NodeGetTokenResponse) NodeGetTokenResult
+pkg syscall/zx/io2, func NodeSyncResultWithErr(int32) NodeSyncResult
+pkg syscall/zx/io2, func NodeSyncResultWithResponse(NodeSyncResponse) NodeSyncResult
+pkg syscall/zx/io2, func NodeUpdateAttributesResultWithErr(int32) NodeUpdateAttributesResult
+pkg syscall/zx/io2, func NodeUpdateAttributesResultWithResponse(NodeUpdateAttributesResponse) NodeUpdateAttributesResult
+pkg syscall/zx/io2, func RepresentationWithConnector(ConnectorInfo) Representation
+pkg syscall/zx/io2, func RepresentationWithDebuglog(DebuglogInfo) Representation
+pkg syscall/zx/io2, func RepresentationWithDevice(DeviceInfo) Representation
+pkg syscall/zx/io2, func RepresentationWithDirectory(DirectoryInfo) Representation
+pkg syscall/zx/io2, func RepresentationWithFile(FileInfo) Representation
+pkg syscall/zx/io2, func RepresentationWithMemory(MemoryInfo) Representation
+pkg syscall/zx/io2, func RepresentationWithPipe(PipeInfo) Representation
+pkg syscall/zx/io2, func RepresentationWithPosixSocket(PosixSocketInfo) Representation
+pkg syscall/zx/io2, func RepresentationWithTty(TtyInfo) Representation
+pkg syscall/zx/io2, method (*AdvisoryLockRange) Marshaler() fidl.Marshaler
+pkg syscall/zx/io2, method (*AdvisoryLockRequest) ClearRange()
+pkg syscall/zx/io2, method (*AdvisoryLockRequest) ClearType()
+pkg syscall/zx/io2, method (*AdvisoryLockRequest) ClearWait()
+pkg syscall/zx/io2, method (*AdvisoryLockRequest) GetRange() AdvisoryLockRange
+pkg syscall/zx/io2, method (*AdvisoryLockRequest) GetRangeWithDefault(AdvisoryLockRange) AdvisoryLockRange
+pkg syscall/zx/io2, method (*AdvisoryLockRequest) GetType() AdvisoryLockType
+pkg syscall/zx/io2, method (*AdvisoryLockRequest) GetTypeWithDefault(AdvisoryLockType) AdvisoryLockType
+pkg syscall/zx/io2, method (*AdvisoryLockRequest) GetUnknownData() map[uint64]fidl.UnknownData
+pkg syscall/zx/io2, method (*AdvisoryLockRequest) GetWait() bool
+pkg syscall/zx/io2, method (*AdvisoryLockRequest) GetWaitWithDefault(bool) bool
+pkg syscall/zx/io2, method (*AdvisoryLockRequest) HasRange() bool
+pkg syscall/zx/io2, method (*AdvisoryLockRequest) HasType() bool
+pkg syscall/zx/io2, method (*AdvisoryLockRequest) HasUnknownData() bool
+pkg syscall/zx/io2, method (*AdvisoryLockRequest) HasWait() bool
+pkg syscall/zx/io2, method (*AdvisoryLockRequest) SetRange(AdvisoryLockRange)
+pkg syscall/zx/io2, method (*AdvisoryLockRequest) SetType(AdvisoryLockType)
+pkg syscall/zx/io2, method (*AdvisoryLockRequest) SetWait(bool)
+pkg syscall/zx/io2, method (*AdvisoryLockingAdvisoryLockResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/io2, method (*AdvisoryLockingAdvisoryLockResult) Ordinal() uint64
+pkg syscall/zx/io2, method (*AdvisoryLockingAdvisoryLockResult) SetErr(int32)
+pkg syscall/zx/io2, method (*AdvisoryLockingAdvisoryLockResult) SetResponse(AdvisoryLockingAdvisoryLockResponse)
+pkg syscall/zx/io2, method (*AdvisoryLockingAdvisoryLockResult) Which() I_advisoryLockingAdvisoryLockResultTag
+pkg syscall/zx/io2, method (*AdvisoryLockingEventProxy) Handle() *zx.Handle
+pkg syscall/zx/io2, method (*AdvisoryLockingWithCtxInterface) AdvisoryLock(context.Context, AdvisoryLockRequest) (AdvisoryLockingAdvisoryLockResult, error)
+pkg syscall/zx/io2, method (*AdvisoryLockingWithCtxInterface) Handle() *zx.Handle
+pkg syscall/zx/io2, method (*AdvisoryLockingWithCtxInterfaceRequest) Handle() *zx.Handle
+pkg syscall/zx/io2, method (*AdvisoryLockingWithCtxStub) Dispatch(fidl.DispatchArgs) (fidl.Message, bool, error)
+pkg syscall/zx/io2, method (*AdvisoryLockingWithCtxTransitionalBase) AdvisoryLock(context.Context, AdvisoryLockRequest) (AdvisoryLockingAdvisoryLockResult, error)
+pkg syscall/zx/io2, method (*ConnectionInfo) ClearAvailableOperations()
+pkg syscall/zx/io2, method (*ConnectionInfo) ClearRepresentation()
+pkg syscall/zx/io2, method (*ConnectionInfo) ClearRights()
+pkg syscall/zx/io2, method (*ConnectionInfo) GetAvailableOperations() Operations
+pkg syscall/zx/io2, method (*ConnectionInfo) GetAvailableOperationsWithDefault(Operations) Operations
+pkg syscall/zx/io2, method (*ConnectionInfo) GetRepresentation() Representation
+pkg syscall/zx/io2, method (*ConnectionInfo) GetRepresentationWithDefault(Representation) Representation
+pkg syscall/zx/io2, method (*ConnectionInfo) GetRights() Operations
+pkg syscall/zx/io2, method (*ConnectionInfo) GetRightsWithDefault(Operations) Operations
+pkg syscall/zx/io2, method (*ConnectionInfo) GetUnknownData() map[uint64]fidl.UnknownData
+pkg syscall/zx/io2, method (*ConnectionInfo) HasAvailableOperations() bool
+pkg syscall/zx/io2, method (*ConnectionInfo) HasRepresentation() bool
+pkg syscall/zx/io2, method (*ConnectionInfo) HasRights() bool
+pkg syscall/zx/io2, method (*ConnectionInfo) HasUnknownData() bool
+pkg syscall/zx/io2, method (*ConnectionInfo) SetAvailableOperations(Operations)
+pkg syscall/zx/io2, method (*ConnectionInfo) SetRepresentation(Representation)
+pkg syscall/zx/io2, method (*ConnectionInfo) SetRights(Operations)
+pkg syscall/zx/io2, method (*ConnectionOptions) ClearFlags()
+pkg syscall/zx/io2, method (*ConnectionOptions) ClearProtocols()
+pkg syscall/zx/io2, method (*ConnectionOptions) ClearRightsRequest()
+pkg syscall/zx/io2, method (*ConnectionOptions) GetFlags() ConnectionFlags
+pkg syscall/zx/io2, method (*ConnectionOptions) GetFlagsWithDefault(ConnectionFlags) ConnectionFlags
+pkg syscall/zx/io2, method (*ConnectionOptions) GetProtocols() NodeProtocols
+pkg syscall/zx/io2, method (*ConnectionOptions) GetProtocolsWithDefault(NodeProtocols) NodeProtocols
+pkg syscall/zx/io2, method (*ConnectionOptions) GetRightsRequest() RightsRequest
+pkg syscall/zx/io2, method (*ConnectionOptions) GetRightsRequestWithDefault(RightsRequest) RightsRequest
+pkg syscall/zx/io2, method (*ConnectionOptions) GetUnknownData() map[uint64]fidl.UnknownData
+pkg syscall/zx/io2, method (*ConnectionOptions) HasFlags() bool
+pkg syscall/zx/io2, method (*ConnectionOptions) HasProtocols() bool
+pkg syscall/zx/io2, method (*ConnectionOptions) HasRightsRequest() bool
+pkg syscall/zx/io2, method (*ConnectionOptions) HasUnknownData() bool
+pkg syscall/zx/io2, method (*ConnectionOptions) SetFlags(ConnectionFlags)
+pkg syscall/zx/io2, method (*ConnectionOptions) SetProtocols(NodeProtocols)
+pkg syscall/zx/io2, method (*ConnectionOptions) SetRightsRequest(RightsRequest)
+pkg syscall/zx/io2, method (*ConnectorInfo) GetUnknownData() map[uint64]fidl.UnknownData
+pkg syscall/zx/io2, method (*ConnectorInfo) HasUnknownData() bool
+pkg syscall/zx/io2, method (*DebuglogEventProxy) Handle() *zx.Handle
+pkg syscall/zx/io2, method (*DebuglogEventProxy) OnConnectionInfo(ConnectionInfo) error
+pkg syscall/zx/io2, method (*DebuglogInfo) ClearDebuglog()
+pkg syscall/zx/io2, method (*DebuglogInfo) GetDebuglog() zx.Log
+pkg syscall/zx/io2, method (*DebuglogInfo) GetDebuglogWithDefault(zx.Log) zx.Log
+pkg syscall/zx/io2, method (*DebuglogInfo) GetUnknownData() map[uint64]fidl.UnknownData
+pkg syscall/zx/io2, method (*DebuglogInfo) HasDebuglog() bool
+pkg syscall/zx/io2, method (*DebuglogInfo) HasUnknownData() bool
+pkg syscall/zx/io2, method (*DebuglogInfo) SetDebuglog(zx.Log)
+pkg syscall/zx/io2, method (*DebuglogWithCtxInterface) Close(context.Context) error
+pkg syscall/zx/io2, method (*DebuglogWithCtxInterface) Describe(context.Context, ConnectionInfoQuery) (ConnectionInfo, error)
+pkg syscall/zx/io2, method (*DebuglogWithCtxInterface) ExpectOnConnectionInfo(context.Context) (ConnectionInfo, error)
+pkg syscall/zx/io2, method (*DebuglogWithCtxInterface) GetAttributes(context.Context, NodeAttributesQuery) (NodeGetAttributesResult, error)
+pkg syscall/zx/io2, method (*DebuglogWithCtxInterface) GetToken(context.Context) (NodeGetTokenResult, error)
+pkg syscall/zx/io2, method (*DebuglogWithCtxInterface) Handle() *zx.Handle
+pkg syscall/zx/io2, method (*DebuglogWithCtxInterface) Reopen(context.Context, ConnectionOptions, zx.Channel) error
+pkg syscall/zx/io2, method (*DebuglogWithCtxInterface) Sync(context.Context) (NodeSyncResult, error)
+pkg syscall/zx/io2, method (*DebuglogWithCtxInterface) UpdateAttributes(context.Context, NodeAttributes) (NodeUpdateAttributesResult, error)
+pkg syscall/zx/io2, method (*DebuglogWithCtxInterfaceRequest) Handle() *zx.Handle
+pkg syscall/zx/io2, method (*DebuglogWithCtxStub) Dispatch(fidl.DispatchArgs) (fidl.Message, bool, error)
+pkg syscall/zx/io2, method (*DeviceInfo) ClearEvent()
+pkg syscall/zx/io2, method (*DeviceInfo) GetEvent() zx.Handle
+pkg syscall/zx/io2, method (*DeviceInfo) GetEventWithDefault(zx.Handle) zx.Handle
+pkg syscall/zx/io2, method (*DeviceInfo) GetUnknownData() map[uint64]fidl.UnknownData
+pkg syscall/zx/io2, method (*DeviceInfo) HasEvent() bool
+pkg syscall/zx/io2, method (*DeviceInfo) HasUnknownData() bool
+pkg syscall/zx/io2, method (*DeviceInfo) SetEvent(zx.Handle)
+pkg syscall/zx/io2, method (*DirectoryEntry) ClearAbilities()
+pkg syscall/zx/io2, method (*DirectoryEntry) ClearId()
+pkg syscall/zx/io2, method (*DirectoryEntry) ClearName()
+pkg syscall/zx/io2, method (*DirectoryEntry) ClearProtocols()
+pkg syscall/zx/io2, method (*DirectoryEntry) GetAbilities() Operations
+pkg syscall/zx/io2, method (*DirectoryEntry) GetAbilitiesWithDefault(Operations) Operations
+pkg syscall/zx/io2, method (*DirectoryEntry) GetId() uint64
+pkg syscall/zx/io2, method (*DirectoryEntry) GetIdWithDefault(uint64) uint64
+pkg syscall/zx/io2, method (*DirectoryEntry) GetName() string
+pkg syscall/zx/io2, method (*DirectoryEntry) GetNameWithDefault(string) string
+pkg syscall/zx/io2, method (*DirectoryEntry) GetProtocols() NodeProtocols
+pkg syscall/zx/io2, method (*DirectoryEntry) GetProtocolsWithDefault(NodeProtocols) NodeProtocols
+pkg syscall/zx/io2, method (*DirectoryEntry) GetUnknownData() map[uint64]fidl.UnknownData
+pkg syscall/zx/io2, method (*DirectoryEntry) HasAbilities() bool
+pkg syscall/zx/io2, method (*DirectoryEntry) HasId() bool
+pkg syscall/zx/io2, method (*DirectoryEntry) HasName() bool
+pkg syscall/zx/io2, method (*DirectoryEntry) HasProtocols() bool
+pkg syscall/zx/io2, method (*DirectoryEntry) HasUnknownData() bool
+pkg syscall/zx/io2, method (*DirectoryEntry) SetAbilities(Operations)
+pkg syscall/zx/io2, method (*DirectoryEntry) SetId(uint64)
+pkg syscall/zx/io2, method (*DirectoryEntry) SetName(string)
+pkg syscall/zx/io2, method (*DirectoryEntry) SetProtocols(NodeProtocols)
+pkg syscall/zx/io2, method (*DirectoryEnumerateOptions) GetUnknownData() map[uint64]fidl.UnknownData
+pkg syscall/zx/io2, method (*DirectoryEnumerateOptions) HasUnknownData() bool
+pkg syscall/zx/io2, method (*DirectoryEventProxy) Handle() *zx.Handle
+pkg syscall/zx/io2, method (*DirectoryEventProxy) OnConnectionInfo(ConnectionInfo) error
+pkg syscall/zx/io2, method (*DirectoryInfo) GetUnknownData() map[uint64]fidl.UnknownData
+pkg syscall/zx/io2, method (*DirectoryInfo) HasUnknownData() bool
+pkg syscall/zx/io2, method (*DirectoryIteratorEventProxy) Handle() *zx.Handle
+pkg syscall/zx/io2, method (*DirectoryIteratorGetNextResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/io2, method (*DirectoryIteratorGetNextResult) Ordinal() uint64
+pkg syscall/zx/io2, method (*DirectoryIteratorGetNextResult) SetErr(int32)
+pkg syscall/zx/io2, method (*DirectoryIteratorGetNextResult) SetResponse(DirectoryIteratorGetNextResponse)
+pkg syscall/zx/io2, method (*DirectoryIteratorGetNextResult) Which() I_directoryIteratorGetNextResultTag
+pkg syscall/zx/io2, method (*DirectoryIteratorWithCtxInterface) GetNext(context.Context) (DirectoryIteratorGetNextResult, error)
+pkg syscall/zx/io2, method (*DirectoryIteratorWithCtxInterface) Handle() *zx.Handle
+pkg syscall/zx/io2, method (*DirectoryIteratorWithCtxInterfaceRequest) Handle() *zx.Handle
+pkg syscall/zx/io2, method (*DirectoryIteratorWithCtxStub) Dispatch(fidl.DispatchArgs) (fidl.Message, bool, error)
+pkg syscall/zx/io2, method (*DirectoryLinkResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/io2, method (*DirectoryLinkResult) Ordinal() uint64
+pkg syscall/zx/io2, method (*DirectoryLinkResult) SetErr(int32)
+pkg syscall/zx/io2, method (*DirectoryLinkResult) SetResponse(DirectoryLinkResponse)
+pkg syscall/zx/io2, method (*DirectoryLinkResult) Which() I_directoryLinkResultTag
+pkg syscall/zx/io2, method (*DirectoryRenameResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/io2, method (*DirectoryRenameResult) Ordinal() uint64
+pkg syscall/zx/io2, method (*DirectoryRenameResult) SetErr(int32)
+pkg syscall/zx/io2, method (*DirectoryRenameResult) SetResponse(DirectoryRenameResponse)
+pkg syscall/zx/io2, method (*DirectoryRenameResult) Which() I_directoryRenameResultTag
+pkg syscall/zx/io2, method (*DirectoryUnlink2Response) Marshaler() fidl.Marshaler
+pkg syscall/zx/io2, method (*DirectoryUnlink2Result) Ordinal() uint64
+pkg syscall/zx/io2, method (*DirectoryUnlink2Result) SetErr(int32)
+pkg syscall/zx/io2, method (*DirectoryUnlink2Result) SetResponse(DirectoryUnlink2Response)
+pkg syscall/zx/io2, method (*DirectoryUnlink2Result) Which() I_directoryUnlink2ResultTag
+pkg syscall/zx/io2, method (*DirectoryUnlinkResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/io2, method (*DirectoryUnlinkResult) Ordinal() uint64
+pkg syscall/zx/io2, method (*DirectoryUnlinkResult) SetErr(int32)
+pkg syscall/zx/io2, method (*DirectoryUnlinkResult) SetResponse(DirectoryUnlinkResponse)
+pkg syscall/zx/io2, method (*DirectoryUnlinkResult) Which() I_directoryUnlinkResultTag
+pkg syscall/zx/io2, method (*DirectoryWatchOptions) GetUnknownData() map[uint64]fidl.UnknownData
+pkg syscall/zx/io2, method (*DirectoryWatchOptions) HasUnknownData() bool
+pkg syscall/zx/io2, method (*DirectoryWatchedEvent) GetUnknownData() fidl.UnknownData
+pkg syscall/zx/io2, method (*DirectoryWatchedEvent) Ordinal() uint64
+pkg syscall/zx/io2, method (*DirectoryWatchedEvent) SetAdded(DirectoryEntry)
+pkg syscall/zx/io2, method (*DirectoryWatchedEvent) SetExisting(DirectoryEntry)
+pkg syscall/zx/io2, method (*DirectoryWatchedEvent) SetIdle(IdleEvent)
+pkg syscall/zx/io2, method (*DirectoryWatchedEvent) SetRemoved(string)
+pkg syscall/zx/io2, method (*DirectoryWatchedEvent) Which() I_directoryWatchedEventTag
+pkg syscall/zx/io2, method (*DirectoryWatcherEventProxy) Handle() *zx.Handle
+pkg syscall/zx/io2, method (*DirectoryWatcherWithCtxInterface) GetNext(context.Context) ([]DirectoryWatchedEvent, error)
+pkg syscall/zx/io2, method (*DirectoryWatcherWithCtxInterface) Handle() *zx.Handle
+pkg syscall/zx/io2, method (*DirectoryWatcherWithCtxInterfaceRequest) Handle() *zx.Handle
+pkg syscall/zx/io2, method (*DirectoryWatcherWithCtxStub) Dispatch(fidl.DispatchArgs) (fidl.Message, bool, error)
+pkg syscall/zx/io2, method (*DirectoryWithCtxInterface) AddInotifyFilter(context.Context, string, InotifyWatchMask, uint32, zx.Socket) error
+pkg syscall/zx/io2, method (*DirectoryWithCtxInterface) Close(context.Context) error
+pkg syscall/zx/io2, method (*DirectoryWithCtxInterface) Describe(context.Context, ConnectionInfoQuery) (ConnectionInfo, error)
+pkg syscall/zx/io2, method (*DirectoryWithCtxInterface) Enumerate(context.Context, DirectoryEnumerateOptions, DirectoryIteratorWithCtxInterfaceRequest) error
+pkg syscall/zx/io2, method (*DirectoryWithCtxInterface) ExpectOnConnectionInfo(context.Context) (ConnectionInfo, error)
+pkg syscall/zx/io2, method (*DirectoryWithCtxInterface) GetAttributes(context.Context, NodeAttributesQuery) (NodeGetAttributesResult, error)
+pkg syscall/zx/io2, method (*DirectoryWithCtxInterface) GetToken(context.Context) (NodeGetTokenResult, error)
+pkg syscall/zx/io2, method (*DirectoryWithCtxInterface) Handle() *zx.Handle
+pkg syscall/zx/io2, method (*DirectoryWithCtxInterface) Link(context.Context, string, zx.Event, string) (DirectoryLinkResult, error)
+pkg syscall/zx/io2, method (*DirectoryWithCtxInterface) Open(context.Context, string, OpenMode, ConnectionOptions, zx.Channel) error
+pkg syscall/zx/io2, method (*DirectoryWithCtxInterface) Rename(context.Context, string, zx.Event, string) (DirectoryRenameResult, error)
+pkg syscall/zx/io2, method (*DirectoryWithCtxInterface) Reopen(context.Context, ConnectionOptions, zx.Channel) error
+pkg syscall/zx/io2, method (*DirectoryWithCtxInterface) Sync(context.Context) (NodeSyncResult, error)
+pkg syscall/zx/io2, method (*DirectoryWithCtxInterface) Unlink(context.Context, string) (DirectoryUnlinkResult, error)
+pkg syscall/zx/io2, method (*DirectoryWithCtxInterface) Unlink2(context.Context, string, UnlinkOptions) (DirectoryUnlink2Result, error)
+pkg syscall/zx/io2, method (*DirectoryWithCtxInterface) UpdateAttributes(context.Context, NodeAttributes) (NodeUpdateAttributesResult, error)
+pkg syscall/zx/io2, method (*DirectoryWithCtxInterface) Watch(context.Context, DirectoryWatchMask, DirectoryWatchOptions, DirectoryWatcherWithCtxInterfaceRequest) error
+pkg syscall/zx/io2, method (*DirectoryWithCtxInterfaceRequest) Handle() *zx.Handle
+pkg syscall/zx/io2, method (*DirectoryWithCtxStub) Dispatch(fidl.DispatchArgs) (fidl.Message, bool, error)
+pkg syscall/zx/io2, method (*DirectoryWithCtxTransitionalBase) Unlink2(context.Context, string, UnlinkOptions) (DirectoryUnlink2Result, error)
+pkg syscall/zx/io2, method (*FileEventProxy) Handle() *zx.Handle
+pkg syscall/zx/io2, method (*FileEventProxy) OnConnectionInfo(ConnectionInfo) error
+pkg syscall/zx/io2, method (*FileGetMemRangeResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/io2, method (*FileGetMemRangeResult) Ordinal() uint64
+pkg syscall/zx/io2, method (*FileGetMemRangeResult) SetErr(int32)
+pkg syscall/zx/io2, method (*FileGetMemRangeResult) SetResponse(FileGetMemRangeResponse)
+pkg syscall/zx/io2, method (*FileGetMemRangeResult) Which() I_fileGetMemRangeResultTag
+pkg syscall/zx/io2, method (*FileInfo) ClearIsAppend()
+pkg syscall/zx/io2, method (*FileInfo) ClearObserver()
+pkg syscall/zx/io2, method (*FileInfo) ClearStream()
+pkg syscall/zx/io2, method (*FileInfo) GetIsAppend() bool
+pkg syscall/zx/io2, method (*FileInfo) GetIsAppendWithDefault(bool) bool
+pkg syscall/zx/io2, method (*FileInfo) GetObserver() zx.Event
+pkg syscall/zx/io2, method (*FileInfo) GetObserverWithDefault(zx.Event) zx.Event
+pkg syscall/zx/io2, method (*FileInfo) GetStream() zx.Handle
+pkg syscall/zx/io2, method (*FileInfo) GetStreamWithDefault(zx.Handle) zx.Handle
+pkg syscall/zx/io2, method (*FileInfo) GetUnknownData() map[uint64]fidl.UnknownData
+pkg syscall/zx/io2, method (*FileInfo) HasIsAppend() bool
+pkg syscall/zx/io2, method (*FileInfo) HasObserver() bool
+pkg syscall/zx/io2, method (*FileInfo) HasStream() bool
+pkg syscall/zx/io2, method (*FileInfo) HasUnknownData() bool
+pkg syscall/zx/io2, method (*FileInfo) SetIsAppend(bool)
+pkg syscall/zx/io2, method (*FileInfo) SetObserver(zx.Event)
+pkg syscall/zx/io2, method (*FileInfo) SetStream(zx.Handle)
+pkg syscall/zx/io2, method (*FileReadAtResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/io2, method (*FileReadAtResult) Ordinal() uint64
+pkg syscall/zx/io2, method (*FileReadAtResult) SetErr(int32)
+pkg syscall/zx/io2, method (*FileReadAtResult) SetResponse(FileReadAtResponse)
+pkg syscall/zx/io2, method (*FileReadAtResult) Which() I_fileReadAtResultTag
+pkg syscall/zx/io2, method (*FileReadResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/io2, method (*FileReadResult) Ordinal() uint64
+pkg syscall/zx/io2, method (*FileReadResult) SetErr(int32)
+pkg syscall/zx/io2, method (*FileReadResult) SetResponse(FileReadResponse)
+pkg syscall/zx/io2, method (*FileReadResult) Which() I_fileReadResultTag
+pkg syscall/zx/io2, method (*FileResizeResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/io2, method (*FileResizeResult) Ordinal() uint64
+pkg syscall/zx/io2, method (*FileResizeResult) SetErr(int32)
+pkg syscall/zx/io2, method (*FileResizeResult) SetResponse(FileResizeResponse)
+pkg syscall/zx/io2, method (*FileResizeResult) Which() I_fileResizeResultTag
+pkg syscall/zx/io2, method (*FileSeekResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/io2, method (*FileSeekResult) Ordinal() uint64
+pkg syscall/zx/io2, method (*FileSeekResult) SetErr(int32)
+pkg syscall/zx/io2, method (*FileSeekResult) SetResponse(FileSeekResponse)
+pkg syscall/zx/io2, method (*FileSeekResult) Which() I_fileSeekResultTag
+pkg syscall/zx/io2, method (*FileWithCtxInterface) AdvisoryLock(context.Context, AdvisoryLockRequest) (AdvisoryLockingAdvisoryLockResult, error)
+pkg syscall/zx/io2, method (*FileWithCtxInterface) Close(context.Context) error
+pkg syscall/zx/io2, method (*FileWithCtxInterface) Describe(context.Context, ConnectionInfoQuery) (ConnectionInfo, error)
+pkg syscall/zx/io2, method (*FileWithCtxInterface) ExpectOnConnectionInfo(context.Context) (ConnectionInfo, error)
+pkg syscall/zx/io2, method (*FileWithCtxInterface) GetAttributes(context.Context, NodeAttributesQuery) (NodeGetAttributesResult, error)
+pkg syscall/zx/io2, method (*FileWithCtxInterface) GetMemRange(context.Context, VmoFlags) (FileGetMemRangeResult, error)
+pkg syscall/zx/io2, method (*FileWithCtxInterface) GetToken(context.Context) (NodeGetTokenResult, error)
+pkg syscall/zx/io2, method (*FileWithCtxInterface) Handle() *zx.Handle
+pkg syscall/zx/io2, method (*FileWithCtxInterface) Read(context.Context, uint64) (FileReadResult, error)
+pkg syscall/zx/io2, method (*FileWithCtxInterface) ReadAt(context.Context, uint64, uint64) (FileReadAtResult, error)
+pkg syscall/zx/io2, method (*FileWithCtxInterface) Reopen(context.Context, ConnectionOptions, zx.Channel) error
+pkg syscall/zx/io2, method (*FileWithCtxInterface) Resize(context.Context, uint64) (FileResizeResult, error)
+pkg syscall/zx/io2, method (*FileWithCtxInterface) Seek(context.Context, SeekOrigin, int64) (FileSeekResult, error)
+pkg syscall/zx/io2, method (*FileWithCtxInterface) Sync(context.Context) (NodeSyncResult, error)
+pkg syscall/zx/io2, method (*FileWithCtxInterface) UpdateAttributes(context.Context, NodeAttributes) (NodeUpdateAttributesResult, error)
+pkg syscall/zx/io2, method (*FileWithCtxInterface) Write(context.Context, []uint8) (FileWriteResult, error)
+pkg syscall/zx/io2, method (*FileWithCtxInterface) WriteAt(context.Context, []uint8, uint64) (FileWriteAtResult, error)
+pkg syscall/zx/io2, method (*FileWithCtxInterfaceRequest) Handle() *zx.Handle
+pkg syscall/zx/io2, method (*FileWithCtxStub) Dispatch(fidl.DispatchArgs) (fidl.Message, bool, error)
+pkg syscall/zx/io2, method (*FileWithCtxTransitionalBase) AdvisoryLock(context.Context, AdvisoryLockRequest) (AdvisoryLockingAdvisoryLockResult, error)
+pkg syscall/zx/io2, method (*FileWriteAtResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/io2, method (*FileWriteAtResult) Ordinal() uint64
+pkg syscall/zx/io2, method (*FileWriteAtResult) SetErr(int32)
+pkg syscall/zx/io2, method (*FileWriteAtResult) SetResponse(FileWriteAtResponse)
+pkg syscall/zx/io2, method (*FileWriteAtResult) Which() I_fileWriteAtResultTag
+pkg syscall/zx/io2, method (*FileWriteResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/io2, method (*FileWriteResult) Ordinal() uint64
+pkg syscall/zx/io2, method (*FileWriteResult) SetErr(int32)
+pkg syscall/zx/io2, method (*FileWriteResult) SetResponse(FileWriteResponse)
+pkg syscall/zx/io2, method (*FileWriteResult) Which() I_fileWriteResultTag
+pkg syscall/zx/io2, method (*IdleEvent) Marshaler() fidl.Marshaler
+pkg syscall/zx/io2, method (*InotifierEventProxy) Handle() *zx.Handle
+pkg syscall/zx/io2, method (*InotifierWithCtxInterface) Handle() *zx.Handle
+pkg syscall/zx/io2, method (*InotifierWithCtxInterfaceRequest) Handle() *zx.Handle
+pkg syscall/zx/io2, method (*InotifierWithCtxStub) Dispatch(fidl.DispatchArgs) (fidl.Message, bool, error)
+pkg syscall/zx/io2, method (*InotifyEvent) Marshaler() fidl.Marshaler
+pkg syscall/zx/io2, method (*MemoryEventProxy) Handle() *zx.Handle
+pkg syscall/zx/io2, method (*MemoryEventProxy) OnConnectionInfo(ConnectionInfo) error
+pkg syscall/zx/io2, method (*MemoryInfo) ClearBuffer()
+pkg syscall/zx/io2, method (*MemoryInfo) GetBuffer() mem.Range
+pkg syscall/zx/io2, method (*MemoryInfo) GetBufferWithDefault(mem.Range) mem.Range
+pkg syscall/zx/io2, method (*MemoryInfo) GetUnknownData() map[uint64]fidl.UnknownData
+pkg syscall/zx/io2, method (*MemoryInfo) HasBuffer() bool
+pkg syscall/zx/io2, method (*MemoryInfo) HasUnknownData() bool
+pkg syscall/zx/io2, method (*MemoryInfo) SetBuffer(mem.Range)
+pkg syscall/zx/io2, method (*MemoryWithCtxInterface) Close(context.Context) error
+pkg syscall/zx/io2, method (*MemoryWithCtxInterface) Describe(context.Context, ConnectionInfoQuery) (ConnectionInfo, error)
+pkg syscall/zx/io2, method (*MemoryWithCtxInterface) ExpectOnConnectionInfo(context.Context) (ConnectionInfo, error)
+pkg syscall/zx/io2, method (*MemoryWithCtxInterface) GetAttributes(context.Context, NodeAttributesQuery) (NodeGetAttributesResult, error)
+pkg syscall/zx/io2, method (*MemoryWithCtxInterface) GetToken(context.Context) (NodeGetTokenResult, error)
+pkg syscall/zx/io2, method (*MemoryWithCtxInterface) Handle() *zx.Handle
+pkg syscall/zx/io2, method (*MemoryWithCtxInterface) Reopen(context.Context, ConnectionOptions, zx.Channel) error
+pkg syscall/zx/io2, method (*MemoryWithCtxInterface) Sync(context.Context) (NodeSyncResult, error)
+pkg syscall/zx/io2, method (*MemoryWithCtxInterface) UpdateAttributes(context.Context, NodeAttributes) (NodeUpdateAttributesResult, error)
+pkg syscall/zx/io2, method (*MemoryWithCtxInterfaceRequest) Handle() *zx.Handle
+pkg syscall/zx/io2, method (*MemoryWithCtxStub) Dispatch(fidl.DispatchArgs) (fidl.Message, bool, error)
+pkg syscall/zx/io2, method (*NodeAttributes) ClearAbilities()
+pkg syscall/zx/io2, method (*NodeAttributes) ClearContentSize()
+pkg syscall/zx/io2, method (*NodeAttributes) ClearCreationTime()
+pkg syscall/zx/io2, method (*NodeAttributes) ClearId()
+pkg syscall/zx/io2, method (*NodeAttributes) ClearLinkCount()
+pkg syscall/zx/io2, method (*NodeAttributes) ClearModificationTime()
+pkg syscall/zx/io2, method (*NodeAttributes) ClearProtocols()
+pkg syscall/zx/io2, method (*NodeAttributes) ClearStorageSize()
+pkg syscall/zx/io2, method (*NodeAttributes) GetAbilities() Operations
+pkg syscall/zx/io2, method (*NodeAttributes) GetAbilitiesWithDefault(Operations) Operations
+pkg syscall/zx/io2, method (*NodeAttributes) GetContentSize() uint64
+pkg syscall/zx/io2, method (*NodeAttributes) GetContentSizeWithDefault(uint64) uint64
+pkg syscall/zx/io2, method (*NodeAttributes) GetCreationTime() uint64
+pkg syscall/zx/io2, method (*NodeAttributes) GetCreationTimeWithDefault(uint64) uint64
+pkg syscall/zx/io2, method (*NodeAttributes) GetId() uint64
+pkg syscall/zx/io2, method (*NodeAttributes) GetIdWithDefault(uint64) uint64
+pkg syscall/zx/io2, method (*NodeAttributes) GetLinkCount() uint64
+pkg syscall/zx/io2, method (*NodeAttributes) GetLinkCountWithDefault(uint64) uint64
+pkg syscall/zx/io2, method (*NodeAttributes) GetModificationTime() uint64
+pkg syscall/zx/io2, method (*NodeAttributes) GetModificationTimeWithDefault(uint64) uint64
+pkg syscall/zx/io2, method (*NodeAttributes) GetProtocols() NodeProtocols
+pkg syscall/zx/io2, method (*NodeAttributes) GetProtocolsWithDefault(NodeProtocols) NodeProtocols
+pkg syscall/zx/io2, method (*NodeAttributes) GetStorageSize() uint64
+pkg syscall/zx/io2, method (*NodeAttributes) GetStorageSizeWithDefault(uint64) uint64
+pkg syscall/zx/io2, method (*NodeAttributes) GetUnknownData() map[uint64]fidl.UnknownData
+pkg syscall/zx/io2, method (*NodeAttributes) HasAbilities() bool
+pkg syscall/zx/io2, method (*NodeAttributes) HasContentSize() bool
+pkg syscall/zx/io2, method (*NodeAttributes) HasCreationTime() bool
+pkg syscall/zx/io2, method (*NodeAttributes) HasId() bool
+pkg syscall/zx/io2, method (*NodeAttributes) HasLinkCount() bool
+pkg syscall/zx/io2, method (*NodeAttributes) HasModificationTime() bool
+pkg syscall/zx/io2, method (*NodeAttributes) HasProtocols() bool
+pkg syscall/zx/io2, method (*NodeAttributes) HasStorageSize() bool
+pkg syscall/zx/io2, method (*NodeAttributes) HasUnknownData() bool
+pkg syscall/zx/io2, method (*NodeAttributes) SetAbilities(Operations)
+pkg syscall/zx/io2, method (*NodeAttributes) SetContentSize(uint64)
+pkg syscall/zx/io2, method (*NodeAttributes) SetCreationTime(uint64)
+pkg syscall/zx/io2, method (*NodeAttributes) SetId(uint64)
+pkg syscall/zx/io2, method (*NodeAttributes) SetLinkCount(uint64)
+pkg syscall/zx/io2, method (*NodeAttributes) SetModificationTime(uint64)
+pkg syscall/zx/io2, method (*NodeAttributes) SetProtocols(NodeProtocols)
+pkg syscall/zx/io2, method (*NodeAttributes) SetStorageSize(uint64)
+pkg syscall/zx/io2, method (*NodeEventProxy) Handle() *zx.Handle
+pkg syscall/zx/io2, method (*NodeEventProxy) OnConnectionInfo(ConnectionInfo) error
+pkg syscall/zx/io2, method (*NodeGetAttributesResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/io2, method (*NodeGetAttributesResult) Ordinal() uint64
+pkg syscall/zx/io2, method (*NodeGetAttributesResult) SetErr(int32)
+pkg syscall/zx/io2, method (*NodeGetAttributesResult) SetResponse(NodeGetAttributesResponse)
+pkg syscall/zx/io2, method (*NodeGetAttributesResult) Which() I_nodeGetAttributesResultTag
+pkg syscall/zx/io2, method (*NodeGetTokenResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/io2, method (*NodeGetTokenResult) Ordinal() uint64
+pkg syscall/zx/io2, method (*NodeGetTokenResult) SetErr(int32)
+pkg syscall/zx/io2, method (*NodeGetTokenResult) SetResponse(NodeGetTokenResponse)
+pkg syscall/zx/io2, method (*NodeGetTokenResult) Which() I_nodeGetTokenResultTag
+pkg syscall/zx/io2, method (*NodeSyncResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/io2, method (*NodeSyncResult) Ordinal() uint64
+pkg syscall/zx/io2, method (*NodeSyncResult) SetErr(int32)
+pkg syscall/zx/io2, method (*NodeSyncResult) SetResponse(NodeSyncResponse)
+pkg syscall/zx/io2, method (*NodeSyncResult) Which() I_nodeSyncResultTag
+pkg syscall/zx/io2, method (*NodeUpdateAttributesResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/io2, method (*NodeUpdateAttributesResult) Ordinal() uint64
+pkg syscall/zx/io2, method (*NodeUpdateAttributesResult) SetErr(int32)
+pkg syscall/zx/io2, method (*NodeUpdateAttributesResult) SetResponse(NodeUpdateAttributesResponse)
+pkg syscall/zx/io2, method (*NodeUpdateAttributesResult) Which() I_nodeUpdateAttributesResultTag
+pkg syscall/zx/io2, method (*NodeWithCtxInterface) Close(context.Context) error
+pkg syscall/zx/io2, method (*NodeWithCtxInterface) Describe(context.Context, ConnectionInfoQuery) (ConnectionInfo, error)
+pkg syscall/zx/io2, method (*NodeWithCtxInterface) ExpectOnConnectionInfo(context.Context) (ConnectionInfo, error)
+pkg syscall/zx/io2, method (*NodeWithCtxInterface) GetAttributes(context.Context, NodeAttributesQuery) (NodeGetAttributesResult, error)
+pkg syscall/zx/io2, method (*NodeWithCtxInterface) GetToken(context.Context) (NodeGetTokenResult, error)
+pkg syscall/zx/io2, method (*NodeWithCtxInterface) Handle() *zx.Handle
+pkg syscall/zx/io2, method (*NodeWithCtxInterface) Reopen(context.Context, ConnectionOptions, zx.Channel) error
+pkg syscall/zx/io2, method (*NodeWithCtxInterface) Sync(context.Context) (NodeSyncResult, error)
+pkg syscall/zx/io2, method (*NodeWithCtxInterface) UpdateAttributes(context.Context, NodeAttributes) (NodeUpdateAttributesResult, error)
+pkg syscall/zx/io2, method (*NodeWithCtxInterfaceRequest) Handle() *zx.Handle
+pkg syscall/zx/io2, method (*NodeWithCtxStub) Dispatch(fidl.DispatchArgs) (fidl.Message, bool, error)
+pkg syscall/zx/io2, method (*PipeEventProxy) Handle() *zx.Handle
+pkg syscall/zx/io2, method (*PipeEventProxy) OnConnectionInfo(ConnectionInfo) error
+pkg syscall/zx/io2, method (*PipeInfo) ClearSocket()
+pkg syscall/zx/io2, method (*PipeInfo) GetSocket() zx.Socket
+pkg syscall/zx/io2, method (*PipeInfo) GetSocketWithDefault(zx.Socket) zx.Socket
+pkg syscall/zx/io2, method (*PipeInfo) GetUnknownData() map[uint64]fidl.UnknownData
+pkg syscall/zx/io2, method (*PipeInfo) HasSocket() bool
+pkg syscall/zx/io2, method (*PipeInfo) HasUnknownData() bool
+pkg syscall/zx/io2, method (*PipeInfo) SetSocket(zx.Socket)
+pkg syscall/zx/io2, method (*PipeWithCtxInterface) Close(context.Context) error
+pkg syscall/zx/io2, method (*PipeWithCtxInterface) Describe(context.Context, ConnectionInfoQuery) (ConnectionInfo, error)
+pkg syscall/zx/io2, method (*PipeWithCtxInterface) ExpectOnConnectionInfo(context.Context) (ConnectionInfo, error)
+pkg syscall/zx/io2, method (*PipeWithCtxInterface) GetAttributes(context.Context, NodeAttributesQuery) (NodeGetAttributesResult, error)
+pkg syscall/zx/io2, method (*PipeWithCtxInterface) GetToken(context.Context) (NodeGetTokenResult, error)
+pkg syscall/zx/io2, method (*PipeWithCtxInterface) Handle() *zx.Handle
+pkg syscall/zx/io2, method (*PipeWithCtxInterface) Reopen(context.Context, ConnectionOptions, zx.Channel) error
+pkg syscall/zx/io2, method (*PipeWithCtxInterface) Sync(context.Context) (NodeSyncResult, error)
+pkg syscall/zx/io2, method (*PipeWithCtxInterface) UpdateAttributes(context.Context, NodeAttributes) (NodeUpdateAttributesResult, error)
+pkg syscall/zx/io2, method (*PipeWithCtxInterfaceRequest) Handle() *zx.Handle
+pkg syscall/zx/io2, method (*PipeWithCtxStub) Dispatch(fidl.DispatchArgs) (fidl.Message, bool, error)
+pkg syscall/zx/io2, method (*PosixSocketInfo) ClearSocket()
+pkg syscall/zx/io2, method (*PosixSocketInfo) GetSocket() zx.Socket
+pkg syscall/zx/io2, method (*PosixSocketInfo) GetSocketWithDefault(zx.Socket) zx.Socket
+pkg syscall/zx/io2, method (*PosixSocketInfo) GetUnknownData() map[uint64]fidl.UnknownData
+pkg syscall/zx/io2, method (*PosixSocketInfo) HasSocket() bool
+pkg syscall/zx/io2, method (*PosixSocketInfo) HasUnknownData() bool
+pkg syscall/zx/io2, method (*PosixSocketInfo) SetSocket(zx.Socket)
+pkg syscall/zx/io2, method (*Representation) GetUnknownData() fidl.UnknownData
+pkg syscall/zx/io2, method (*Representation) Ordinal() uint64
+pkg syscall/zx/io2, method (*Representation) SetConnector(ConnectorInfo)
+pkg syscall/zx/io2, method (*Representation) SetDebuglog(DebuglogInfo)
+pkg syscall/zx/io2, method (*Representation) SetDevice(DeviceInfo)
+pkg syscall/zx/io2, method (*Representation) SetDirectory(DirectoryInfo)
+pkg syscall/zx/io2, method (*Representation) SetFile(FileInfo)
+pkg syscall/zx/io2, method (*Representation) SetMemory(MemoryInfo)
+pkg syscall/zx/io2, method (*Representation) SetPipe(PipeInfo)
+pkg syscall/zx/io2, method (*Representation) SetPosixSocket(PosixSocketInfo)
+pkg syscall/zx/io2, method (*Representation) SetTty(TtyInfo)
+pkg syscall/zx/io2, method (*Representation) Which() I_representationTag
+pkg syscall/zx/io2, method (*RightsRequest) Marshaler() fidl.Marshaler
+pkg syscall/zx/io2, method (*TtyInfo) ClearEvent()
+pkg syscall/zx/io2, method (*TtyInfo) GetEvent() zx.Handle
+pkg syscall/zx/io2, method (*TtyInfo) GetEventWithDefault(zx.Handle) zx.Handle
+pkg syscall/zx/io2, method (*TtyInfo) GetUnknownData() map[uint64]fidl.UnknownData
+pkg syscall/zx/io2, method (*TtyInfo) HasEvent() bool
+pkg syscall/zx/io2, method (*TtyInfo) HasUnknownData() bool
+pkg syscall/zx/io2, method (*TtyInfo) SetEvent(zx.Handle)
+pkg syscall/zx/io2, method (*UnlinkOptions) ClearFlags()
+pkg syscall/zx/io2, method (*UnlinkOptions) GetFlags() UnlinkFlags
+pkg syscall/zx/io2, method (*UnlinkOptions) GetFlagsWithDefault(UnlinkFlags) UnlinkFlags
+pkg syscall/zx/io2, method (*UnlinkOptions) GetUnknownData() map[uint64]fidl.UnknownData
+pkg syscall/zx/io2, method (*UnlinkOptions) HasFlags() bool
+pkg syscall/zx/io2, method (*UnlinkOptions) HasUnknownData() bool
+pkg syscall/zx/io2, method (*UnlinkOptions) SetFlags(UnlinkFlags)
+pkg syscall/zx/io2, method (AdvisoryLockType) I_EnumIsStrict() bool
+pkg syscall/zx/io2, method (AdvisoryLockType) I_EnumValues() []AdvisoryLockType
+pkg syscall/zx/io2, method (AdvisoryLockType) IsUnknown() bool
+pkg syscall/zx/io2, method (AdvisoryLockType) String() string
+pkg syscall/zx/io2, method (ConnectionFlags) ClearBits(ConnectionFlags) ConnectionFlags
+pkg syscall/zx/io2, method (ConnectionFlags) GetUnknownBits() uint64
+pkg syscall/zx/io2, method (ConnectionFlags) HasBits(ConnectionFlags) bool
+pkg syscall/zx/io2, method (ConnectionFlags) HasUnknownBits() bool
+pkg syscall/zx/io2, method (ConnectionFlags) I_BitsIsStrict() bool
+pkg syscall/zx/io2, method (ConnectionFlags) I_BitsMask() ConnectionFlags
+pkg syscall/zx/io2, method (ConnectionFlags) InvertBits() ConnectionFlags
+pkg syscall/zx/io2, method (ConnectionFlags) String() string
+pkg syscall/zx/io2, method (ConnectionInfoQuery) ClearBits(ConnectionInfoQuery) ConnectionInfoQuery
+pkg syscall/zx/io2, method (ConnectionInfoQuery) GetUnknownBits() uint64
+pkg syscall/zx/io2, method (ConnectionInfoQuery) HasBits(ConnectionInfoQuery) bool
+pkg syscall/zx/io2, method (ConnectionInfoQuery) HasUnknownBits() bool
+pkg syscall/zx/io2, method (ConnectionInfoQuery) I_BitsIsStrict() bool
+pkg syscall/zx/io2, method (ConnectionInfoQuery) I_BitsMask() ConnectionInfoQuery
+pkg syscall/zx/io2, method (ConnectionInfoQuery) InvertBits() ConnectionInfoQuery
+pkg syscall/zx/io2, method (ConnectionInfoQuery) String() string
+pkg syscall/zx/io2, method (DeviceSignal) ClearBits(DeviceSignal) DeviceSignal
+pkg syscall/zx/io2, method (DeviceSignal) GetUnknownBits() uint64
+pkg syscall/zx/io2, method (DeviceSignal) HasBits(DeviceSignal) bool
+pkg syscall/zx/io2, method (DeviceSignal) HasUnknownBits() bool
+pkg syscall/zx/io2, method (DeviceSignal) I_BitsIsStrict() bool
+pkg syscall/zx/io2, method (DeviceSignal) I_BitsMask() DeviceSignal
+pkg syscall/zx/io2, method (DeviceSignal) InvertBits() DeviceSignal
+pkg syscall/zx/io2, method (DeviceSignal) String() string
+pkg syscall/zx/io2, method (DirectoryWatchMask) ClearBits(DirectoryWatchMask) DirectoryWatchMask
+pkg syscall/zx/io2, method (DirectoryWatchMask) GetUnknownBits() uint64
+pkg syscall/zx/io2, method (DirectoryWatchMask) HasBits(DirectoryWatchMask) bool
+pkg syscall/zx/io2, method (DirectoryWatchMask) HasUnknownBits() bool
+pkg syscall/zx/io2, method (DirectoryWatchMask) I_BitsIsStrict() bool
+pkg syscall/zx/io2, method (DirectoryWatchMask) I_BitsMask() DirectoryWatchMask
+pkg syscall/zx/io2, method (DirectoryWatchMask) InvertBits() DirectoryWatchMask
+pkg syscall/zx/io2, method (DirectoryWatchMask) String() string
+pkg syscall/zx/io2, method (FileSignal) ClearBits(FileSignal) FileSignal
+pkg syscall/zx/io2, method (FileSignal) GetUnknownBits() uint64
+pkg syscall/zx/io2, method (FileSignal) HasBits(FileSignal) bool
+pkg syscall/zx/io2, method (FileSignal) HasUnknownBits() bool
+pkg syscall/zx/io2, method (FileSignal) I_BitsIsStrict() bool
+pkg syscall/zx/io2, method (FileSignal) I_BitsMask() FileSignal
+pkg syscall/zx/io2, method (FileSignal) InvertBits() FileSignal
+pkg syscall/zx/io2, method (FileSignal) String() string
+pkg syscall/zx/io2, method (InotifyWatchMask) ClearBits(InotifyWatchMask) InotifyWatchMask
+pkg syscall/zx/io2, method (InotifyWatchMask) GetUnknownBits() uint64
+pkg syscall/zx/io2, method (InotifyWatchMask) HasBits(InotifyWatchMask) bool
+pkg syscall/zx/io2, method (InotifyWatchMask) HasUnknownBits() bool
+pkg syscall/zx/io2, method (InotifyWatchMask) I_BitsIsStrict() bool
+pkg syscall/zx/io2, method (InotifyWatchMask) I_BitsMask() InotifyWatchMask
+pkg syscall/zx/io2, method (InotifyWatchMask) InvertBits() InotifyWatchMask
+pkg syscall/zx/io2, method (InotifyWatchMask) String() string
+pkg syscall/zx/io2, method (NodeAttributesQuery) ClearBits(NodeAttributesQuery) NodeAttributesQuery
+pkg syscall/zx/io2, method (NodeAttributesQuery) GetUnknownBits() uint64
+pkg syscall/zx/io2, method (NodeAttributesQuery) HasBits(NodeAttributesQuery) bool
+pkg syscall/zx/io2, method (NodeAttributesQuery) HasUnknownBits() bool
+pkg syscall/zx/io2, method (NodeAttributesQuery) I_BitsIsStrict() bool
+pkg syscall/zx/io2, method (NodeAttributesQuery) I_BitsMask() NodeAttributesQuery
+pkg syscall/zx/io2, method (NodeAttributesQuery) InvertBits() NodeAttributesQuery
+pkg syscall/zx/io2, method (NodeAttributesQuery) String() string
+pkg syscall/zx/io2, method (NodeProtocols) ClearBits(NodeProtocols) NodeProtocols
+pkg syscall/zx/io2, method (NodeProtocols) GetUnknownBits() uint64
+pkg syscall/zx/io2, method (NodeProtocols) HasBits(NodeProtocols) bool
+pkg syscall/zx/io2, method (NodeProtocols) HasUnknownBits() bool
+pkg syscall/zx/io2, method (NodeProtocols) I_BitsIsStrict() bool
+pkg syscall/zx/io2, method (NodeProtocols) I_BitsMask() NodeProtocols
+pkg syscall/zx/io2, method (NodeProtocols) InvertBits() NodeProtocols
+pkg syscall/zx/io2, method (NodeProtocols) String() string
+pkg syscall/zx/io2, method (OpenMode) I_EnumIsStrict() bool
+pkg syscall/zx/io2, method (OpenMode) I_EnumValues() []OpenMode
+pkg syscall/zx/io2, method (OpenMode) IsUnknown() bool
+pkg syscall/zx/io2, method (OpenMode) String() string
+pkg syscall/zx/io2, method (Operations) ClearBits(Operations) Operations
+pkg syscall/zx/io2, method (Operations) GetUnknownBits() uint64
+pkg syscall/zx/io2, method (Operations) HasBits(Operations) bool
+pkg syscall/zx/io2, method (Operations) HasUnknownBits() bool
+pkg syscall/zx/io2, method (Operations) I_BitsIsStrict() bool
+pkg syscall/zx/io2, method (Operations) I_BitsMask() Operations
+pkg syscall/zx/io2, method (Operations) InvertBits() Operations
+pkg syscall/zx/io2, method (Operations) String() string
+pkg syscall/zx/io2, method (RightsResolution) I_EnumIsStrict() bool
+pkg syscall/zx/io2, method (RightsResolution) I_EnumValues() []RightsResolution
+pkg syscall/zx/io2, method (RightsResolution) IsUnknown() bool
+pkg syscall/zx/io2, method (RightsResolution) String() string
+pkg syscall/zx/io2, method (SeekOrigin) I_EnumIsStrict() bool
+pkg syscall/zx/io2, method (SeekOrigin) I_EnumValues() []SeekOrigin
+pkg syscall/zx/io2, method (SeekOrigin) IsUnknown() bool
+pkg syscall/zx/io2, method (SeekOrigin) String() string
+pkg syscall/zx/io2, method (UnlinkFlags) ClearBits(UnlinkFlags) UnlinkFlags
+pkg syscall/zx/io2, method (UnlinkFlags) GetUnknownBits() uint64
+pkg syscall/zx/io2, method (UnlinkFlags) HasBits(UnlinkFlags) bool
+pkg syscall/zx/io2, method (UnlinkFlags) HasUnknownBits() bool
+pkg syscall/zx/io2, method (UnlinkFlags) I_BitsIsStrict() bool
+pkg syscall/zx/io2, method (UnlinkFlags) I_BitsMask() UnlinkFlags
+pkg syscall/zx/io2, method (UnlinkFlags) InvertBits() UnlinkFlags
+pkg syscall/zx/io2, method (UnlinkFlags) String() string
+pkg syscall/zx/io2, method (VmoFlags) ClearBits(VmoFlags) VmoFlags
+pkg syscall/zx/io2, method (VmoFlags) GetUnknownBits() uint64
+pkg syscall/zx/io2, method (VmoFlags) HasBits(VmoFlags) bool
+pkg syscall/zx/io2, method (VmoFlags) HasUnknownBits() bool
+pkg syscall/zx/io2, method (VmoFlags) I_BitsIsStrict() bool
+pkg syscall/zx/io2, method (VmoFlags) I_BitsMask() VmoFlags
+pkg syscall/zx/io2, method (VmoFlags) InvertBits() VmoFlags
+pkg syscall/zx/io2, method (VmoFlags) String() string
+pkg syscall/zx/io2, type AdvisoryLockRange struct
+pkg syscall/zx/io2, type AdvisoryLockRange struct, Length int64
+pkg syscall/zx/io2, type AdvisoryLockRange struct, Offset int64
+pkg syscall/zx/io2, type AdvisoryLockRange struct, Origin SeekOrigin
+pkg syscall/zx/io2, type AdvisoryLockRequest struct
+pkg syscall/zx/io2, type AdvisoryLockRequest struct, I_unknownData interface{}
+pkg syscall/zx/io2, type AdvisoryLockRequest struct, Range AdvisoryLockRange
+pkg syscall/zx/io2, type AdvisoryLockRequest struct, RangePresent bool
+pkg syscall/zx/io2, type AdvisoryLockRequest struct, Type AdvisoryLockType
+pkg syscall/zx/io2, type AdvisoryLockRequest struct, TypePresent bool
+pkg syscall/zx/io2, type AdvisoryLockRequest struct, Wait bool
+pkg syscall/zx/io2, type AdvisoryLockRequest struct, WaitPresent bool
+pkg syscall/zx/io2, type AdvisoryLockType uint32
+pkg syscall/zx/io2, type AdvisoryLockingAdvisoryLockResponse struct
+pkg syscall/zx/io2, type AdvisoryLockingAdvisoryLockResult struct
+pkg syscall/zx/io2, type AdvisoryLockingAdvisoryLockResult struct, Err int32
+pkg syscall/zx/io2, type AdvisoryLockingAdvisoryLockResult struct, Response AdvisoryLockingAdvisoryLockResponse
+pkg syscall/zx/io2, type AdvisoryLockingAdvisoryLockResult struct, embedded I_advisoryLockingAdvisoryLockResultTag
+pkg syscall/zx/io2, type AdvisoryLockingEventProxy struct
+pkg syscall/zx/io2, type AdvisoryLockingEventProxy struct, embedded zx.Channel
+pkg syscall/zx/io2, type AdvisoryLockingWithCtx interface { AdvisoryLock }
+pkg syscall/zx/io2, type AdvisoryLockingWithCtx interface, AdvisoryLock(context.Context, AdvisoryLockRequest) (AdvisoryLockingAdvisoryLockResult, error)
+pkg syscall/zx/io2, type AdvisoryLockingWithCtxInterface struct
+pkg syscall/zx/io2, type AdvisoryLockingWithCtxInterface struct, embedded zx.Channel
+pkg syscall/zx/io2, type AdvisoryLockingWithCtxInterfaceRequest struct
+pkg syscall/zx/io2, type AdvisoryLockingWithCtxInterfaceRequest struct, embedded zx.Channel
+pkg syscall/zx/io2, type AdvisoryLockingWithCtxStub struct
+pkg syscall/zx/io2, type AdvisoryLockingWithCtxStub struct, Impl AdvisoryLockingWithCtx
+pkg syscall/zx/io2, type AdvisoryLockingWithCtxTransitionalBase struct
+pkg syscall/zx/io2, type ConnectionFlags uint64
+pkg syscall/zx/io2, type ConnectionInfo struct
+pkg syscall/zx/io2, type ConnectionInfo struct, AvailableOperations Operations
+pkg syscall/zx/io2, type ConnectionInfo struct, AvailableOperationsPresent bool
+pkg syscall/zx/io2, type ConnectionInfo struct, I_unknownData interface{}
+pkg syscall/zx/io2, type ConnectionInfo struct, Representation Representation
+pkg syscall/zx/io2, type ConnectionInfo struct, RepresentationPresent bool
+pkg syscall/zx/io2, type ConnectionInfo struct, Rights Operations
+pkg syscall/zx/io2, type ConnectionInfo struct, RightsPresent bool
+pkg syscall/zx/io2, type ConnectionInfoQuery uint64
+pkg syscall/zx/io2, type ConnectionOptions struct
+pkg syscall/zx/io2, type ConnectionOptions struct, Flags ConnectionFlags
+pkg syscall/zx/io2, type ConnectionOptions struct, FlagsPresent bool
+pkg syscall/zx/io2, type ConnectionOptions struct, I_unknownData interface{}
+pkg syscall/zx/io2, type ConnectionOptions struct, Protocols NodeProtocols
+pkg syscall/zx/io2, type ConnectionOptions struct, ProtocolsPresent bool
+pkg syscall/zx/io2, type ConnectionOptions struct, RightsRequest RightsRequest
+pkg syscall/zx/io2, type ConnectionOptions struct, RightsRequestPresent bool
+pkg syscall/zx/io2, type ConnectorInfo struct
+pkg syscall/zx/io2, type ConnectorInfo struct, I_unknownData interface{}
+pkg syscall/zx/io2, type DebuglogEventProxy struct
+pkg syscall/zx/io2, type DebuglogEventProxy struct, embedded zx.Channel
+pkg syscall/zx/io2, type DebuglogInfo struct
+pkg syscall/zx/io2, type DebuglogInfo struct, Debuglog zx.Log
+pkg syscall/zx/io2, type DebuglogInfo struct, DebuglogPresent bool
+pkg syscall/zx/io2, type DebuglogInfo struct, I_unknownData interface{}
+pkg syscall/zx/io2, type DebuglogWithCtx interface { Close, Describe, GetAttributes, GetToken, Reopen, Sync, UpdateAttributes }
+pkg syscall/zx/io2, type DebuglogWithCtx interface, Close(context.Context) error
+pkg syscall/zx/io2, type DebuglogWithCtx interface, Describe(context.Context, ConnectionInfoQuery) (ConnectionInfo, error)
+pkg syscall/zx/io2, type DebuglogWithCtx interface, GetAttributes(context.Context, NodeAttributesQuery) (NodeGetAttributesResult, error)
+pkg syscall/zx/io2, type DebuglogWithCtx interface, GetToken(context.Context) (NodeGetTokenResult, error)
+pkg syscall/zx/io2, type DebuglogWithCtx interface, Reopen(context.Context, ConnectionOptions, zx.Channel) error
+pkg syscall/zx/io2, type DebuglogWithCtx interface, Sync(context.Context) (NodeSyncResult, error)
+pkg syscall/zx/io2, type DebuglogWithCtx interface, UpdateAttributes(context.Context, NodeAttributes) (NodeUpdateAttributesResult, error)
+pkg syscall/zx/io2, type DebuglogWithCtxInterface struct
+pkg syscall/zx/io2, type DebuglogWithCtxInterface struct, embedded zx.Channel
+pkg syscall/zx/io2, type DebuglogWithCtxInterfaceRequest struct
+pkg syscall/zx/io2, type DebuglogWithCtxInterfaceRequest struct, embedded zx.Channel
+pkg syscall/zx/io2, type DebuglogWithCtxStub struct
+pkg syscall/zx/io2, type DebuglogWithCtxStub struct, Impl DebuglogWithCtx
+pkg syscall/zx/io2, type DebuglogWithCtxTransitionalBase struct
+pkg syscall/zx/io2, type DeviceInfo struct
+pkg syscall/zx/io2, type DeviceInfo struct, Event zx.Handle
+pkg syscall/zx/io2, type DeviceInfo struct, EventPresent bool
+pkg syscall/zx/io2, type DeviceInfo struct, I_unknownData interface{}
+pkg syscall/zx/io2, type DeviceSignal uint32
+pkg syscall/zx/io2, type DirectoryEntry struct
+pkg syscall/zx/io2, type DirectoryEntry struct, Abilities Operations
+pkg syscall/zx/io2, type DirectoryEntry struct, AbilitiesPresent bool
+pkg syscall/zx/io2, type DirectoryEntry struct, I_unknownData interface{}
+pkg syscall/zx/io2, type DirectoryEntry struct, Id uint64
+pkg syscall/zx/io2, type DirectoryEntry struct, IdPresent bool
+pkg syscall/zx/io2, type DirectoryEntry struct, Name string
+pkg syscall/zx/io2, type DirectoryEntry struct, NamePresent bool
+pkg syscall/zx/io2, type DirectoryEntry struct, Protocols NodeProtocols
+pkg syscall/zx/io2, type DirectoryEntry struct, ProtocolsPresent bool
+pkg syscall/zx/io2, type DirectoryEnumerateOptions struct
+pkg syscall/zx/io2, type DirectoryEnumerateOptions struct, I_unknownData interface{}
+pkg syscall/zx/io2, type DirectoryEventProxy struct
+pkg syscall/zx/io2, type DirectoryEventProxy struct, embedded zx.Channel
+pkg syscall/zx/io2, type DirectoryInfo struct
+pkg syscall/zx/io2, type DirectoryInfo struct, I_unknownData interface{}
+pkg syscall/zx/io2, type DirectoryIteratorEventProxy struct
+pkg syscall/zx/io2, type DirectoryIteratorEventProxy struct, embedded zx.Channel
+pkg syscall/zx/io2, type DirectoryIteratorGetNextResponse struct
+pkg syscall/zx/io2, type DirectoryIteratorGetNextResponse struct, Entries []DirectoryEntry
+pkg syscall/zx/io2, type DirectoryIteratorGetNextResult struct
+pkg syscall/zx/io2, type DirectoryIteratorGetNextResult struct, Err int32
+pkg syscall/zx/io2, type DirectoryIteratorGetNextResult struct, Response DirectoryIteratorGetNextResponse
+pkg syscall/zx/io2, type DirectoryIteratorGetNextResult struct, embedded I_directoryIteratorGetNextResultTag
+pkg syscall/zx/io2, type DirectoryIteratorWithCtx interface { GetNext }
+pkg syscall/zx/io2, type DirectoryIteratorWithCtx interface, GetNext(context.Context) (DirectoryIteratorGetNextResult, error)
+pkg syscall/zx/io2, type DirectoryIteratorWithCtxInterface struct
+pkg syscall/zx/io2, type DirectoryIteratorWithCtxInterface struct, embedded zx.Channel
+pkg syscall/zx/io2, type DirectoryIteratorWithCtxInterfaceRequest struct
+pkg syscall/zx/io2, type DirectoryIteratorWithCtxInterfaceRequest struct, embedded zx.Channel
+pkg syscall/zx/io2, type DirectoryIteratorWithCtxStub struct
+pkg syscall/zx/io2, type DirectoryIteratorWithCtxStub struct, Impl DirectoryIteratorWithCtx
+pkg syscall/zx/io2, type DirectoryIteratorWithCtxTransitionalBase struct
+pkg syscall/zx/io2, type DirectoryLinkResponse struct
+pkg syscall/zx/io2, type DirectoryLinkResult struct
+pkg syscall/zx/io2, type DirectoryLinkResult struct, Err int32
+pkg syscall/zx/io2, type DirectoryLinkResult struct, Response DirectoryLinkResponse
+pkg syscall/zx/io2, type DirectoryLinkResult struct, embedded I_directoryLinkResultTag
+pkg syscall/zx/io2, type DirectoryRenameResponse struct
+pkg syscall/zx/io2, type DirectoryRenameResult struct
+pkg syscall/zx/io2, type DirectoryRenameResult struct, Err int32
+pkg syscall/zx/io2, type DirectoryRenameResult struct, Response DirectoryRenameResponse
+pkg syscall/zx/io2, type DirectoryRenameResult struct, embedded I_directoryRenameResultTag
+pkg syscall/zx/io2, type DirectoryUnlink2Response struct
+pkg syscall/zx/io2, type DirectoryUnlink2Result struct
+pkg syscall/zx/io2, type DirectoryUnlink2Result struct, Err int32
+pkg syscall/zx/io2, type DirectoryUnlink2Result struct, Response DirectoryUnlink2Response
+pkg syscall/zx/io2, type DirectoryUnlink2Result struct, embedded I_directoryUnlink2ResultTag
+pkg syscall/zx/io2, type DirectoryUnlinkResponse struct
+pkg syscall/zx/io2, type DirectoryUnlinkResult struct
+pkg syscall/zx/io2, type DirectoryUnlinkResult struct, Err int32
+pkg syscall/zx/io2, type DirectoryUnlinkResult struct, Response DirectoryUnlinkResponse
+pkg syscall/zx/io2, type DirectoryUnlinkResult struct, embedded I_directoryUnlinkResultTag
+pkg syscall/zx/io2, type DirectoryWatchMask uint64
+pkg syscall/zx/io2, type DirectoryWatchOptions struct
+pkg syscall/zx/io2, type DirectoryWatchOptions struct, I_unknownData interface{}
+pkg syscall/zx/io2, type DirectoryWatchedEvent struct
+pkg syscall/zx/io2, type DirectoryWatchedEvent struct, Added DirectoryEntry
+pkg syscall/zx/io2, type DirectoryWatchedEvent struct, Existing DirectoryEntry
+pkg syscall/zx/io2, type DirectoryWatchedEvent struct, I_unknownData interface{}
+pkg syscall/zx/io2, type DirectoryWatchedEvent struct, Idle IdleEvent
+pkg syscall/zx/io2, type DirectoryWatchedEvent struct, Removed string
+pkg syscall/zx/io2, type DirectoryWatchedEvent struct, embedded I_directoryWatchedEventTag
+pkg syscall/zx/io2, type DirectoryWatcherEventProxy struct
+pkg syscall/zx/io2, type DirectoryWatcherEventProxy struct, embedded zx.Channel
+pkg syscall/zx/io2, type DirectoryWatcherWithCtx interface { GetNext }
+pkg syscall/zx/io2, type DirectoryWatcherWithCtx interface, GetNext(context.Context) ([]DirectoryWatchedEvent, error)
+pkg syscall/zx/io2, type DirectoryWatcherWithCtxInterface struct
+pkg syscall/zx/io2, type DirectoryWatcherWithCtxInterface struct, embedded zx.Channel
+pkg syscall/zx/io2, type DirectoryWatcherWithCtxInterfaceRequest struct
+pkg syscall/zx/io2, type DirectoryWatcherWithCtxInterfaceRequest struct, embedded zx.Channel
+pkg syscall/zx/io2, type DirectoryWatcherWithCtxStub struct
+pkg syscall/zx/io2, type DirectoryWatcherWithCtxStub struct, Impl DirectoryWatcherWithCtx
+pkg syscall/zx/io2, type DirectoryWatcherWithCtxTransitionalBase struct
+pkg syscall/zx/io2, type DirectoryWithCtx interface { AddInotifyFilter, Close, Describe, Enumerate, GetAttributes, GetToken, Link, Open, Rename, Reopen, Sync, Unlink, Unlink2, UpdateAttributes, Watch }
+pkg syscall/zx/io2, type DirectoryWithCtx interface, AddInotifyFilter(context.Context, string, InotifyWatchMask, uint32, zx.Socket) error
+pkg syscall/zx/io2, type DirectoryWithCtx interface, Close(context.Context) error
+pkg syscall/zx/io2, type DirectoryWithCtx interface, Describe(context.Context, ConnectionInfoQuery) (ConnectionInfo, error)
+pkg syscall/zx/io2, type DirectoryWithCtx interface, Enumerate(context.Context, DirectoryEnumerateOptions, DirectoryIteratorWithCtxInterfaceRequest) error
+pkg syscall/zx/io2, type DirectoryWithCtx interface, GetAttributes(context.Context, NodeAttributesQuery) (NodeGetAttributesResult, error)
+pkg syscall/zx/io2, type DirectoryWithCtx interface, GetToken(context.Context) (NodeGetTokenResult, error)
+pkg syscall/zx/io2, type DirectoryWithCtx interface, Link(context.Context, string, zx.Event, string) (DirectoryLinkResult, error)
+pkg syscall/zx/io2, type DirectoryWithCtx interface, Open(context.Context, string, OpenMode, ConnectionOptions, zx.Channel) error
+pkg syscall/zx/io2, type DirectoryWithCtx interface, Rename(context.Context, string, zx.Event, string) (DirectoryRenameResult, error)
+pkg syscall/zx/io2, type DirectoryWithCtx interface, Reopen(context.Context, ConnectionOptions, zx.Channel) error
+pkg syscall/zx/io2, type DirectoryWithCtx interface, Sync(context.Context) (NodeSyncResult, error)
+pkg syscall/zx/io2, type DirectoryWithCtx interface, Unlink(context.Context, string) (DirectoryUnlinkResult, error)
+pkg syscall/zx/io2, type DirectoryWithCtx interface, Unlink2(context.Context, string, UnlinkOptions) (DirectoryUnlink2Result, error)
+pkg syscall/zx/io2, type DirectoryWithCtx interface, UpdateAttributes(context.Context, NodeAttributes) (NodeUpdateAttributesResult, error)
+pkg syscall/zx/io2, type DirectoryWithCtx interface, Watch(context.Context, DirectoryWatchMask, DirectoryWatchOptions, DirectoryWatcherWithCtxInterfaceRequest) error
+pkg syscall/zx/io2, type DirectoryWithCtxInterface struct
+pkg syscall/zx/io2, type DirectoryWithCtxInterface struct, embedded zx.Channel
+pkg syscall/zx/io2, type DirectoryWithCtxInterfaceRequest struct
+pkg syscall/zx/io2, type DirectoryWithCtxInterfaceRequest struct, embedded zx.Channel
+pkg syscall/zx/io2, type DirectoryWithCtxStub struct
+pkg syscall/zx/io2, type DirectoryWithCtxStub struct, Impl DirectoryWithCtx
+pkg syscall/zx/io2, type DirectoryWithCtxTransitionalBase struct
+pkg syscall/zx/io2, type FileEventProxy struct
+pkg syscall/zx/io2, type FileEventProxy struct, embedded zx.Channel
+pkg syscall/zx/io2, type FileGetMemRangeResponse struct
+pkg syscall/zx/io2, type FileGetMemRangeResponse struct, Buffer mem.Range
+pkg syscall/zx/io2, type FileGetMemRangeResult struct
+pkg syscall/zx/io2, type FileGetMemRangeResult struct, Err int32
+pkg syscall/zx/io2, type FileGetMemRangeResult struct, Response FileGetMemRangeResponse
+pkg syscall/zx/io2, type FileGetMemRangeResult struct, embedded I_fileGetMemRangeResultTag
+pkg syscall/zx/io2, type FileInfo struct
+pkg syscall/zx/io2, type FileInfo struct, I_unknownData interface{}
+pkg syscall/zx/io2, type FileInfo struct, IsAppend bool
+pkg syscall/zx/io2, type FileInfo struct, IsAppendPresent bool
+pkg syscall/zx/io2, type FileInfo struct, Observer zx.Event
+pkg syscall/zx/io2, type FileInfo struct, ObserverPresent bool
+pkg syscall/zx/io2, type FileInfo struct, Stream zx.Handle
+pkg syscall/zx/io2, type FileInfo struct, StreamPresent bool
+pkg syscall/zx/io2, type FileReadAtResponse struct
+pkg syscall/zx/io2, type FileReadAtResponse struct, Data []uint8
+pkg syscall/zx/io2, type FileReadAtResult struct
+pkg syscall/zx/io2, type FileReadAtResult struct, Err int32
+pkg syscall/zx/io2, type FileReadAtResult struct, Response FileReadAtResponse
+pkg syscall/zx/io2, type FileReadAtResult struct, embedded I_fileReadAtResultTag
+pkg syscall/zx/io2, type FileReadResponse struct
+pkg syscall/zx/io2, type FileReadResponse struct, Data []uint8
+pkg syscall/zx/io2, type FileReadResult struct
+pkg syscall/zx/io2, type FileReadResult struct, Err int32
+pkg syscall/zx/io2, type FileReadResult struct, Response FileReadResponse
+pkg syscall/zx/io2, type FileReadResult struct, embedded I_fileReadResultTag
+pkg syscall/zx/io2, type FileResizeResponse struct
+pkg syscall/zx/io2, type FileResizeResult struct
+pkg syscall/zx/io2, type FileResizeResult struct, Err int32
+pkg syscall/zx/io2, type FileResizeResult struct, Response FileResizeResponse
+pkg syscall/zx/io2, type FileResizeResult struct, embedded I_fileResizeResultTag
+pkg syscall/zx/io2, type FileSeekResponse struct
+pkg syscall/zx/io2, type FileSeekResponse struct, OffsetFromStart uint64
+pkg syscall/zx/io2, type FileSeekResult struct
+pkg syscall/zx/io2, type FileSeekResult struct, Err int32
+pkg syscall/zx/io2, type FileSeekResult struct, Response FileSeekResponse
+pkg syscall/zx/io2, type FileSeekResult struct, embedded I_fileSeekResultTag
+pkg syscall/zx/io2, type FileSignal uint32
+pkg syscall/zx/io2, type FileWithCtx interface { AdvisoryLock, Close, Describe, GetAttributes, GetMemRange, GetToken, Read, ReadAt, Reopen, Resize, Seek, Sync, UpdateAttributes, Write, WriteAt }
+pkg syscall/zx/io2, type FileWithCtx interface, AdvisoryLock(context.Context, AdvisoryLockRequest) (AdvisoryLockingAdvisoryLockResult, error)
+pkg syscall/zx/io2, type FileWithCtx interface, Close(context.Context) error
+pkg syscall/zx/io2, type FileWithCtx interface, Describe(context.Context, ConnectionInfoQuery) (ConnectionInfo, error)
+pkg syscall/zx/io2, type FileWithCtx interface, GetAttributes(context.Context, NodeAttributesQuery) (NodeGetAttributesResult, error)
+pkg syscall/zx/io2, type FileWithCtx interface, GetMemRange(context.Context, VmoFlags) (FileGetMemRangeResult, error)
+pkg syscall/zx/io2, type FileWithCtx interface, GetToken(context.Context) (NodeGetTokenResult, error)
+pkg syscall/zx/io2, type FileWithCtx interface, Read(context.Context, uint64) (FileReadResult, error)
+pkg syscall/zx/io2, type FileWithCtx interface, ReadAt(context.Context, uint64, uint64) (FileReadAtResult, error)
+pkg syscall/zx/io2, type FileWithCtx interface, Reopen(context.Context, ConnectionOptions, zx.Channel) error
+pkg syscall/zx/io2, type FileWithCtx interface, Resize(context.Context, uint64) (FileResizeResult, error)
+pkg syscall/zx/io2, type FileWithCtx interface, Seek(context.Context, SeekOrigin, int64) (FileSeekResult, error)
+pkg syscall/zx/io2, type FileWithCtx interface, Sync(context.Context) (NodeSyncResult, error)
+pkg syscall/zx/io2, type FileWithCtx interface, UpdateAttributes(context.Context, NodeAttributes) (NodeUpdateAttributesResult, error)
+pkg syscall/zx/io2, type FileWithCtx interface, Write(context.Context, []uint8) (FileWriteResult, error)
+pkg syscall/zx/io2, type FileWithCtx interface, WriteAt(context.Context, []uint8, uint64) (FileWriteAtResult, error)
+pkg syscall/zx/io2, type FileWithCtxInterface struct
+pkg syscall/zx/io2, type FileWithCtxInterface struct, embedded zx.Channel
+pkg syscall/zx/io2, type FileWithCtxInterfaceRequest struct
+pkg syscall/zx/io2, type FileWithCtxInterfaceRequest struct, embedded zx.Channel
+pkg syscall/zx/io2, type FileWithCtxStub struct
+pkg syscall/zx/io2, type FileWithCtxStub struct, Impl FileWithCtx
+pkg syscall/zx/io2, type FileWithCtxTransitionalBase struct
+pkg syscall/zx/io2, type FileWriteAtResponse struct
+pkg syscall/zx/io2, type FileWriteAtResponse struct, ActualCount uint64
+pkg syscall/zx/io2, type FileWriteAtResult struct
+pkg syscall/zx/io2, type FileWriteAtResult struct, Err int32
+pkg syscall/zx/io2, type FileWriteAtResult struct, Response FileWriteAtResponse
+pkg syscall/zx/io2, type FileWriteAtResult struct, embedded I_fileWriteAtResultTag
+pkg syscall/zx/io2, type FileWriteResponse struct
+pkg syscall/zx/io2, type FileWriteResponse struct, ActualCount uint64
+pkg syscall/zx/io2, type FileWriteResult struct
+pkg syscall/zx/io2, type FileWriteResult struct, Err int32
+pkg syscall/zx/io2, type FileWriteResult struct, Response FileWriteResponse
+pkg syscall/zx/io2, type FileWriteResult struct, embedded I_fileWriteResultTag
+pkg syscall/zx/io2, type I_advisoryLockingAdvisoryLockResultTag uint64
+pkg syscall/zx/io2, type I_directoryIteratorGetNextResultTag uint64
+pkg syscall/zx/io2, type I_directoryLinkResultTag uint64
+pkg syscall/zx/io2, type I_directoryRenameResultTag uint64
+pkg syscall/zx/io2, type I_directoryUnlink2ResultTag uint64
+pkg syscall/zx/io2, type I_directoryUnlinkResultTag uint64
+pkg syscall/zx/io2, type I_directoryWatchedEventTag uint64
+pkg syscall/zx/io2, type I_fileGetMemRangeResultTag uint64
+pkg syscall/zx/io2, type I_fileReadAtResultTag uint64
+pkg syscall/zx/io2, type I_fileReadResultTag uint64
+pkg syscall/zx/io2, type I_fileResizeResultTag uint64
+pkg syscall/zx/io2, type I_fileSeekResultTag uint64
+pkg syscall/zx/io2, type I_fileWriteAtResultTag uint64
+pkg syscall/zx/io2, type I_fileWriteResultTag uint64
+pkg syscall/zx/io2, type I_nodeGetAttributesResultTag uint64
+pkg syscall/zx/io2, type I_nodeGetTokenResultTag uint64
+pkg syscall/zx/io2, type I_nodeSyncResultTag uint64
+pkg syscall/zx/io2, type I_nodeUpdateAttributesResultTag uint64
+pkg syscall/zx/io2, type I_representationTag uint64
+pkg syscall/zx/io2, type IdleEvent struct
+pkg syscall/zx/io2, type InotifierEventProxy struct
+pkg syscall/zx/io2, type InotifierEventProxy struct, embedded zx.Channel
+pkg syscall/zx/io2, type InotifierWithCtx interface {}
+pkg syscall/zx/io2, type InotifierWithCtxInterface struct
+pkg syscall/zx/io2, type InotifierWithCtxInterface struct, embedded zx.Channel
+pkg syscall/zx/io2, type InotifierWithCtxInterfaceRequest struct
+pkg syscall/zx/io2, type InotifierWithCtxInterfaceRequest struct, embedded zx.Channel
+pkg syscall/zx/io2, type InotifierWithCtxStub struct
+pkg syscall/zx/io2, type InotifierWithCtxStub struct, Impl InotifierWithCtx
+pkg syscall/zx/io2, type InotifierWithCtxTransitionalBase struct
+pkg syscall/zx/io2, type InotifyEvent struct
+pkg syscall/zx/io2, type InotifyEvent struct, Cookie uint32
+pkg syscall/zx/io2, type InotifyEvent struct, Filename string
+pkg syscall/zx/io2, type InotifyEvent struct, Len uint32
+pkg syscall/zx/io2, type InotifyEvent struct, Mask InotifyWatchMask
+pkg syscall/zx/io2, type InotifyEvent struct, WatchDescriptor uint32
+pkg syscall/zx/io2, type InotifyWatchMask uint32
+pkg syscall/zx/io2, type MemoryEventProxy struct
+pkg syscall/zx/io2, type MemoryEventProxy struct, embedded zx.Channel
+pkg syscall/zx/io2, type MemoryInfo struct
+pkg syscall/zx/io2, type MemoryInfo struct, Buffer mem.Range
+pkg syscall/zx/io2, type MemoryInfo struct, BufferPresent bool
+pkg syscall/zx/io2, type MemoryInfo struct, I_unknownData interface{}
+pkg syscall/zx/io2, type MemoryWithCtx interface { Close, Describe, GetAttributes, GetToken, Reopen, Sync, UpdateAttributes }
+pkg syscall/zx/io2, type MemoryWithCtx interface, Close(context.Context) error
+pkg syscall/zx/io2, type MemoryWithCtx interface, Describe(context.Context, ConnectionInfoQuery) (ConnectionInfo, error)
+pkg syscall/zx/io2, type MemoryWithCtx interface, GetAttributes(context.Context, NodeAttributesQuery) (NodeGetAttributesResult, error)
+pkg syscall/zx/io2, type MemoryWithCtx interface, GetToken(context.Context) (NodeGetTokenResult, error)
+pkg syscall/zx/io2, type MemoryWithCtx interface, Reopen(context.Context, ConnectionOptions, zx.Channel) error
+pkg syscall/zx/io2, type MemoryWithCtx interface, Sync(context.Context) (NodeSyncResult, error)
+pkg syscall/zx/io2, type MemoryWithCtx interface, UpdateAttributes(context.Context, NodeAttributes) (NodeUpdateAttributesResult, error)
+pkg syscall/zx/io2, type MemoryWithCtxInterface struct
+pkg syscall/zx/io2, type MemoryWithCtxInterface struct, embedded zx.Channel
+pkg syscall/zx/io2, type MemoryWithCtxInterfaceRequest struct
+pkg syscall/zx/io2, type MemoryWithCtxInterfaceRequest struct, embedded zx.Channel
+pkg syscall/zx/io2, type MemoryWithCtxStub struct
+pkg syscall/zx/io2, type MemoryWithCtxStub struct, Impl MemoryWithCtx
+pkg syscall/zx/io2, type MemoryWithCtxTransitionalBase struct
+pkg syscall/zx/io2, type NodeAttributes struct
+pkg syscall/zx/io2, type NodeAttributes struct, Abilities Operations
+pkg syscall/zx/io2, type NodeAttributes struct, AbilitiesPresent bool
+pkg syscall/zx/io2, type NodeAttributes struct, ContentSize uint64
+pkg syscall/zx/io2, type NodeAttributes struct, ContentSizePresent bool
+pkg syscall/zx/io2, type NodeAttributes struct, CreationTime uint64
+pkg syscall/zx/io2, type NodeAttributes struct, CreationTimePresent bool
+pkg syscall/zx/io2, type NodeAttributes struct, I_unknownData interface{}
+pkg syscall/zx/io2, type NodeAttributes struct, Id uint64
+pkg syscall/zx/io2, type NodeAttributes struct, IdPresent bool
+pkg syscall/zx/io2, type NodeAttributes struct, LinkCount uint64
+pkg syscall/zx/io2, type NodeAttributes struct, LinkCountPresent bool
+pkg syscall/zx/io2, type NodeAttributes struct, ModificationTime uint64
+pkg syscall/zx/io2, type NodeAttributes struct, ModificationTimePresent bool
+pkg syscall/zx/io2, type NodeAttributes struct, Protocols NodeProtocols
+pkg syscall/zx/io2, type NodeAttributes struct, ProtocolsPresent bool
+pkg syscall/zx/io2, type NodeAttributes struct, StorageSize uint64
+pkg syscall/zx/io2, type NodeAttributes struct, StorageSizePresent bool
+pkg syscall/zx/io2, type NodeAttributesQuery uint64
+pkg syscall/zx/io2, type NodeEventProxy struct
+pkg syscall/zx/io2, type NodeEventProxy struct, embedded zx.Channel
+pkg syscall/zx/io2, type NodeGetAttributesResponse struct
+pkg syscall/zx/io2, type NodeGetAttributesResponse struct, Attributes NodeAttributes
+pkg syscall/zx/io2, type NodeGetAttributesResult struct
+pkg syscall/zx/io2, type NodeGetAttributesResult struct, Err int32
+pkg syscall/zx/io2, type NodeGetAttributesResult struct, Response NodeGetAttributesResponse
+pkg syscall/zx/io2, type NodeGetAttributesResult struct, embedded I_nodeGetAttributesResultTag
+pkg syscall/zx/io2, type NodeGetTokenResponse struct
+pkg syscall/zx/io2, type NodeGetTokenResponse struct, Token zx.Event
+pkg syscall/zx/io2, type NodeGetTokenResult struct
+pkg syscall/zx/io2, type NodeGetTokenResult struct, Err int32
+pkg syscall/zx/io2, type NodeGetTokenResult struct, Response NodeGetTokenResponse
+pkg syscall/zx/io2, type NodeGetTokenResult struct, embedded I_nodeGetTokenResultTag
+pkg syscall/zx/io2, type NodeProtocols uint64
+pkg syscall/zx/io2, type NodeSyncResponse struct
+pkg syscall/zx/io2, type NodeSyncResult struct
+pkg syscall/zx/io2, type NodeSyncResult struct, Err int32
+pkg syscall/zx/io2, type NodeSyncResult struct, Response NodeSyncResponse
+pkg syscall/zx/io2, type NodeSyncResult struct, embedded I_nodeSyncResultTag
+pkg syscall/zx/io2, type NodeUpdateAttributesResponse struct
+pkg syscall/zx/io2, type NodeUpdateAttributesResult struct
+pkg syscall/zx/io2, type NodeUpdateAttributesResult struct, Err int32
+pkg syscall/zx/io2, type NodeUpdateAttributesResult struct, Response NodeUpdateAttributesResponse
+pkg syscall/zx/io2, type NodeUpdateAttributesResult struct, embedded I_nodeUpdateAttributesResultTag
+pkg syscall/zx/io2, type NodeWithCtx interface { Close, Describe, GetAttributes, GetToken, Reopen, Sync, UpdateAttributes }
+pkg syscall/zx/io2, type NodeWithCtx interface, Close(context.Context) error
+pkg syscall/zx/io2, type NodeWithCtx interface, Describe(context.Context, ConnectionInfoQuery) (ConnectionInfo, error)
+pkg syscall/zx/io2, type NodeWithCtx interface, GetAttributes(context.Context, NodeAttributesQuery) (NodeGetAttributesResult, error)
+pkg syscall/zx/io2, type NodeWithCtx interface, GetToken(context.Context) (NodeGetTokenResult, error)
+pkg syscall/zx/io2, type NodeWithCtx interface, Reopen(context.Context, ConnectionOptions, zx.Channel) error
+pkg syscall/zx/io2, type NodeWithCtx interface, Sync(context.Context) (NodeSyncResult, error)
+pkg syscall/zx/io2, type NodeWithCtx interface, UpdateAttributes(context.Context, NodeAttributes) (NodeUpdateAttributesResult, error)
+pkg syscall/zx/io2, type NodeWithCtxInterface struct
+pkg syscall/zx/io2, type NodeWithCtxInterface struct, embedded zx.Channel
+pkg syscall/zx/io2, type NodeWithCtxInterfaceRequest struct
+pkg syscall/zx/io2, type NodeWithCtxInterfaceRequest struct, embedded zx.Channel
+pkg syscall/zx/io2, type NodeWithCtxStub struct
+pkg syscall/zx/io2, type NodeWithCtxStub struct, Impl NodeWithCtx
+pkg syscall/zx/io2, type NodeWithCtxTransitionalBase struct
+pkg syscall/zx/io2, type OpenMode uint32
+pkg syscall/zx/io2, type Operations uint64
+pkg syscall/zx/io2, type PipeEventProxy struct
+pkg syscall/zx/io2, type PipeEventProxy struct, embedded zx.Channel
+pkg syscall/zx/io2, type PipeInfo struct
+pkg syscall/zx/io2, type PipeInfo struct, I_unknownData interface{}
+pkg syscall/zx/io2, type PipeInfo struct, Socket zx.Socket
+pkg syscall/zx/io2, type PipeInfo struct, SocketPresent bool
+pkg syscall/zx/io2, type PipeWithCtx interface { Close, Describe, GetAttributes, GetToken, Reopen, Sync, UpdateAttributes }
+pkg syscall/zx/io2, type PipeWithCtx interface, Close(context.Context) error
+pkg syscall/zx/io2, type PipeWithCtx interface, Describe(context.Context, ConnectionInfoQuery) (ConnectionInfo, error)
+pkg syscall/zx/io2, type PipeWithCtx interface, GetAttributes(context.Context, NodeAttributesQuery) (NodeGetAttributesResult, error)
+pkg syscall/zx/io2, type PipeWithCtx interface, GetToken(context.Context) (NodeGetTokenResult, error)
+pkg syscall/zx/io2, type PipeWithCtx interface, Reopen(context.Context, ConnectionOptions, zx.Channel) error
+pkg syscall/zx/io2, type PipeWithCtx interface, Sync(context.Context) (NodeSyncResult, error)
+pkg syscall/zx/io2, type PipeWithCtx interface, UpdateAttributes(context.Context, NodeAttributes) (NodeUpdateAttributesResult, error)
+pkg syscall/zx/io2, type PipeWithCtxInterface struct
+pkg syscall/zx/io2, type PipeWithCtxInterface struct, embedded zx.Channel
+pkg syscall/zx/io2, type PipeWithCtxInterfaceRequest struct
+pkg syscall/zx/io2, type PipeWithCtxInterfaceRequest struct, embedded zx.Channel
+pkg syscall/zx/io2, type PipeWithCtxStub struct
+pkg syscall/zx/io2, type PipeWithCtxStub struct, Impl PipeWithCtx
+pkg syscall/zx/io2, type PipeWithCtxTransitionalBase struct
+pkg syscall/zx/io2, type PosixSocketInfo struct
+pkg syscall/zx/io2, type PosixSocketInfo struct, I_unknownData interface{}
+pkg syscall/zx/io2, type PosixSocketInfo struct, Socket zx.Socket
+pkg syscall/zx/io2, type PosixSocketInfo struct, SocketPresent bool
+pkg syscall/zx/io2, type Representation struct
+pkg syscall/zx/io2, type Representation struct, Connector ConnectorInfo
+pkg syscall/zx/io2, type Representation struct, Debuglog DebuglogInfo
+pkg syscall/zx/io2, type Representation struct, Device DeviceInfo
+pkg syscall/zx/io2, type Representation struct, Directory DirectoryInfo
+pkg syscall/zx/io2, type Representation struct, File FileInfo
+pkg syscall/zx/io2, type Representation struct, I_unknownData interface{}
+pkg syscall/zx/io2, type Representation struct, Memory MemoryInfo
+pkg syscall/zx/io2, type Representation struct, Pipe PipeInfo
+pkg syscall/zx/io2, type Representation struct, PosixSocket PosixSocketInfo
+pkg syscall/zx/io2, type Representation struct, Tty TtyInfo
+pkg syscall/zx/io2, type Representation struct, embedded I_representationTag
+pkg syscall/zx/io2, type RightsRequest struct
+pkg syscall/zx/io2, type RightsRequest struct, AtLeast Operations
+pkg syscall/zx/io2, type RightsRequest struct, AtMost Operations
+pkg syscall/zx/io2, type RightsRequest struct, Resolution RightsResolution
+pkg syscall/zx/io2, type RightsResolution uint32
+pkg syscall/zx/io2, type SeekOrigin uint32
+pkg syscall/zx/io2, type TtyInfo struct
+pkg syscall/zx/io2, type TtyInfo struct, Event zx.Handle
+pkg syscall/zx/io2, type TtyInfo struct, EventPresent bool
+pkg syscall/zx/io2, type TtyInfo struct, I_unknownData interface{}
+pkg syscall/zx/io2, type UnlinkFlags uint64
+pkg syscall/zx/io2, type UnlinkOptions struct
+pkg syscall/zx/io2, type UnlinkOptions struct, Flags UnlinkFlags
+pkg syscall/zx/io2, type UnlinkOptions struct, FlagsPresent bool
+pkg syscall/zx/io2, type UnlinkOptions struct, I_unknownData interface{}
+pkg syscall/zx/io2, type VmoFlags uint64
+pkg syscall/zx/logger, const ComponentNamePlaceholderTag = "COMPONENT_NAME"
+pkg syscall/zx/logger, const ComponentNamePlaceholderTag string
+pkg syscall/zx/logger, const LogDumpLogsOrdinal = 5677235824019750106
+pkg syscall/zx/logger, const LogDumpLogsOrdinal uint64
+pkg syscall/zx/logger, const LogDumpLogsSafeOrdinal = 1505222195749004569
+pkg syscall/zx/logger, const LogDumpLogsSafeOrdinal uint64
+pkg syscall/zx/logger, const LogLevelDefault = 48
+pkg syscall/zx/logger, const LogLevelDefault uint8
+pkg syscall/zx/logger, const LogLevelFilterAll = -127
+pkg syscall/zx/logger, const LogLevelFilterAll LogLevelFilter
+pkg syscall/zx/logger, const LogLevelFilterDebug = 32
+pkg syscall/zx/logger, const LogLevelFilterDebug LogLevelFilter
+pkg syscall/zx/logger, const LogLevelFilterDeprecatedError = 2
+pkg syscall/zx/logger, const LogLevelFilterDeprecatedError LogLevelFilter
+pkg syscall/zx/logger, const LogLevelFilterDeprecatedFatal = 3
+pkg syscall/zx/logger, const LogLevelFilterDeprecatedFatal LogLevelFilter
+pkg syscall/zx/logger, const LogLevelFilterDeprecatedInfo = 0
+pkg syscall/zx/logger, const LogLevelFilterDeprecatedInfo LogLevelFilter
+pkg syscall/zx/logger, const LogLevelFilterDeprecatedNone = -1
+pkg syscall/zx/logger, const LogLevelFilterDeprecatedNone LogLevelFilter
+pkg syscall/zx/logger, const LogLevelFilterDeprecatedWarn = 1
+pkg syscall/zx/logger, const LogLevelFilterDeprecatedWarn LogLevelFilter
+pkg syscall/zx/logger, const LogLevelFilterError = 80
+pkg syscall/zx/logger, const LogLevelFilterError LogLevelFilter
+pkg syscall/zx/logger, const LogLevelFilterFatal = 96
+pkg syscall/zx/logger, const LogLevelFilterFatal LogLevelFilter
+pkg syscall/zx/logger, const LogLevelFilterInfo = 48
+pkg syscall/zx/logger, const LogLevelFilterInfo LogLevelFilter
+pkg syscall/zx/logger, const LogLevelFilterNone = 127
+pkg syscall/zx/logger, const LogLevelFilterNone LogLevelFilter
+pkg syscall/zx/logger, const LogLevelFilterTrace = 16
+pkg syscall/zx/logger, const LogLevelFilterTrace LogLevelFilter
+pkg syscall/zx/logger, const LogLevelFilterWarn = 64
+pkg syscall/zx/logger, const LogLevelFilterWarn LogLevelFilter
+pkg syscall/zx/logger, const LogListenOrdinal = 5193530230735566936
+pkg syscall/zx/logger, const LogListenOrdinal uint64
+pkg syscall/zx/logger, const LogListenSafeOrdinal = 5643638173917143473
+pkg syscall/zx/logger, const LogListenSafeOrdinal uint64
+pkg syscall/zx/logger, const LogListenSafeWithSelectorsOrdinal = 1960844265602547838
+pkg syscall/zx/logger, const LogListenSafeWithSelectorsOrdinal uint64
+pkg syscall/zx/logger, const LogListenerDoneOrdinal = 7003223644078344410
+pkg syscall/zx/logger, const LogListenerDoneOrdinal uint64
+pkg syscall/zx/logger, const LogListenerLogManyOrdinal = 1744077432328283308
+pkg syscall/zx/logger, const LogListenerLogManyOrdinal uint64
+pkg syscall/zx/logger, const LogListenerLogOrdinal = 4791601185092618936
+pkg syscall/zx/logger, const LogListenerLogOrdinal uint64
+pkg syscall/zx/logger, const LogListenerSafeDoneOrdinal = 3789886091192272056
+pkg syscall/zx/logger, const LogListenerSafeDoneOrdinal uint64
+pkg syscall/zx/logger, const LogListenerSafeLogManyOrdinal = 139706434677727850
+pkg syscall/zx/logger, const LogListenerSafeLogManyOrdinal uint64
+pkg syscall/zx/logger, const LogListenerSafeLogOrdinal = 5882719137999207690
+pkg syscall/zx/logger, const LogListenerSafeLogOrdinal uint64
+pkg syscall/zx/logger, const LogName = "fuchsia.logger.Log"
+pkg syscall/zx/logger, const LogName ideal-string
+pkg syscall/zx/logger, const LogSeverityMaxStep = 6
+pkg syscall/zx/logger, const LogSeverityMaxStep uint8
+pkg syscall/zx/logger, const LogSeverityStepSize = 16
+pkg syscall/zx/logger, const LogSeverityStepSize uint8
+pkg syscall/zx/logger, const LogSinkConnectOrdinal = 7263263143300023835
+pkg syscall/zx/logger, const LogSinkConnectOrdinal uint64
+pkg syscall/zx/logger, const LogSinkConnectStructuredOrdinal = 7157386067685058380
+pkg syscall/zx/logger, const LogSinkConnectStructuredOrdinal uint64
+pkg syscall/zx/logger, const LogSinkName = "fuchsia.logger.LogSink"
+pkg syscall/zx/logger, const LogSinkName ideal-string
+pkg syscall/zx/logger, const LogSinkOnInterestChangedOrdinal = 463821611711065918
+pkg syscall/zx/logger, const LogSinkOnInterestChangedOrdinal uint64
+pkg syscall/zx/logger, const LogSinkOnRegisterInterestOrdinal = 2117597943223397047
+pkg syscall/zx/logger, const LogSinkOnRegisterInterestOrdinal uint64
+pkg syscall/zx/logger, const LogVerbosityStepSize = 1
+pkg syscall/zx/logger, const LogVerbosityStepSize uint8
+pkg syscall/zx/logger, const MaxDatagramLenBytes = 32768
+pkg syscall/zx/logger, const MaxDatagramLenBytes uint32
+pkg syscall/zx/logger, const MaxLogManySizeBytes = 16384
+pkg syscall/zx/logger, const MaxLogManySizeBytes uint64
+pkg syscall/zx/logger, const MaxLogSelectors = 5
+pkg syscall/zx/logger, const MaxLogSelectors uint8
+pkg syscall/zx/logger, const MaxTagLenBytes = 63
+pkg syscall/zx/logger, const MaxTagLenBytes uint8
+pkg syscall/zx/logger, const MaxTags = 16
+pkg syscall/zx/logger, const MaxTags uint8
+pkg syscall/zx/logger, const MaxTagsPerLogMessage = 5
+pkg syscall/zx/logger, const MaxTagsPerLogMessage uint8
+pkg syscall/zx/logger, func NewLogListenerSafeWithCtxInterfaceRequest() (LogListenerSafeWithCtxInterfaceRequest, *LogListenerSafeWithCtxInterface, error)
+pkg syscall/zx/logger, func NewLogListenerWithCtxInterfaceRequest() (LogListenerWithCtxInterfaceRequest, *LogListenerWithCtxInterface, error)
+pkg syscall/zx/logger, func NewLogSinkWithCtxInterfaceRequest() (LogSinkWithCtxInterfaceRequest, *LogSinkWithCtxInterface, error)
+pkg syscall/zx/logger, func NewLogWithCtxInterfaceRequest() (LogWithCtxInterfaceRequest, *LogWithCtxInterface, error)
+pkg syscall/zx/logger, method (*LogEventProxy) Handle() *zx.Handle
+pkg syscall/zx/logger, method (*LogFilterOptions) Marshaler() fidl.Marshaler
+pkg syscall/zx/logger, method (*LogInterestSelector) Marshaler() fidl.Marshaler
+pkg syscall/zx/logger, method (*LogListenerEventProxy) Handle() *zx.Handle
+pkg syscall/zx/logger, method (*LogListenerSafeEventProxy) Handle() *zx.Handle
+pkg syscall/zx/logger, method (*LogListenerSafeWithCtxInterface) Done(context.Context) error
+pkg syscall/zx/logger, method (*LogListenerSafeWithCtxInterface) Handle() *zx.Handle
+pkg syscall/zx/logger, method (*LogListenerSafeWithCtxInterface) Log(context.Context, LogMessage) error
+pkg syscall/zx/logger, method (*LogListenerSafeWithCtxInterface) LogMany(context.Context, []LogMessage) error
+pkg syscall/zx/logger, method (*LogListenerSafeWithCtxInterfaceRequest) Handle() *zx.Handle
+pkg syscall/zx/logger, method (*LogListenerSafeWithCtxStub) Dispatch(fidl.DispatchArgs) (fidl.Message, bool, error)
+pkg syscall/zx/logger, method (*LogListenerWithCtxInterface) Done(context.Context) error
+pkg syscall/zx/logger, method (*LogListenerWithCtxInterface) Handle() *zx.Handle
+pkg syscall/zx/logger, method (*LogListenerWithCtxInterface) Log(context.Context, LogMessage) error
+pkg syscall/zx/logger, method (*LogListenerWithCtxInterface) LogMany(context.Context, []LogMessage) error
+pkg syscall/zx/logger, method (*LogListenerWithCtxInterfaceRequest) Handle() *zx.Handle
+pkg syscall/zx/logger, method (*LogListenerWithCtxStub) Dispatch(fidl.DispatchArgs) (fidl.Message, bool, error)
+pkg syscall/zx/logger, method (*LogMessage) Marshaler() fidl.Marshaler
+pkg syscall/zx/logger, method (*LogSinkEventProxy) Handle() *zx.Handle
+pkg syscall/zx/logger, method (*LogSinkEventProxy) OnInterestChanged(diagnostics.Interest) error
+pkg syscall/zx/logger, method (*LogSinkEventProxy) OnRegisterInterest(diagnostics.Interest) error
+pkg syscall/zx/logger, method (*LogSinkWithCtxInterface) Connect(context.Context, zx.Socket) error
+pkg syscall/zx/logger, method (*LogSinkWithCtxInterface) ConnectStructured(context.Context, zx.Socket) error
+pkg syscall/zx/logger, method (*LogSinkWithCtxInterface) ExpectOnInterestChanged(context.Context) (diagnostics.Interest, error)
+pkg syscall/zx/logger, method (*LogSinkWithCtxInterface) ExpectOnRegisterInterest(context.Context) (diagnostics.Interest, error)
+pkg syscall/zx/logger, method (*LogSinkWithCtxInterface) Handle() *zx.Handle
+pkg syscall/zx/logger, method (*LogSinkWithCtxInterfaceRequest) Handle() *zx.Handle
+pkg syscall/zx/logger, method (*LogSinkWithCtxStub) Dispatch(fidl.DispatchArgs) (fidl.Message, bool, error)
+pkg syscall/zx/logger, method (*LogSinkWithCtxTransitionalBase) ConnectStructured(context.Context, zx.Socket) error
+pkg syscall/zx/logger, method (*LogWithCtxInterface) DumpLogs(context.Context, LogListenerWithCtxInterface, *LogFilterOptions) error
+pkg syscall/zx/logger, method (*LogWithCtxInterface) DumpLogsSafe(context.Context, LogListenerSafeWithCtxInterface, *LogFilterOptions) error
+pkg syscall/zx/logger, method (*LogWithCtxInterface) Handle() *zx.Handle
+pkg syscall/zx/logger, method (*LogWithCtxInterface) Listen(context.Context, LogListenerWithCtxInterface, *LogFilterOptions) error
+pkg syscall/zx/logger, method (*LogWithCtxInterface) ListenSafe(context.Context, LogListenerSafeWithCtxInterface, *LogFilterOptions) error
+pkg syscall/zx/logger, method (*LogWithCtxInterface) ListenSafeWithSelectors(context.Context, LogListenerSafeWithCtxInterface, *LogFilterOptions, []LogInterestSelector) error
+pkg syscall/zx/logger, method (*LogWithCtxInterfaceRequest) Handle() *zx.Handle
+pkg syscall/zx/logger, method (*LogWithCtxStub) Dispatch(fidl.DispatchArgs) (fidl.Message, bool, error)
+pkg syscall/zx/logger, method (*LogWithCtxTransitionalBase) DumpLogsSafe(context.Context, LogListenerSafeWithCtxInterface, *LogFilterOptions) error
+pkg syscall/zx/logger, method (*LogWithCtxTransitionalBase) ListenSafe(context.Context, LogListenerSafeWithCtxInterface, *LogFilterOptions) error
+pkg syscall/zx/logger, method (*LogWithCtxTransitionalBase) ListenSafeWithSelectors(context.Context, LogListenerSafeWithCtxInterface, *LogFilterOptions, []LogInterestSelector) error
+pkg syscall/zx/logger, method (LogLevelFilter) I_EnumIsStrict() bool
+pkg syscall/zx/logger, method (LogLevelFilter) I_EnumValues() []LogLevelFilter
+pkg syscall/zx/logger, method (LogLevelFilter) IsUnknown() bool
+pkg syscall/zx/logger, method (LogLevelFilter) String() string
+pkg syscall/zx/logger, method (LogSinkWithCtxInterfaceRequest) Name() string
+pkg syscall/zx/logger, method (LogSinkWithCtxInterfaceRequest) ToChannel() zx.Channel
+pkg syscall/zx/logger, method (LogWithCtxInterfaceRequest) Name() string
+pkg syscall/zx/logger, method (LogWithCtxInterfaceRequest) ToChannel() zx.Channel
+pkg syscall/zx/logger, type LogEventProxy struct
+pkg syscall/zx/logger, type LogEventProxy struct, embedded zx.Channel
+pkg syscall/zx/logger, type LogFilterOptions struct
+pkg syscall/zx/logger, type LogFilterOptions struct, FilterByPid bool
+pkg syscall/zx/logger, type LogFilterOptions struct, FilterByTid bool
+pkg syscall/zx/logger, type LogFilterOptions struct, MinSeverity LogLevelFilter
+pkg syscall/zx/logger, type LogFilterOptions struct, Pid uint64
+pkg syscall/zx/logger, type LogFilterOptions struct, Tags []string
+pkg syscall/zx/logger, type LogFilterOptions struct, Tid uint64
+pkg syscall/zx/logger, type LogFilterOptions struct, Verbosity uint8
+pkg syscall/zx/logger, type LogInterestSelector struct
+pkg syscall/zx/logger, type LogInterestSelector struct, Interest diagnostics.Interest
+pkg syscall/zx/logger, type LogInterestSelector struct, Selector diagnostics.ComponentSelector
+pkg syscall/zx/logger, type LogLevelFilter int8
+pkg syscall/zx/logger, type LogListenerEventProxy struct
+pkg syscall/zx/logger, type LogListenerEventProxy struct, embedded zx.Channel
+pkg syscall/zx/logger, type LogListenerSafeEventProxy struct
+pkg syscall/zx/logger, type LogListenerSafeEventProxy struct, embedded zx.Channel
+pkg syscall/zx/logger, type LogListenerSafeWithCtx interface { Done, Log, LogMany }
+pkg syscall/zx/logger, type LogListenerSafeWithCtx interface, Done(context.Context) error
+pkg syscall/zx/logger, type LogListenerSafeWithCtx interface, Log(context.Context, LogMessage) error
+pkg syscall/zx/logger, type LogListenerSafeWithCtx interface, LogMany(context.Context, []LogMessage) error
+pkg syscall/zx/logger, type LogListenerSafeWithCtxInterface struct
+pkg syscall/zx/logger, type LogListenerSafeWithCtxInterface struct, embedded zx.Channel
+pkg syscall/zx/logger, type LogListenerSafeWithCtxInterfaceRequest struct
+pkg syscall/zx/logger, type LogListenerSafeWithCtxInterfaceRequest struct, embedded zx.Channel
+pkg syscall/zx/logger, type LogListenerSafeWithCtxStub struct
+pkg syscall/zx/logger, type LogListenerSafeWithCtxStub struct, Impl LogListenerSafeWithCtx
+pkg syscall/zx/logger, type LogListenerSafeWithCtxTransitionalBase struct
+pkg syscall/zx/logger, type LogListenerWithCtx interface { Done, Log, LogMany }
+pkg syscall/zx/logger, type LogListenerWithCtx interface, Done(context.Context) error
+pkg syscall/zx/logger, type LogListenerWithCtx interface, Log(context.Context, LogMessage) error
+pkg syscall/zx/logger, type LogListenerWithCtx interface, LogMany(context.Context, []LogMessage) error
+pkg syscall/zx/logger, type LogListenerWithCtxInterface struct
+pkg syscall/zx/logger, type LogListenerWithCtxInterface struct, embedded zx.Channel
+pkg syscall/zx/logger, type LogListenerWithCtxInterfaceRequest struct
+pkg syscall/zx/logger, type LogListenerWithCtxInterfaceRequest struct, embedded zx.Channel
+pkg syscall/zx/logger, type LogListenerWithCtxStub struct
+pkg syscall/zx/logger, type LogListenerWithCtxStub struct, Impl LogListenerWithCtx
+pkg syscall/zx/logger, type LogListenerWithCtxTransitionalBase struct
+pkg syscall/zx/logger, type LogMessage struct
+pkg syscall/zx/logger, type LogMessage struct, DroppedLogs uint32
+pkg syscall/zx/logger, type LogMessage struct, Msg string
+pkg syscall/zx/logger, type LogMessage struct, Pid uint64
+pkg syscall/zx/logger, type LogMessage struct, Severity int32
+pkg syscall/zx/logger, type LogMessage struct, Tags []string
+pkg syscall/zx/logger, type LogMessage struct, Tid uint64
+pkg syscall/zx/logger, type LogMessage struct, Time int64
+pkg syscall/zx/logger, type LogSinkEventProxy struct
+pkg syscall/zx/logger, type LogSinkEventProxy struct, embedded zx.Channel
+pkg syscall/zx/logger, type LogSinkWithCtx interface { Connect, ConnectStructured }
+pkg syscall/zx/logger, type LogSinkWithCtx interface, Connect(context.Context, zx.Socket) error
+pkg syscall/zx/logger, type LogSinkWithCtx interface, ConnectStructured(context.Context, zx.Socket) error
+pkg syscall/zx/logger, type LogSinkWithCtxInterface struct
+pkg syscall/zx/logger, type LogSinkWithCtxInterface struct, embedded zx.Channel
+pkg syscall/zx/logger, type LogSinkWithCtxInterfaceRequest struct
+pkg syscall/zx/logger, type LogSinkWithCtxInterfaceRequest struct, embedded zx.Channel
+pkg syscall/zx/logger, type LogSinkWithCtxStub struct
+pkg syscall/zx/logger, type LogSinkWithCtxStub struct, Impl LogSinkWithCtx
+pkg syscall/zx/logger, type LogSinkWithCtxTransitionalBase struct
+pkg syscall/zx/logger, type LogWithCtx interface { DumpLogs, DumpLogsSafe, Listen, ListenSafe, ListenSafeWithSelectors }
+pkg syscall/zx/logger, type LogWithCtx interface, DumpLogs(context.Context, LogListenerWithCtxInterface, *LogFilterOptions) error
+pkg syscall/zx/logger, type LogWithCtx interface, DumpLogsSafe(context.Context, LogListenerSafeWithCtxInterface, *LogFilterOptions) error
+pkg syscall/zx/logger, type LogWithCtx interface, Listen(context.Context, LogListenerWithCtxInterface, *LogFilterOptions) error
+pkg syscall/zx/logger, type LogWithCtx interface, ListenSafe(context.Context, LogListenerSafeWithCtxInterface, *LogFilterOptions) error
+pkg syscall/zx/logger, type LogWithCtx interface, ListenSafeWithSelectors(context.Context, LogListenerSafeWithCtxInterface, *LogFilterOptions, []LogInterestSelector) error
+pkg syscall/zx/logger, type LogWithCtxInterface struct
+pkg syscall/zx/logger, type LogWithCtxInterface struct, embedded zx.Channel
+pkg syscall/zx/logger, type LogWithCtxInterfaceRequest struct
+pkg syscall/zx/logger, type LogWithCtxInterfaceRequest struct, embedded zx.Channel
+pkg syscall/zx/logger, type LogWithCtxStub struct
+pkg syscall/zx/logger, type LogWithCtxStub struct, Impl LogWithCtx
+pkg syscall/zx/logger, type LogWithCtxTransitionalBase struct
+pkg syscall/zx/mem, const DataBuffer = 2
+pkg syscall/zx/mem, const DataBuffer ideal-int
+pkg syscall/zx/mem, const DataBytes = 1
+pkg syscall/zx/mem, const DataBytes ideal-int
+pkg syscall/zx/mem, const Data_unknownData = 0
+pkg syscall/zx/mem, const Data_unknownData ideal-int
+pkg syscall/zx/mem, func DataWithBuffer(Buffer) Data
+pkg syscall/zx/mem, func DataWithBytes([]uint8) Data
+pkg syscall/zx/mem, method (*Buffer) Marshaler() fidl.Marshaler
+pkg syscall/zx/mem, method (*Data) GetUnknownData() fidl.UnknownData
+pkg syscall/zx/mem, method (*Data) Ordinal() uint64
+pkg syscall/zx/mem, method (*Data) SetBuffer(Buffer)
+pkg syscall/zx/mem, method (*Data) SetBytes([]uint8)
+pkg syscall/zx/mem, method (*Data) Which() I_dataTag
+pkg syscall/zx/mem, method (*Range) Marshaler() fidl.Marshaler
+pkg syscall/zx/mem, type Buffer struct
+pkg syscall/zx/mem, type Buffer struct, Size uint64
+pkg syscall/zx/mem, type Buffer struct, Vmo zx.VMO
+pkg syscall/zx/mem, type Data struct
+pkg syscall/zx/mem, type Data struct, Buffer Buffer
+pkg syscall/zx/mem, type Data struct, Bytes []uint8
+pkg syscall/zx/mem, type Data struct, I_unknownData interface{}
+pkg syscall/zx/mem, type Data struct, embedded I_dataTag
+pkg syscall/zx/mem, type I_dataTag uint64
+pkg syscall/zx/mem, type Range struct
+pkg syscall/zx/mem, type Range struct, Offset uint64
+pkg syscall/zx/mem, type Range struct, Size uint64
+pkg syscall/zx/mem, type Range struct, Vmo zx.VMO
+pkg syscall/zx/net, const IpAddressIpv4 = 1
+pkg syscall/zx/net, const IpAddressIpv4 ideal-int
+pkg syscall/zx/net, const IpAddressIpv6 = 2
+pkg syscall/zx/net, const IpAddressIpv6 ideal-int
+pkg syscall/zx/net, const IpVersionV4 = 1
+pkg syscall/zx/net, const IpVersionV4 IpVersion
+pkg syscall/zx/net, const IpVersionV6 = 2
+pkg syscall/zx/net, const IpVersionV6 IpVersion
+pkg syscall/zx/net, const LookupErrorInternalError = 4
+pkg syscall/zx/net, const LookupErrorInternalError LookupError
+pkg syscall/zx/net, const LookupErrorInvalidArgs = 3
+pkg syscall/zx/net, const LookupErrorInvalidArgs LookupError
+pkg syscall/zx/net, const LookupErrorNotFound = 1
+pkg syscall/zx/net, const LookupErrorNotFound LookupError
+pkg syscall/zx/net, const LookupErrorTransient = 2
+pkg syscall/zx/net, const LookupErrorTransient LookupError
+pkg syscall/zx/net, const LookupIpOptionsCnameLookup = 4
+pkg syscall/zx/net, const LookupIpOptionsCnameLookup LookupIpOptions
+pkg syscall/zx/net, const LookupIpOptionsV4Addrs = 1
+pkg syscall/zx/net, const LookupIpOptionsV4Addrs LookupIpOptions
+pkg syscall/zx/net, const LookupIpOptionsV6Addrs = 2
+pkg syscall/zx/net, const LookupIpOptionsV6Addrs LookupIpOptions
+pkg syscall/zx/net, const LookupIpOptions_Mask = 7
+pkg syscall/zx/net, const LookupIpOptions_Mask LookupIpOptions
+pkg syscall/zx/net, const MaxHostnameSize = 255
+pkg syscall/zx/net, const MaxHostnameSize uint64
+pkg syscall/zx/net, const MaxLookupIps = 256
+pkg syscall/zx/net, const MaxLookupIps uint64
+pkg syscall/zx/net, const NameLookupLookupHostnameOrdinal = 6773037474956398858
+pkg syscall/zx/net, const NameLookupLookupHostnameOrdinal uint64
+pkg syscall/zx/net, const NameLookupLookupHostnameResultErr = 2
+pkg syscall/zx/net, const NameLookupLookupHostnameResultErr ideal-int
+pkg syscall/zx/net, const NameLookupLookupHostnameResultResponse = 1
+pkg syscall/zx/net, const NameLookupLookupHostnameResultResponse ideal-int
+pkg syscall/zx/net, const NameLookupLookupIp2Ordinal = 7893054727488534356
+pkg syscall/zx/net, const NameLookupLookupIp2Ordinal uint64
+pkg syscall/zx/net, const NameLookupLookupIp2ResultErr = 2
+pkg syscall/zx/net, const NameLookupLookupIp2ResultErr ideal-int
+pkg syscall/zx/net, const NameLookupLookupIp2ResultResponse = 1
+pkg syscall/zx/net, const NameLookupLookupIp2ResultResponse ideal-int
+pkg syscall/zx/net, const NameLookupLookupIpOrdinal = 6365675835475431218
+pkg syscall/zx/net, const NameLookupLookupIpOrdinal uint64
+pkg syscall/zx/net, const NameLookupLookupIpResultErr = 2
+pkg syscall/zx/net, const NameLookupLookupIpResultErr ideal-int
+pkg syscall/zx/net, const NameLookupLookupIpResultResponse = 1
+pkg syscall/zx/net, const NameLookupLookupIpResultResponse ideal-int
+pkg syscall/zx/net, const NameLookupName = "fuchsia.net.NameLookup"
+pkg syscall/zx/net, const NameLookupName ideal-string
+pkg syscall/zx/net, const SocketAddressIpv4 = 1
+pkg syscall/zx/net, const SocketAddressIpv4 ideal-int
+pkg syscall/zx/net, const SocketAddressIpv6 = 2
+pkg syscall/zx/net, const SocketAddressIpv6 ideal-int
+pkg syscall/zx/net, func IpAddressWithIpv4(Ipv4Address) IpAddress
+pkg syscall/zx/net, func IpAddressWithIpv6(Ipv6Address) IpAddress
+pkg syscall/zx/net, func NameLookupLookupHostnameResultWithErr(LookupError) NameLookupLookupHostnameResult
+pkg syscall/zx/net, func NameLookupLookupHostnameResultWithResponse(NameLookupLookupHostnameResponse) NameLookupLookupHostnameResult
+pkg syscall/zx/net, func NameLookupLookupIp2ResultWithErr(LookupError) NameLookupLookupIp2Result
+pkg syscall/zx/net, func NameLookupLookupIp2ResultWithResponse(NameLookupLookupIp2Response) NameLookupLookupIp2Result
+pkg syscall/zx/net, func NameLookupLookupIpResultWithErr(LookupError) NameLookupLookupIpResult
+pkg syscall/zx/net, func NameLookupLookupIpResultWithResponse(NameLookupLookupIpResponse) NameLookupLookupIpResult
+pkg syscall/zx/net, func NewNameLookupWithCtxInterfaceRequest() (NameLookupWithCtxInterfaceRequest, *NameLookupWithCtxInterface, error)
+pkg syscall/zx/net, func SocketAddressWithIpv4(Ipv4SocketAddress) SocketAddress
+pkg syscall/zx/net, func SocketAddressWithIpv6(Ipv6SocketAddress) SocketAddress
+pkg syscall/zx/net, method (*IpAddress) Ordinal() uint64
+pkg syscall/zx/net, method (*IpAddress) SetIpv4(Ipv4Address)
+pkg syscall/zx/net, method (*IpAddress) SetIpv6(Ipv6Address)
+pkg syscall/zx/net, method (*IpAddress) Which() I_ipAddressTag
+pkg syscall/zx/net, method (*IpAddressInfo) Marshaler() fidl.Marshaler
+pkg syscall/zx/net, method (*Ipv4Address) Marshaler() fidl.Marshaler
+pkg syscall/zx/net, method (*Ipv4SocketAddress) Marshaler() fidl.Marshaler
+pkg syscall/zx/net, method (*Ipv6Address) Marshaler() fidl.Marshaler
+pkg syscall/zx/net, method (*Ipv6SocketAddress) Marshaler() fidl.Marshaler
+pkg syscall/zx/net, method (*LookupIpOptions2) ClearIpv4Lookup()
+pkg syscall/zx/net, method (*LookupIpOptions2) ClearIpv6Lookup()
+pkg syscall/zx/net, method (*LookupIpOptions2) ClearSortAddresses()
+pkg syscall/zx/net, method (*LookupIpOptions2) GetIpv4Lookup() bool
+pkg syscall/zx/net, method (*LookupIpOptions2) GetIpv4LookupWithDefault(bool) bool
+pkg syscall/zx/net, method (*LookupIpOptions2) GetIpv6Lookup() bool
+pkg syscall/zx/net, method (*LookupIpOptions2) GetIpv6LookupWithDefault(bool) bool
+pkg syscall/zx/net, method (*LookupIpOptions2) GetSortAddresses() bool
+pkg syscall/zx/net, method (*LookupIpOptions2) GetSortAddressesWithDefault(bool) bool
+pkg syscall/zx/net, method (*LookupIpOptions2) GetUnknownData() map[uint64]fidl.UnknownData
+pkg syscall/zx/net, method (*LookupIpOptions2) HasIpv4Lookup() bool
+pkg syscall/zx/net, method (*LookupIpOptions2) HasIpv6Lookup() bool
+pkg syscall/zx/net, method (*LookupIpOptions2) HasSortAddresses() bool
+pkg syscall/zx/net, method (*LookupIpOptions2) HasUnknownData() bool
+pkg syscall/zx/net, method (*LookupIpOptions2) SetIpv4Lookup(bool)
+pkg syscall/zx/net, method (*LookupIpOptions2) SetIpv6Lookup(bool)
+pkg syscall/zx/net, method (*LookupIpOptions2) SetSortAddresses(bool)
+pkg syscall/zx/net, method (*LookupResult) ClearAddresses()
+pkg syscall/zx/net, method (*LookupResult) GetAddresses() []IpAddress
+pkg syscall/zx/net, method (*LookupResult) GetAddressesWithDefault([]IpAddress) []IpAddress
+pkg syscall/zx/net, method (*LookupResult) GetUnknownData() map[uint64]fidl.UnknownData
+pkg syscall/zx/net, method (*LookupResult) HasAddresses() bool
+pkg syscall/zx/net, method (*LookupResult) HasUnknownData() bool
+pkg syscall/zx/net, method (*LookupResult) SetAddresses([]IpAddress)
+pkg syscall/zx/net, method (*MacAddress) Marshaler() fidl.Marshaler
+pkg syscall/zx/net, method (*NameLookupEventProxy) Handle() *zx.Handle
+pkg syscall/zx/net, method (*NameLookupLookupHostnameResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/net, method (*NameLookupLookupHostnameResult) Ordinal() uint64
+pkg syscall/zx/net, method (*NameLookupLookupHostnameResult) SetErr(LookupError)
+pkg syscall/zx/net, method (*NameLookupLookupHostnameResult) SetResponse(NameLookupLookupHostnameResponse)
+pkg syscall/zx/net, method (*NameLookupLookupHostnameResult) Which() I_nameLookupLookupHostnameResultTag
+pkg syscall/zx/net, method (*NameLookupLookupIp2Response) Marshaler() fidl.Marshaler
+pkg syscall/zx/net, method (*NameLookupLookupIp2Result) Ordinal() uint64
+pkg syscall/zx/net, method (*NameLookupLookupIp2Result) SetErr(LookupError)
+pkg syscall/zx/net, method (*NameLookupLookupIp2Result) SetResponse(NameLookupLookupIp2Response)
+pkg syscall/zx/net, method (*NameLookupLookupIp2Result) Which() I_nameLookupLookupIp2ResultTag
+pkg syscall/zx/net, method (*NameLookupLookupIpResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/net, method (*NameLookupLookupIpResult) Ordinal() uint64
+pkg syscall/zx/net, method (*NameLookupLookupIpResult) SetErr(LookupError)
+pkg syscall/zx/net, method (*NameLookupLookupIpResult) SetResponse(NameLookupLookupIpResponse)
+pkg syscall/zx/net, method (*NameLookupLookupIpResult) Which() I_nameLookupLookupIpResultTag
+pkg syscall/zx/net, method (*NameLookupWithCtxInterface) Handle() *zx.Handle
+pkg syscall/zx/net, method (*NameLookupWithCtxInterface) LookupHostname(context.Context, IpAddress) (NameLookupLookupHostnameResult, error)
+pkg syscall/zx/net, method (*NameLookupWithCtxInterface) LookupIp(context.Context, string, LookupIpOptions) (NameLookupLookupIpResult, error)
+pkg syscall/zx/net, method (*NameLookupWithCtxInterface) LookupIp2(context.Context, string, LookupIpOptions2) (NameLookupLookupIp2Result, error)
+pkg syscall/zx/net, method (*NameLookupWithCtxInterfaceRequest) Handle() *zx.Handle
+pkg syscall/zx/net, method (*NameLookupWithCtxStub) Dispatch(fidl.DispatchArgs) (fidl.Message, bool, error)
+pkg syscall/zx/net, method (*SocketAddress) Ordinal() uint64
+pkg syscall/zx/net, method (*SocketAddress) SetIpv4(Ipv4SocketAddress)
+pkg syscall/zx/net, method (*SocketAddress) SetIpv6(Ipv6SocketAddress)
+pkg syscall/zx/net, method (*SocketAddress) Which() I_socketAddressTag
+pkg syscall/zx/net, method (*Subnet) Marshaler() fidl.Marshaler
+pkg syscall/zx/net, method (IpVersion) I_EnumIsStrict() bool
+pkg syscall/zx/net, method (IpVersion) I_EnumValues() []IpVersion
+pkg syscall/zx/net, method (IpVersion) IsUnknown() bool
+pkg syscall/zx/net, method (IpVersion) String() string
+pkg syscall/zx/net, method (LookupError) I_EnumIsStrict() bool
+pkg syscall/zx/net, method (LookupError) I_EnumValues() []LookupError
+pkg syscall/zx/net, method (LookupError) IsUnknown() bool
+pkg syscall/zx/net, method (LookupError) String() string
+pkg syscall/zx/net, method (LookupIpOptions) ClearBits(LookupIpOptions) LookupIpOptions
+pkg syscall/zx/net, method (LookupIpOptions) GetUnknownBits() uint64
+pkg syscall/zx/net, method (LookupIpOptions) HasBits(LookupIpOptions) bool
+pkg syscall/zx/net, method (LookupIpOptions) HasUnknownBits() bool
+pkg syscall/zx/net, method (LookupIpOptions) I_BitsIsStrict() bool
+pkg syscall/zx/net, method (LookupIpOptions) I_BitsMask() LookupIpOptions
+pkg syscall/zx/net, method (LookupIpOptions) InvertBits() LookupIpOptions
+pkg syscall/zx/net, method (LookupIpOptions) String() string
+pkg syscall/zx/net, method (NameLookupWithCtxInterfaceRequest) Name() string
+pkg syscall/zx/net, method (NameLookupWithCtxInterfaceRequest) ToChannel() zx.Channel
+pkg syscall/zx/net, type I_ipAddressTag uint64
+pkg syscall/zx/net, type I_nameLookupLookupHostnameResultTag uint64
+pkg syscall/zx/net, type I_nameLookupLookupIp2ResultTag uint64
+pkg syscall/zx/net, type I_nameLookupLookupIpResultTag uint64
+pkg syscall/zx/net, type I_socketAddressTag uint64
+pkg syscall/zx/net, type IpAddress struct
+pkg syscall/zx/net, type IpAddress struct, Ipv4 Ipv4Address
+pkg syscall/zx/net, type IpAddress struct, Ipv6 Ipv6Address
+pkg syscall/zx/net, type IpAddress struct, embedded I_ipAddressTag
+pkg syscall/zx/net, type IpAddressInfo struct
+pkg syscall/zx/net, type IpAddressInfo struct, CanonicalName *string
+pkg syscall/zx/net, type IpAddressInfo struct, Ipv4Addrs []Ipv4Address
+pkg syscall/zx/net, type IpAddressInfo struct, Ipv6Addrs []Ipv6Address
+pkg syscall/zx/net, type IpVersion uint32
+pkg syscall/zx/net, type Ipv4Address struct
+pkg syscall/zx/net, type Ipv4Address struct, Addr [4]uint8
+pkg syscall/zx/net, type Ipv4SocketAddress struct
+pkg syscall/zx/net, type Ipv4SocketAddress struct, Address Ipv4Address
+pkg syscall/zx/net, type Ipv4SocketAddress struct, Port uint16
+pkg syscall/zx/net, type Ipv6Address struct
+pkg syscall/zx/net, type Ipv6Address struct, Addr [16]uint8
+pkg syscall/zx/net, type Ipv6SocketAddress struct
+pkg syscall/zx/net, type Ipv6SocketAddress struct, Address Ipv6Address
+pkg syscall/zx/net, type Ipv6SocketAddress struct, Port uint16
+pkg syscall/zx/net, type Ipv6SocketAddress struct, ZoneIndex uint64
+pkg syscall/zx/net, type LookupError uint32
+pkg syscall/zx/net, type LookupIpOptions uint8
+pkg syscall/zx/net, type LookupIpOptions2 struct
+pkg syscall/zx/net, type LookupIpOptions2 struct, I_unknownData interface{}
+pkg syscall/zx/net, type LookupIpOptions2 struct, Ipv4Lookup bool
+pkg syscall/zx/net, type LookupIpOptions2 struct, Ipv4LookupPresent bool
+pkg syscall/zx/net, type LookupIpOptions2 struct, Ipv6Lookup bool
+pkg syscall/zx/net, type LookupIpOptions2 struct, Ipv6LookupPresent bool
+pkg syscall/zx/net, type LookupIpOptions2 struct, SortAddresses bool
+pkg syscall/zx/net, type LookupIpOptions2 struct, SortAddressesPresent bool
+pkg syscall/zx/net, type LookupResult struct
+pkg syscall/zx/net, type LookupResult struct, Addresses []IpAddress
+pkg syscall/zx/net, type LookupResult struct, AddressesPresent bool
+pkg syscall/zx/net, type LookupResult struct, I_unknownData interface{}
+pkg syscall/zx/net, type MacAddress struct
+pkg syscall/zx/net, type MacAddress struct, Octets [6]uint8
+pkg syscall/zx/net, type NameLookupEventProxy struct
+pkg syscall/zx/net, type NameLookupEventProxy struct, embedded zx.Channel
+pkg syscall/zx/net, type NameLookupLookupHostnameResponse struct
+pkg syscall/zx/net, type NameLookupLookupHostnameResponse struct, Hostname string
+pkg syscall/zx/net, type NameLookupLookupHostnameResult struct
+pkg syscall/zx/net, type NameLookupLookupHostnameResult struct, Err LookupError
+pkg syscall/zx/net, type NameLookupLookupHostnameResult struct, Response NameLookupLookupHostnameResponse
+pkg syscall/zx/net, type NameLookupLookupHostnameResult struct, embedded I_nameLookupLookupHostnameResultTag
+pkg syscall/zx/net, type NameLookupLookupIp2Response struct
+pkg syscall/zx/net, type NameLookupLookupIp2Response struct, Result LookupResult
+pkg syscall/zx/net, type NameLookupLookupIp2Result struct
+pkg syscall/zx/net, type NameLookupLookupIp2Result struct, Err LookupError
+pkg syscall/zx/net, type NameLookupLookupIp2Result struct, Response NameLookupLookupIp2Response
+pkg syscall/zx/net, type NameLookupLookupIp2Result struct, embedded I_nameLookupLookupIp2ResultTag
+pkg syscall/zx/net, type NameLookupLookupIpResponse struct
+pkg syscall/zx/net, type NameLookupLookupIpResponse struct, Addr IpAddressInfo
+pkg syscall/zx/net, type NameLookupLookupIpResult struct
+pkg syscall/zx/net, type NameLookupLookupIpResult struct, Err LookupError
+pkg syscall/zx/net, type NameLookupLookupIpResult struct, Response NameLookupLookupIpResponse
+pkg syscall/zx/net, type NameLookupLookupIpResult struct, embedded I_nameLookupLookupIpResultTag
+pkg syscall/zx/net, type NameLookupWithCtx interface { LookupHostname, LookupIp, LookupIp2 }
+pkg syscall/zx/net, type NameLookupWithCtx interface, LookupHostname(context.Context, IpAddress) (NameLookupLookupHostnameResult, error)
+pkg syscall/zx/net, type NameLookupWithCtx interface, LookupIp(context.Context, string, LookupIpOptions) (NameLookupLookupIpResult, error)
+pkg syscall/zx/net, type NameLookupWithCtx interface, LookupIp2(context.Context, string, LookupIpOptions2) (NameLookupLookupIp2Result, error)
+pkg syscall/zx/net, type NameLookupWithCtxInterface struct
+pkg syscall/zx/net, type NameLookupWithCtxInterface struct, embedded zx.Channel
+pkg syscall/zx/net, type NameLookupWithCtxInterfaceRequest struct
+pkg syscall/zx/net, type NameLookupWithCtxInterfaceRequest struct, embedded zx.Channel
+pkg syscall/zx/net, type NameLookupWithCtxStub struct
+pkg syscall/zx/net, type NameLookupWithCtxStub struct, Impl NameLookupWithCtx
+pkg syscall/zx/net, type NameLookupWithCtxTransitionalBase struct
+pkg syscall/zx/net, type SocketAddress struct
+pkg syscall/zx/net, type SocketAddress struct, Ipv4 Ipv4SocketAddress
+pkg syscall/zx/net, type SocketAddress struct, Ipv6 Ipv6SocketAddress
+pkg syscall/zx/net, type SocketAddress struct, embedded I_socketAddressTag
+pkg syscall/zx/net, type Subnet struct
+pkg syscall/zx/net, type Subnet struct, Addr IpAddress
+pkg syscall/zx/net, type Subnet struct, PrefixLen uint8
+pkg syscall/zx/net/name, const DnsServerSourceDhcp = 2
+pkg syscall/zx/net/name, const DnsServerSourceDhcp ideal-int
+pkg syscall/zx/net/name, const DnsServerSourceDhcpv6 = 4
+pkg syscall/zx/net/name, const DnsServerSourceDhcpv6 ideal-int
+pkg syscall/zx/net/name, const DnsServerSourceNdp = 3
+pkg syscall/zx/net/name, const DnsServerSourceNdp ideal-int
+pkg syscall/zx/net/name, const DnsServerSourceStaticSource = 1
+pkg syscall/zx/net/name, const DnsServerSourceStaticSource ideal-int
+pkg syscall/zx/net/name, const DnsServerWatcherWatchServersOrdinal = 6289435752595043890
+pkg syscall/zx/net/name, const DnsServerWatcherWatchServersOrdinal uint64
+pkg syscall/zx/net/name, const LookupAdminGetDnsServersOrdinal = 7008449565845288975
+pkg syscall/zx/net/name, const LookupAdminGetDnsServersOrdinal uint64
+pkg syscall/zx/net/name, const LookupAdminName = "fuchsia.net.name.LookupAdmin"
+pkg syscall/zx/net/name, const LookupAdminName ideal-string
+pkg syscall/zx/net/name, const LookupAdminSetDnsServersOrdinal = 6188713333289893526
+pkg syscall/zx/net/name, const LookupAdminSetDnsServersOrdinal uint64
+pkg syscall/zx/net/name, const LookupAdminSetDnsServersResultErr = 2
+pkg syscall/zx/net/name, const LookupAdminSetDnsServersResultErr ideal-int
+pkg syscall/zx/net/name, const LookupAdminSetDnsServersResultResponse = 1
+pkg syscall/zx/net/name, const LookupAdminSetDnsServersResultResponse ideal-int
+pkg syscall/zx/net/name, func DnsServerSourceWithDhcp(DhcpDnsServerSource) DnsServerSource
+pkg syscall/zx/net/name, func DnsServerSourceWithDhcpv6(Dhcpv6DnsServerSource) DnsServerSource
+pkg syscall/zx/net/name, func DnsServerSourceWithNdp(NdpDnsServerSource) DnsServerSource
+pkg syscall/zx/net/name, func DnsServerSourceWithStaticSource(StaticDnsServerSource) DnsServerSource
+pkg syscall/zx/net/name, func LookupAdminSetDnsServersResultWithErr(int32) LookupAdminSetDnsServersResult
+pkg syscall/zx/net/name, func LookupAdminSetDnsServersResultWithResponse(LookupAdminSetDnsServersResponse) LookupAdminSetDnsServersResult
+pkg syscall/zx/net/name, func NewDnsServerWatcherWithCtxInterfaceRequest() (DnsServerWatcherWithCtxInterfaceRequest, *DnsServerWatcherWithCtxInterface, error)
+pkg syscall/zx/net/name, func NewLookupAdminWithCtxInterfaceRequest() (LookupAdminWithCtxInterfaceRequest, *LookupAdminWithCtxInterface, error)
+pkg syscall/zx/net/name, method (*DhcpDnsServerSource) ClearSourceInterface()
+pkg syscall/zx/net/name, method (*DhcpDnsServerSource) GetSourceInterface() uint64
+pkg syscall/zx/net/name, method (*DhcpDnsServerSource) GetSourceInterfaceWithDefault(uint64) uint64
+pkg syscall/zx/net/name, method (*DhcpDnsServerSource) GetUnknownData() map[uint64]fidl.UnknownData
+pkg syscall/zx/net/name, method (*DhcpDnsServerSource) HasSourceInterface() bool
+pkg syscall/zx/net/name, method (*DhcpDnsServerSource) HasUnknownData() bool
+pkg syscall/zx/net/name, method (*DhcpDnsServerSource) SetSourceInterface(uint64)
+pkg syscall/zx/net/name, method (*Dhcpv6DnsServerSource) ClearSourceInterface()
+pkg syscall/zx/net/name, method (*Dhcpv6DnsServerSource) GetSourceInterface() uint64
+pkg syscall/zx/net/name, method (*Dhcpv6DnsServerSource) GetSourceInterfaceWithDefault(uint64) uint64
+pkg syscall/zx/net/name, method (*Dhcpv6DnsServerSource) GetUnknownData() map[uint64]fidl.UnknownData
+pkg syscall/zx/net/name, method (*Dhcpv6DnsServerSource) HasSourceInterface() bool
+pkg syscall/zx/net/name, method (*Dhcpv6DnsServerSource) HasUnknownData() bool
+pkg syscall/zx/net/name, method (*Dhcpv6DnsServerSource) SetSourceInterface(uint64)
+pkg syscall/zx/net/name, method (*DnsServer) ClearAddress()
+pkg syscall/zx/net/name, method (*DnsServer) ClearSource()
+pkg syscall/zx/net/name, method (*DnsServer) GetAddress() net.SocketAddress
+pkg syscall/zx/net/name, method (*DnsServer) GetAddressWithDefault(net.SocketAddress) net.SocketAddress
+pkg syscall/zx/net/name, method (*DnsServer) GetSource() DnsServerSource
+pkg syscall/zx/net/name, method (*DnsServer) GetSourceWithDefault(DnsServerSource) DnsServerSource
+pkg syscall/zx/net/name, method (*DnsServer) GetUnknownData() map[uint64]fidl.UnknownData
+pkg syscall/zx/net/name, method (*DnsServer) HasAddress() bool
+pkg syscall/zx/net/name, method (*DnsServer) HasSource() bool
+pkg syscall/zx/net/name, method (*DnsServer) HasUnknownData() bool
+pkg syscall/zx/net/name, method (*DnsServer) SetAddress(net.SocketAddress)
+pkg syscall/zx/net/name, method (*DnsServer) SetSource(DnsServerSource)
+pkg syscall/zx/net/name, method (*DnsServerSource) Ordinal() uint64
+pkg syscall/zx/net/name, method (*DnsServerSource) SetDhcp(DhcpDnsServerSource)
+pkg syscall/zx/net/name, method (*DnsServerSource) SetDhcpv6(Dhcpv6DnsServerSource)
+pkg syscall/zx/net/name, method (*DnsServerSource) SetNdp(NdpDnsServerSource)
+pkg syscall/zx/net/name, method (*DnsServerSource) SetStaticSource(StaticDnsServerSource)
+pkg syscall/zx/net/name, method (*DnsServerSource) Which() I_dnsServerSourceTag
+pkg syscall/zx/net/name, method (*DnsServerWatcherEventProxy) Handle() *zx.Handle
+pkg syscall/zx/net/name, method (*DnsServerWatcherWithCtxInterface) Handle() *zx.Handle
+pkg syscall/zx/net/name, method (*DnsServerWatcherWithCtxInterface) WatchServers(context.Context) ([]DnsServer, error)
+pkg syscall/zx/net/name, method (*DnsServerWatcherWithCtxInterfaceRequest) Handle() *zx.Handle
+pkg syscall/zx/net/name, method (*DnsServerWatcherWithCtxStub) Dispatch(fidl.DispatchArgs) (fidl.Message, bool, error)
+pkg syscall/zx/net/name, method (*LookupAdminEventProxy) Handle() *zx.Handle
+pkg syscall/zx/net/name, method (*LookupAdminSetDnsServersResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/net/name, method (*LookupAdminSetDnsServersResult) Ordinal() uint64
+pkg syscall/zx/net/name, method (*LookupAdminSetDnsServersResult) SetErr(int32)
+pkg syscall/zx/net/name, method (*LookupAdminSetDnsServersResult) SetResponse(LookupAdminSetDnsServersResponse)
+pkg syscall/zx/net/name, method (*LookupAdminSetDnsServersResult) Which() I_lookupAdminSetDnsServersResultTag
+pkg syscall/zx/net/name, method (*LookupAdminWithCtxInterface) GetDnsServers(context.Context) ([]net.SocketAddress, error)
+pkg syscall/zx/net/name, method (*LookupAdminWithCtxInterface) Handle() *zx.Handle
+pkg syscall/zx/net/name, method (*LookupAdminWithCtxInterface) SetDnsServers(context.Context, []net.SocketAddress) (LookupAdminSetDnsServersResult, error)
+pkg syscall/zx/net/name, method (*LookupAdminWithCtxInterfaceRequest) Handle() *zx.Handle
+pkg syscall/zx/net/name, method (*LookupAdminWithCtxStub) Dispatch(fidl.DispatchArgs) (fidl.Message, bool, error)
+pkg syscall/zx/net/name, method (*NdpDnsServerSource) ClearSourceInterface()
+pkg syscall/zx/net/name, method (*NdpDnsServerSource) GetSourceInterface() uint64
+pkg syscall/zx/net/name, method (*NdpDnsServerSource) GetSourceInterfaceWithDefault(uint64) uint64
+pkg syscall/zx/net/name, method (*NdpDnsServerSource) GetUnknownData() map[uint64]fidl.UnknownData
+pkg syscall/zx/net/name, method (*NdpDnsServerSource) HasSourceInterface() bool
+pkg syscall/zx/net/name, method (*NdpDnsServerSource) HasUnknownData() bool
+pkg syscall/zx/net/name, method (*NdpDnsServerSource) SetSourceInterface(uint64)
+pkg syscall/zx/net/name, method (*StaticDnsServerSource) GetUnknownData() map[uint64]fidl.UnknownData
+pkg syscall/zx/net/name, method (*StaticDnsServerSource) HasUnknownData() bool
+pkg syscall/zx/net/name, method (LookupAdminWithCtxInterfaceRequest) Name() string
+pkg syscall/zx/net/name, method (LookupAdminWithCtxInterfaceRequest) ToChannel() zx.Channel
+pkg syscall/zx/net/name, type DhcpDnsServerSource struct
+pkg syscall/zx/net/name, type DhcpDnsServerSource struct, I_unknownData interface{}
+pkg syscall/zx/net/name, type DhcpDnsServerSource struct, SourceInterface uint64
+pkg syscall/zx/net/name, type DhcpDnsServerSource struct, SourceInterfacePresent bool
+pkg syscall/zx/net/name, type Dhcpv6DnsServerSource struct
+pkg syscall/zx/net/name, type Dhcpv6DnsServerSource struct, I_unknownData interface{}
+pkg syscall/zx/net/name, type Dhcpv6DnsServerSource struct, SourceInterface uint64
+pkg syscall/zx/net/name, type Dhcpv6DnsServerSource struct, SourceInterfacePresent bool
+pkg syscall/zx/net/name, type DnsServer struct
+pkg syscall/zx/net/name, type DnsServer struct, Address net.SocketAddress
+pkg syscall/zx/net/name, type DnsServer struct, AddressPresent bool
+pkg syscall/zx/net/name, type DnsServer struct, I_unknownData interface{}
+pkg syscall/zx/net/name, type DnsServer struct, Source DnsServerSource
+pkg syscall/zx/net/name, type DnsServer struct, SourcePresent bool
+pkg syscall/zx/net/name, type DnsServerSource struct
+pkg syscall/zx/net/name, type DnsServerSource struct, Dhcp DhcpDnsServerSource
+pkg syscall/zx/net/name, type DnsServerSource struct, Dhcpv6 Dhcpv6DnsServerSource
+pkg syscall/zx/net/name, type DnsServerSource struct, Ndp NdpDnsServerSource
+pkg syscall/zx/net/name, type DnsServerSource struct, StaticSource StaticDnsServerSource
+pkg syscall/zx/net/name, type DnsServerSource struct, embedded I_dnsServerSourceTag
+pkg syscall/zx/net/name, type DnsServerWatcherEventProxy struct
+pkg syscall/zx/net/name, type DnsServerWatcherEventProxy struct, embedded zx.Channel
+pkg syscall/zx/net/name, type DnsServerWatcherWithCtx interface { WatchServers }
+pkg syscall/zx/net/name, type DnsServerWatcherWithCtx interface, WatchServers(context.Context) ([]DnsServer, error)
+pkg syscall/zx/net/name, type DnsServerWatcherWithCtxInterface struct
+pkg syscall/zx/net/name, type DnsServerWatcherWithCtxInterface struct, embedded zx.Channel
+pkg syscall/zx/net/name, type DnsServerWatcherWithCtxInterfaceRequest struct
+pkg syscall/zx/net/name, type DnsServerWatcherWithCtxInterfaceRequest struct, embedded zx.Channel
+pkg syscall/zx/net/name, type DnsServerWatcherWithCtxStub struct
+pkg syscall/zx/net/name, type DnsServerWatcherWithCtxStub struct, Impl DnsServerWatcherWithCtx
+pkg syscall/zx/net/name, type DnsServerWatcherWithCtxTransitionalBase struct
+pkg syscall/zx/net/name, type I_dnsServerSourceTag uint64
+pkg syscall/zx/net/name, type I_lookupAdminSetDnsServersResultTag uint64
+pkg syscall/zx/net/name, type LookupAdminEventProxy struct
+pkg syscall/zx/net/name, type LookupAdminEventProxy struct, embedded zx.Channel
+pkg syscall/zx/net/name, type LookupAdminSetDnsServersResponse struct
+pkg syscall/zx/net/name, type LookupAdminSetDnsServersResult struct
+pkg syscall/zx/net/name, type LookupAdminSetDnsServersResult struct, Err int32
+pkg syscall/zx/net/name, type LookupAdminSetDnsServersResult struct, Response LookupAdminSetDnsServersResponse
+pkg syscall/zx/net/name, type LookupAdminSetDnsServersResult struct, embedded I_lookupAdminSetDnsServersResultTag
+pkg syscall/zx/net/name, type LookupAdminWithCtx interface { GetDnsServers, SetDnsServers }
+pkg syscall/zx/net/name, type LookupAdminWithCtx interface, GetDnsServers(context.Context) ([]net.SocketAddress, error)
+pkg syscall/zx/net/name, type LookupAdminWithCtx interface, SetDnsServers(context.Context, []net.SocketAddress) (LookupAdminSetDnsServersResult, error)
+pkg syscall/zx/net/name, type LookupAdminWithCtxInterface struct
+pkg syscall/zx/net/name, type LookupAdminWithCtxInterface struct, embedded zx.Channel
+pkg syscall/zx/net/name, type LookupAdminWithCtxInterfaceRequest struct
+pkg syscall/zx/net/name, type LookupAdminWithCtxInterfaceRequest struct, embedded zx.Channel
+pkg syscall/zx/net/name, type LookupAdminWithCtxStub struct
+pkg syscall/zx/net/name, type LookupAdminWithCtxStub struct, Impl LookupAdminWithCtx
+pkg syscall/zx/net/name, type LookupAdminWithCtxTransitionalBase struct
+pkg syscall/zx/net/name, type NdpDnsServerSource struct
+pkg syscall/zx/net/name, type NdpDnsServerSource struct, I_unknownData interface{}
+pkg syscall/zx/net/name, type NdpDnsServerSource struct, SourceInterface uint64
+pkg syscall/zx/net/name, type NdpDnsServerSource struct, SourceInterfacePresent bool
+pkg syscall/zx/net/name, type StaticDnsServerSource struct
+pkg syscall/zx/net/name, type StaticDnsServerSource struct, I_unknownData interface{}
+pkg syscall/zx/net/stack, const AdministrativeStatusDisabled = 1
+pkg syscall/zx/net/stack, const AdministrativeStatusDisabled AdministrativeStatus
+pkg syscall/zx/net/stack, const AdministrativeStatusEnabled = 2
+pkg syscall/zx/net/stack, const AdministrativeStatusEnabled AdministrativeStatus
+pkg syscall/zx/net/stack, const DeviceDefinitionEthernet = 2
+pkg syscall/zx/net/stack, const DeviceDefinitionEthernet ideal-int
+pkg syscall/zx/net/stack, const DeviceDefinitionIp = 1
+pkg syscall/zx/net/stack, const DeviceDefinitionIp ideal-int
+pkg syscall/zx/net/stack, const ErrorAlreadyExists = 7
+pkg syscall/zx/net/stack, const ErrorAlreadyExists Error
+pkg syscall/zx/net/stack, const ErrorBadState = 4
+pkg syscall/zx/net/stack, const ErrorBadState Error
+pkg syscall/zx/net/stack, const ErrorInternal = 1
+pkg syscall/zx/net/stack, const ErrorInternal Error
+pkg syscall/zx/net/stack, const ErrorInvalidArgs = 3
+pkg syscall/zx/net/stack, const ErrorInvalidArgs Error
+pkg syscall/zx/net/stack, const ErrorIo = 8
+pkg syscall/zx/net/stack, const ErrorIo Error
+pkg syscall/zx/net/stack, const ErrorNotFound = 6
+pkg syscall/zx/net/stack, const ErrorNotFound Error
+pkg syscall/zx/net/stack, const ErrorNotSupported = 2
+pkg syscall/zx/net/stack, const ErrorNotSupported Error
+pkg syscall/zx/net/stack, const ErrorTimeOut = 5
+pkg syscall/zx/net/stack, const ErrorTimeOut Error
+pkg syscall/zx/net/stack, const ForwardingDestinationDeviceId = 1
+pkg syscall/zx/net/stack, const ForwardingDestinationDeviceId ideal-int
+pkg syscall/zx/net/stack, const ForwardingDestinationNextHop = 2
+pkg syscall/zx/net/stack, const ForwardingDestinationNextHop ideal-int
+pkg syscall/zx/net/stack, const LogName = "fuchsia.net.stack.Log"
+pkg syscall/zx/net/stack, const LogName ideal-string
+pkg syscall/zx/net/stack, const LogSetLogPacketsOrdinal = 2411119378094307214
+pkg syscall/zx/net/stack, const LogSetLogPacketsOrdinal uint64
+pkg syscall/zx/net/stack, const PhysicalStatusDown = 1
+pkg syscall/zx/net/stack, const PhysicalStatusDown PhysicalStatus
+pkg syscall/zx/net/stack, const PhysicalStatusUp = 2
+pkg syscall/zx/net/stack, const PhysicalStatusUp PhysicalStatus
+pkg syscall/zx/net/stack, const StackAddEthernetInterfaceOrdinal = 6870016835876846171
+pkg syscall/zx/net/stack, const StackAddEthernetInterfaceOrdinal uint64
+pkg syscall/zx/net/stack, const StackAddEthernetInterfaceResultErr = 2
+pkg syscall/zx/net/stack, const StackAddEthernetInterfaceResultErr ideal-int
+pkg syscall/zx/net/stack, const StackAddEthernetInterfaceResultResponse = 1
+pkg syscall/zx/net/stack, const StackAddEthernetInterfaceResultResponse ideal-int
+pkg syscall/zx/net/stack, const StackAddForwardingEntryOrdinal = 6909087013720324361
+pkg syscall/zx/net/stack, const StackAddForwardingEntryOrdinal uint64
+pkg syscall/zx/net/stack, const StackAddForwardingEntryResultErr = 2
+pkg syscall/zx/net/stack, const StackAddForwardingEntryResultErr ideal-int
+pkg syscall/zx/net/stack, const StackAddForwardingEntryResultResponse = 1
+pkg syscall/zx/net/stack, const StackAddForwardingEntryResultResponse ideal-int
+pkg syscall/zx/net/stack, const StackAddInterfaceAddressOrdinal = 7791732415791509155
+pkg syscall/zx/net/stack, const StackAddInterfaceAddressOrdinal uint64
+pkg syscall/zx/net/stack, const StackAddInterfaceAddressResultErr = 2
+pkg syscall/zx/net/stack, const StackAddInterfaceAddressResultErr ideal-int
+pkg syscall/zx/net/stack, const StackAddInterfaceAddressResultResponse = 1
+pkg syscall/zx/net/stack, const StackAddInterfaceAddressResultResponse ideal-int
+pkg syscall/zx/net/stack, const StackAddInterfaceOrdinal = 1641334633485935305
+pkg syscall/zx/net/stack, const StackAddInterfaceOrdinal uint64
+pkg syscall/zx/net/stack, const StackAddInterfaceResultErr = 2
+pkg syscall/zx/net/stack, const StackAddInterfaceResultErr ideal-int
+pkg syscall/zx/net/stack, const StackAddInterfaceResultResponse = 1
+pkg syscall/zx/net/stack, const StackAddInterfaceResultResponse ideal-int
+pkg syscall/zx/net/stack, const StackDelEthernetInterfaceOrdinal = 2197540151352338667
+pkg syscall/zx/net/stack, const StackDelEthernetInterfaceOrdinal uint64
+pkg syscall/zx/net/stack, const StackDelEthernetInterfaceResultErr = 2
+pkg syscall/zx/net/stack, const StackDelEthernetInterfaceResultErr ideal-int
+pkg syscall/zx/net/stack, const StackDelEthernetInterfaceResultResponse = 1
+pkg syscall/zx/net/stack, const StackDelEthernetInterfaceResultResponse ideal-int
+pkg syscall/zx/net/stack, const StackDelForwardingEntryOrdinal = 6201238179434680765
+pkg syscall/zx/net/stack, const StackDelForwardingEntryOrdinal uint64
+pkg syscall/zx/net/stack, const StackDelForwardingEntryResultErr = 2
+pkg syscall/zx/net/stack, const StackDelForwardingEntryResultErr ideal-int
+pkg syscall/zx/net/stack, const StackDelForwardingEntryResultResponse = 1
+pkg syscall/zx/net/stack, const StackDelForwardingEntryResultResponse ideal-int
+pkg syscall/zx/net/stack, const StackDelInterfaceAddressOrdinal = 8292708660070809325
+pkg syscall/zx/net/stack, const StackDelInterfaceAddressOrdinal uint64
+pkg syscall/zx/net/stack, const StackDelInterfaceAddressResultErr = 2
+pkg syscall/zx/net/stack, const StackDelInterfaceAddressResultErr ideal-int
+pkg syscall/zx/net/stack, const StackDelInterfaceAddressResultResponse = 1
+pkg syscall/zx/net/stack, const StackDelInterfaceAddressResultResponse ideal-int
+pkg syscall/zx/net/stack, const StackDisableInterfaceOrdinal = 1658386580839026055
+pkg syscall/zx/net/stack, const StackDisableInterfaceOrdinal uint64
+pkg syscall/zx/net/stack, const StackDisableInterfaceResultErr = 2
+pkg syscall/zx/net/stack, const StackDisableInterfaceResultErr ideal-int
+pkg syscall/zx/net/stack, const StackDisableInterfaceResultResponse = 1
+pkg syscall/zx/net/stack, const StackDisableInterfaceResultResponse ideal-int
+pkg syscall/zx/net/stack, const StackDisableIpForwardingOrdinal = 5151906024393601524
+pkg syscall/zx/net/stack, const StackDisableIpForwardingOrdinal uint64
+pkg syscall/zx/net/stack, const StackDisablePacketFilterOrdinal = 4644404475518437475
+pkg syscall/zx/net/stack, const StackDisablePacketFilterOrdinal uint64
+pkg syscall/zx/net/stack, const StackDisablePacketFilterResultErr = 2
+pkg syscall/zx/net/stack, const StackDisablePacketFilterResultErr ideal-int
+pkg syscall/zx/net/stack, const StackDisablePacketFilterResultResponse = 1
+pkg syscall/zx/net/stack, const StackDisablePacketFilterResultResponse ideal-int
+pkg syscall/zx/net/stack, const StackEnableInterfaceOrdinal = 2820352783247255794
+pkg syscall/zx/net/stack, const StackEnableInterfaceOrdinal uint64
+pkg syscall/zx/net/stack, const StackEnableInterfaceResultErr = 2
+pkg syscall/zx/net/stack, const StackEnableInterfaceResultErr ideal-int
+pkg syscall/zx/net/stack, const StackEnableInterfaceResultResponse = 1
+pkg syscall/zx/net/stack, const StackEnableInterfaceResultResponse ideal-int
+pkg syscall/zx/net/stack, const StackEnableIpForwardingOrdinal = 2945795449612107372
+pkg syscall/zx/net/stack, const StackEnableIpForwardingOrdinal uint64
+pkg syscall/zx/net/stack, const StackEnablePacketFilterOrdinal = 2287079607274353053
+pkg syscall/zx/net/stack, const StackEnablePacketFilterOrdinal uint64
+pkg syscall/zx/net/stack, const StackEnablePacketFilterResultErr = 2
+pkg syscall/zx/net/stack, const StackEnablePacketFilterResultErr ideal-int
+pkg syscall/zx/net/stack, const StackEnablePacketFilterResultResponse = 1
+pkg syscall/zx/net/stack, const StackEnablePacketFilterResultResponse ideal-int
+pkg syscall/zx/net/stack, const StackGetDnsServerWatcherOrdinal = 1499426100045738886
+pkg syscall/zx/net/stack, const StackGetDnsServerWatcherOrdinal uint64
+pkg syscall/zx/net/stack, const StackGetForwardingTableOrdinal = 7921890673159623407
+pkg syscall/zx/net/stack, const StackGetForwardingTableOrdinal uint64
+pkg syscall/zx/net/stack, const StackGetInterfaceInfoOrdinal = 6149228131642639155
+pkg syscall/zx/net/stack, const StackGetInterfaceInfoOrdinal uint64
+pkg syscall/zx/net/stack, const StackGetInterfaceInfoResultErr = 2
+pkg syscall/zx/net/stack, const StackGetInterfaceInfoResultErr ideal-int
+pkg syscall/zx/net/stack, const StackGetInterfaceInfoResultResponse = 1
+pkg syscall/zx/net/stack, const StackGetInterfaceInfoResultResponse ideal-int
+pkg syscall/zx/net/stack, const StackGetInterfaceIpForwardingOrdinal = 2650870805144406172
+pkg syscall/zx/net/stack, const StackGetInterfaceIpForwardingOrdinal uint64
+pkg syscall/zx/net/stack, const StackGetInterfaceIpForwardingResultErr = 2
+pkg syscall/zx/net/stack, const StackGetInterfaceIpForwardingResultErr ideal-int
+pkg syscall/zx/net/stack, const StackGetInterfaceIpForwardingResultResponse = 1
+pkg syscall/zx/net/stack, const StackGetInterfaceIpForwardingResultResponse ideal-int
+pkg syscall/zx/net/stack, const StackListInterfacesOrdinal = 8671789085580757092
+pkg syscall/zx/net/stack, const StackListInterfacesOrdinal uint64
+pkg syscall/zx/net/stack, const StackName = "fuchsia.net.stack.Stack"
+pkg syscall/zx/net/stack, const StackName ideal-string
+pkg syscall/zx/net/stack, const StackSetInterfaceIpForwardingOrdinal = 8768076537535215817
+pkg syscall/zx/net/stack, const StackSetInterfaceIpForwardingOrdinal uint64
+pkg syscall/zx/net/stack, const StackSetInterfaceIpForwardingResultErr = 2
+pkg syscall/zx/net/stack, const StackSetInterfaceIpForwardingResultErr ideal-int
+pkg syscall/zx/net/stack, const StackSetInterfaceIpForwardingResultResponse = 1
+pkg syscall/zx/net/stack, const StackSetInterfaceIpForwardingResultResponse ideal-int
+pkg syscall/zx/net/stack, func DeviceDefinitionWithEthernet(EthernetDeviceDefinition) DeviceDefinition
+pkg syscall/zx/net/stack, func DeviceDefinitionWithIp(network.DeviceWithCtxInterface) DeviceDefinition
+pkg syscall/zx/net/stack, func ForwardingDestinationWithDeviceId(uint64) ForwardingDestination
+pkg syscall/zx/net/stack, func ForwardingDestinationWithNextHop(net.IpAddress) ForwardingDestination
+pkg syscall/zx/net/stack, func NewLogWithCtxInterfaceRequest() (LogWithCtxInterfaceRequest, *LogWithCtxInterface, error)
+pkg syscall/zx/net/stack, func NewStackWithCtxInterfaceRequest() (StackWithCtxInterfaceRequest, *StackWithCtxInterface, error)
+pkg syscall/zx/net/stack, func StackAddEthernetInterfaceResultWithErr(Error) StackAddEthernetInterfaceResult
+pkg syscall/zx/net/stack, func StackAddEthernetInterfaceResultWithResponse(StackAddEthernetInterfaceResponse) StackAddEthernetInterfaceResult
+pkg syscall/zx/net/stack, func StackAddForwardingEntryResultWithErr(Error) StackAddForwardingEntryResult
+pkg syscall/zx/net/stack, func StackAddForwardingEntryResultWithResponse(StackAddForwardingEntryResponse) StackAddForwardingEntryResult
+pkg syscall/zx/net/stack, func StackAddInterfaceAddressResultWithErr(Error) StackAddInterfaceAddressResult
+pkg syscall/zx/net/stack, func StackAddInterfaceAddressResultWithResponse(StackAddInterfaceAddressResponse) StackAddInterfaceAddressResult
+pkg syscall/zx/net/stack, func StackAddInterfaceResultWithErr(Error) StackAddInterfaceResult
+pkg syscall/zx/net/stack, func StackAddInterfaceResultWithResponse(StackAddInterfaceResponse) StackAddInterfaceResult
+pkg syscall/zx/net/stack, func StackDelEthernetInterfaceResultWithErr(Error) StackDelEthernetInterfaceResult
+pkg syscall/zx/net/stack, func StackDelEthernetInterfaceResultWithResponse(StackDelEthernetInterfaceResponse) StackDelEthernetInterfaceResult
+pkg syscall/zx/net/stack, func StackDelForwardingEntryResultWithErr(Error) StackDelForwardingEntryResult
+pkg syscall/zx/net/stack, func StackDelForwardingEntryResultWithResponse(StackDelForwardingEntryResponse) StackDelForwardingEntryResult
+pkg syscall/zx/net/stack, func StackDelInterfaceAddressResultWithErr(Error) StackDelInterfaceAddressResult
+pkg syscall/zx/net/stack, func StackDelInterfaceAddressResultWithResponse(StackDelInterfaceAddressResponse) StackDelInterfaceAddressResult
+pkg syscall/zx/net/stack, func StackDisableInterfaceResultWithErr(Error) StackDisableInterfaceResult
+pkg syscall/zx/net/stack, func StackDisableInterfaceResultWithResponse(StackDisableInterfaceResponse) StackDisableInterfaceResult
+pkg syscall/zx/net/stack, func StackDisablePacketFilterResultWithErr(Error) StackDisablePacketFilterResult
+pkg syscall/zx/net/stack, func StackDisablePacketFilterResultWithResponse(StackDisablePacketFilterResponse) StackDisablePacketFilterResult
+pkg syscall/zx/net/stack, func StackEnableInterfaceResultWithErr(Error) StackEnableInterfaceResult
+pkg syscall/zx/net/stack, func StackEnableInterfaceResultWithResponse(StackEnableInterfaceResponse) StackEnableInterfaceResult
+pkg syscall/zx/net/stack, func StackEnablePacketFilterResultWithErr(Error) StackEnablePacketFilterResult
+pkg syscall/zx/net/stack, func StackEnablePacketFilterResultWithResponse(StackEnablePacketFilterResponse) StackEnablePacketFilterResult
+pkg syscall/zx/net/stack, func StackGetInterfaceInfoResultWithErr(Error) StackGetInterfaceInfoResult
+pkg syscall/zx/net/stack, func StackGetInterfaceInfoResultWithResponse(StackGetInterfaceInfoResponse) StackGetInterfaceInfoResult
+pkg syscall/zx/net/stack, func StackGetInterfaceIpForwardingResultWithErr(Error) StackGetInterfaceIpForwardingResult
+pkg syscall/zx/net/stack, func StackGetInterfaceIpForwardingResultWithResponse(StackGetInterfaceIpForwardingResponse) StackGetInterfaceIpForwardingResult
+pkg syscall/zx/net/stack, func StackSetInterfaceIpForwardingResultWithErr(Error) StackSetInterfaceIpForwardingResult
+pkg syscall/zx/net/stack, func StackSetInterfaceIpForwardingResultWithResponse(StackSetInterfaceIpForwardingResponse) StackSetInterfaceIpForwardingResult
+pkg syscall/zx/net/stack, method (*DeviceDefinition) Ordinal() uint64
+pkg syscall/zx/net/stack, method (*DeviceDefinition) SetEthernet(EthernetDeviceDefinition)
+pkg syscall/zx/net/stack, method (*DeviceDefinition) SetIp(network.DeviceWithCtxInterface)
+pkg syscall/zx/net/stack, method (*DeviceDefinition) Which() I_deviceDefinitionTag
+pkg syscall/zx/net/stack, method (*EthernetDeviceDefinition) Marshaler() fidl.Marshaler
+pkg syscall/zx/net/stack, method (*ForwardingDestination) Ordinal() uint64
+pkg syscall/zx/net/stack, method (*ForwardingDestination) SetDeviceId(uint64)
+pkg syscall/zx/net/stack, method (*ForwardingDestination) SetNextHop(net.IpAddress)
+pkg syscall/zx/net/stack, method (*ForwardingDestination) Which() I_forwardingDestinationTag
+pkg syscall/zx/net/stack, method (*ForwardingEntry) Marshaler() fidl.Marshaler
+pkg syscall/zx/net/stack, method (*InterfaceConfig) ClearMetric()
+pkg syscall/zx/net/stack, method (*InterfaceConfig) ClearName()
+pkg syscall/zx/net/stack, method (*InterfaceConfig) ClearTopopath()
+pkg syscall/zx/net/stack, method (*InterfaceConfig) GetMetric() uint32
+pkg syscall/zx/net/stack, method (*InterfaceConfig) GetMetricWithDefault(uint32) uint32
+pkg syscall/zx/net/stack, method (*InterfaceConfig) GetName() string
+pkg syscall/zx/net/stack, method (*InterfaceConfig) GetNameWithDefault(string) string
+pkg syscall/zx/net/stack, method (*InterfaceConfig) GetTopopath() string
+pkg syscall/zx/net/stack, method (*InterfaceConfig) GetTopopathWithDefault(string) string
+pkg syscall/zx/net/stack, method (*InterfaceConfig) GetUnknownData() map[uint64]fidl.UnknownData
+pkg syscall/zx/net/stack, method (*InterfaceConfig) HasMetric() bool
+pkg syscall/zx/net/stack, method (*InterfaceConfig) HasName() bool
+pkg syscall/zx/net/stack, method (*InterfaceConfig) HasTopopath() bool
+pkg syscall/zx/net/stack, method (*InterfaceConfig) HasUnknownData() bool
+pkg syscall/zx/net/stack, method (*InterfaceConfig) SetMetric(uint32)
+pkg syscall/zx/net/stack, method (*InterfaceConfig) SetName(string)
+pkg syscall/zx/net/stack, method (*InterfaceConfig) SetTopopath(string)
+pkg syscall/zx/net/stack, method (*InterfaceInfo) Marshaler() fidl.Marshaler
+pkg syscall/zx/net/stack, method (*InterfaceProperties) Marshaler() fidl.Marshaler
+pkg syscall/zx/net/stack, method (*LogEventProxy) Handle() *zx.Handle
+pkg syscall/zx/net/stack, method (*LogWithCtxInterface) Handle() *zx.Handle
+pkg syscall/zx/net/stack, method (*LogWithCtxInterface) SetLogPackets(context.Context, bool) error
+pkg syscall/zx/net/stack, method (*LogWithCtxInterfaceRequest) Handle() *zx.Handle
+pkg syscall/zx/net/stack, method (*LogWithCtxStub) Dispatch(fidl.DispatchArgs) (fidl.Message, bool, error)
+pkg syscall/zx/net/stack, method (*StackAddEthernetInterfaceResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/net/stack, method (*StackAddEthernetInterfaceResult) Ordinal() uint64
+pkg syscall/zx/net/stack, method (*StackAddEthernetInterfaceResult) SetErr(Error)
+pkg syscall/zx/net/stack, method (*StackAddEthernetInterfaceResult) SetResponse(StackAddEthernetInterfaceResponse)
+pkg syscall/zx/net/stack, method (*StackAddEthernetInterfaceResult) Which() I_stackAddEthernetInterfaceResultTag
+pkg syscall/zx/net/stack, method (*StackAddForwardingEntryResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/net/stack, method (*StackAddForwardingEntryResult) Ordinal() uint64
+pkg syscall/zx/net/stack, method (*StackAddForwardingEntryResult) SetErr(Error)
+pkg syscall/zx/net/stack, method (*StackAddForwardingEntryResult) SetResponse(StackAddForwardingEntryResponse)
+pkg syscall/zx/net/stack, method (*StackAddForwardingEntryResult) Which() I_stackAddForwardingEntryResultTag
+pkg syscall/zx/net/stack, method (*StackAddInterfaceAddressResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/net/stack, method (*StackAddInterfaceAddressResult) Ordinal() uint64
+pkg syscall/zx/net/stack, method (*StackAddInterfaceAddressResult) SetErr(Error)
+pkg syscall/zx/net/stack, method (*StackAddInterfaceAddressResult) SetResponse(StackAddInterfaceAddressResponse)
+pkg syscall/zx/net/stack, method (*StackAddInterfaceAddressResult) Which() I_stackAddInterfaceAddressResultTag
+pkg syscall/zx/net/stack, method (*StackAddInterfaceResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/net/stack, method (*StackAddInterfaceResult) Ordinal() uint64
+pkg syscall/zx/net/stack, method (*StackAddInterfaceResult) SetErr(Error)
+pkg syscall/zx/net/stack, method (*StackAddInterfaceResult) SetResponse(StackAddInterfaceResponse)
+pkg syscall/zx/net/stack, method (*StackAddInterfaceResult) Which() I_stackAddInterfaceResultTag
+pkg syscall/zx/net/stack, method (*StackDelEthernetInterfaceResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/net/stack, method (*StackDelEthernetInterfaceResult) Ordinal() uint64
+pkg syscall/zx/net/stack, method (*StackDelEthernetInterfaceResult) SetErr(Error)
+pkg syscall/zx/net/stack, method (*StackDelEthernetInterfaceResult) SetResponse(StackDelEthernetInterfaceResponse)
+pkg syscall/zx/net/stack, method (*StackDelEthernetInterfaceResult) Which() I_stackDelEthernetInterfaceResultTag
+pkg syscall/zx/net/stack, method (*StackDelForwardingEntryResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/net/stack, method (*StackDelForwardingEntryResult) Ordinal() uint64
+pkg syscall/zx/net/stack, method (*StackDelForwardingEntryResult) SetErr(Error)
+pkg syscall/zx/net/stack, method (*StackDelForwardingEntryResult) SetResponse(StackDelForwardingEntryResponse)
+pkg syscall/zx/net/stack, method (*StackDelForwardingEntryResult) Which() I_stackDelForwardingEntryResultTag
+pkg syscall/zx/net/stack, method (*StackDelInterfaceAddressResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/net/stack, method (*StackDelInterfaceAddressResult) Ordinal() uint64
+pkg syscall/zx/net/stack, method (*StackDelInterfaceAddressResult) SetErr(Error)
+pkg syscall/zx/net/stack, method (*StackDelInterfaceAddressResult) SetResponse(StackDelInterfaceAddressResponse)
+pkg syscall/zx/net/stack, method (*StackDelInterfaceAddressResult) Which() I_stackDelInterfaceAddressResultTag
+pkg syscall/zx/net/stack, method (*StackDisableInterfaceResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/net/stack, method (*StackDisableInterfaceResult) Ordinal() uint64
+pkg syscall/zx/net/stack, method (*StackDisableInterfaceResult) SetErr(Error)
+pkg syscall/zx/net/stack, method (*StackDisableInterfaceResult) SetResponse(StackDisableInterfaceResponse)
+pkg syscall/zx/net/stack, method (*StackDisableInterfaceResult) Which() I_stackDisableInterfaceResultTag
+pkg syscall/zx/net/stack, method (*StackDisablePacketFilterResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/net/stack, method (*StackDisablePacketFilterResult) Ordinal() uint64
+pkg syscall/zx/net/stack, method (*StackDisablePacketFilterResult) SetErr(Error)
+pkg syscall/zx/net/stack, method (*StackDisablePacketFilterResult) SetResponse(StackDisablePacketFilterResponse)
+pkg syscall/zx/net/stack, method (*StackDisablePacketFilterResult) Which() I_stackDisablePacketFilterResultTag
+pkg syscall/zx/net/stack, method (*StackEnableInterfaceResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/net/stack, method (*StackEnableInterfaceResult) Ordinal() uint64
+pkg syscall/zx/net/stack, method (*StackEnableInterfaceResult) SetErr(Error)
+pkg syscall/zx/net/stack, method (*StackEnableInterfaceResult) SetResponse(StackEnableInterfaceResponse)
+pkg syscall/zx/net/stack, method (*StackEnableInterfaceResult) Which() I_stackEnableInterfaceResultTag
+pkg syscall/zx/net/stack, method (*StackEnablePacketFilterResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/net/stack, method (*StackEnablePacketFilterResult) Ordinal() uint64
+pkg syscall/zx/net/stack, method (*StackEnablePacketFilterResult) SetErr(Error)
+pkg syscall/zx/net/stack, method (*StackEnablePacketFilterResult) SetResponse(StackEnablePacketFilterResponse)
+pkg syscall/zx/net/stack, method (*StackEnablePacketFilterResult) Which() I_stackEnablePacketFilterResultTag
+pkg syscall/zx/net/stack, method (*StackEventProxy) Handle() *zx.Handle
+pkg syscall/zx/net/stack, method (*StackGetInterfaceInfoResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/net/stack, method (*StackGetInterfaceInfoResult) Ordinal() uint64
+pkg syscall/zx/net/stack, method (*StackGetInterfaceInfoResult) SetErr(Error)
+pkg syscall/zx/net/stack, method (*StackGetInterfaceInfoResult) SetResponse(StackGetInterfaceInfoResponse)
+pkg syscall/zx/net/stack, method (*StackGetInterfaceInfoResult) Which() I_stackGetInterfaceInfoResultTag
+pkg syscall/zx/net/stack, method (*StackGetInterfaceIpForwardingResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/net/stack, method (*StackGetInterfaceIpForwardingResult) Ordinal() uint64
+pkg syscall/zx/net/stack, method (*StackGetInterfaceIpForwardingResult) SetErr(Error)
+pkg syscall/zx/net/stack, method (*StackGetInterfaceIpForwardingResult) SetResponse(StackGetInterfaceIpForwardingResponse)
+pkg syscall/zx/net/stack, method (*StackGetInterfaceIpForwardingResult) Which() I_stackGetInterfaceIpForwardingResultTag
+pkg syscall/zx/net/stack, method (*StackSetInterfaceIpForwardingResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/net/stack, method (*StackSetInterfaceIpForwardingResult) Ordinal() uint64
+pkg syscall/zx/net/stack, method (*StackSetInterfaceIpForwardingResult) SetErr(Error)
+pkg syscall/zx/net/stack, method (*StackSetInterfaceIpForwardingResult) SetResponse(StackSetInterfaceIpForwardingResponse)
+pkg syscall/zx/net/stack, method (*StackSetInterfaceIpForwardingResult) Which() I_stackSetInterfaceIpForwardingResultTag
+pkg syscall/zx/net/stack, method (*StackWithCtxInterface) AddEthernetInterface(context.Context, string, ethernet.DeviceWithCtxInterface) (StackAddEthernetInterfaceResult, error)
+pkg syscall/zx/net/stack, method (*StackWithCtxInterface) AddForwardingEntry(context.Context, ForwardingEntry) (StackAddForwardingEntryResult, error)
+pkg syscall/zx/net/stack, method (*StackWithCtxInterface) AddInterface(context.Context, InterfaceConfig, DeviceDefinition) (StackAddInterfaceResult, error)
+pkg syscall/zx/net/stack, method (*StackWithCtxInterface) AddInterfaceAddress(context.Context, uint64, net.Subnet) (StackAddInterfaceAddressResult, error)
+pkg syscall/zx/net/stack, method (*StackWithCtxInterface) DelEthernetInterface(context.Context, uint64) (StackDelEthernetInterfaceResult, error)
+pkg syscall/zx/net/stack, method (*StackWithCtxInterface) DelForwardingEntry(context.Context, net.Subnet) (StackDelForwardingEntryResult, error)
+pkg syscall/zx/net/stack, method (*StackWithCtxInterface) DelInterfaceAddress(context.Context, uint64, net.Subnet) (StackDelInterfaceAddressResult, error)
+pkg syscall/zx/net/stack, method (*StackWithCtxInterface) DisableInterface(context.Context, uint64) (StackDisableInterfaceResult, error)
+pkg syscall/zx/net/stack, method (*StackWithCtxInterface) DisableIpForwarding(context.Context) error
+pkg syscall/zx/net/stack, method (*StackWithCtxInterface) DisablePacketFilter(context.Context, uint64) (StackDisablePacketFilterResult, error)
+pkg syscall/zx/net/stack, method (*StackWithCtxInterface) EnableInterface(context.Context, uint64) (StackEnableInterfaceResult, error)
+pkg syscall/zx/net/stack, method (*StackWithCtxInterface) EnableIpForwarding(context.Context) error
+pkg syscall/zx/net/stack, method (*StackWithCtxInterface) EnablePacketFilter(context.Context, uint64) (StackEnablePacketFilterResult, error)
+pkg syscall/zx/net/stack, method (*StackWithCtxInterface) GetDnsServerWatcher(context.Context, name.DnsServerWatcherWithCtxInterfaceRequest) error
+pkg syscall/zx/net/stack, method (*StackWithCtxInterface) GetForwardingTable(context.Context) ([]ForwardingEntry, error)
+pkg syscall/zx/net/stack, method (*StackWithCtxInterface) GetInterfaceInfo(context.Context, uint64) (StackGetInterfaceInfoResult, error)
+pkg syscall/zx/net/stack, method (*StackWithCtxInterface) GetInterfaceIpForwarding(context.Context, uint64, net.IpVersion) (StackGetInterfaceIpForwardingResult, error)
+pkg syscall/zx/net/stack, method (*StackWithCtxInterface) Handle() *zx.Handle
+pkg syscall/zx/net/stack, method (*StackWithCtxInterface) ListInterfaces(context.Context) ([]InterfaceInfo, error)
+pkg syscall/zx/net/stack, method (*StackWithCtxInterface) SetInterfaceIpForwarding(context.Context, uint64, net.IpVersion, bool) (StackSetInterfaceIpForwardingResult, error)
+pkg syscall/zx/net/stack, method (*StackWithCtxInterfaceRequest) Handle() *zx.Handle
+pkg syscall/zx/net/stack, method (*StackWithCtxStub) Dispatch(fidl.DispatchArgs) (fidl.Message, bool, error)
+pkg syscall/zx/net/stack, method (AdministrativeStatus) I_EnumIsStrict() bool
+pkg syscall/zx/net/stack, method (AdministrativeStatus) I_EnumValues() []AdministrativeStatus
+pkg syscall/zx/net/stack, method (AdministrativeStatus) IsUnknown() bool
+pkg syscall/zx/net/stack, method (AdministrativeStatus) String() string
+pkg syscall/zx/net/stack, method (Error) I_EnumIsStrict() bool
+pkg syscall/zx/net/stack, method (Error) I_EnumValues() []Error
+pkg syscall/zx/net/stack, method (Error) IsUnknown() bool
+pkg syscall/zx/net/stack, method (Error) String() string
+pkg syscall/zx/net/stack, method (LogWithCtxInterfaceRequest) Name() string
+pkg syscall/zx/net/stack, method (LogWithCtxInterfaceRequest) ToChannel() zx.Channel
+pkg syscall/zx/net/stack, method (PhysicalStatus) I_EnumIsStrict() bool
+pkg syscall/zx/net/stack, method (PhysicalStatus) I_EnumValues() []PhysicalStatus
+pkg syscall/zx/net/stack, method (PhysicalStatus) IsUnknown() bool
+pkg syscall/zx/net/stack, method (PhysicalStatus) String() string
+pkg syscall/zx/net/stack, method (StackWithCtxInterfaceRequest) Name() string
+pkg syscall/zx/net/stack, method (StackWithCtxInterfaceRequest) ToChannel() zx.Channel
+pkg syscall/zx/net/stack, type AdministrativeStatus uint32
+pkg syscall/zx/net/stack, type DeviceDefinition struct
+pkg syscall/zx/net/stack, type DeviceDefinition struct, Ethernet EthernetDeviceDefinition
+pkg syscall/zx/net/stack, type DeviceDefinition struct, Ip network.DeviceWithCtxInterface
+pkg syscall/zx/net/stack, type DeviceDefinition struct, embedded I_deviceDefinitionTag
+pkg syscall/zx/net/stack, type Error uint32
+pkg syscall/zx/net/stack, type EthernetDeviceDefinition struct
+pkg syscall/zx/net/stack, type EthernetDeviceDefinition struct, Mac network.MacAddressingWithCtxInterface
+pkg syscall/zx/net/stack, type EthernetDeviceDefinition struct, NetworkDevice network.DeviceWithCtxInterface
+pkg syscall/zx/net/stack, type ForwardingDestination struct
+pkg syscall/zx/net/stack, type ForwardingDestination struct, DeviceId uint64
+pkg syscall/zx/net/stack, type ForwardingDestination struct, NextHop net.IpAddress
+pkg syscall/zx/net/stack, type ForwardingDestination struct, embedded I_forwardingDestinationTag
+pkg syscall/zx/net/stack, type ForwardingEntry struct
+pkg syscall/zx/net/stack, type ForwardingEntry struct, Destination ForwardingDestination
+pkg syscall/zx/net/stack, type ForwardingEntry struct, Subnet net.Subnet
+pkg syscall/zx/net/stack, type I_deviceDefinitionTag uint64
+pkg syscall/zx/net/stack, type I_forwardingDestinationTag uint64
+pkg syscall/zx/net/stack, type I_stackAddEthernetInterfaceResultTag uint64
+pkg syscall/zx/net/stack, type I_stackAddForwardingEntryResultTag uint64
+pkg syscall/zx/net/stack, type I_stackAddInterfaceAddressResultTag uint64
+pkg syscall/zx/net/stack, type I_stackAddInterfaceResultTag uint64
+pkg syscall/zx/net/stack, type I_stackDelEthernetInterfaceResultTag uint64
+pkg syscall/zx/net/stack, type I_stackDelForwardingEntryResultTag uint64
+pkg syscall/zx/net/stack, type I_stackDelInterfaceAddressResultTag uint64
+pkg syscall/zx/net/stack, type I_stackDisableInterfaceResultTag uint64
+pkg syscall/zx/net/stack, type I_stackDisablePacketFilterResultTag uint64
+pkg syscall/zx/net/stack, type I_stackEnableInterfaceResultTag uint64
+pkg syscall/zx/net/stack, type I_stackEnablePacketFilterResultTag uint64
+pkg syscall/zx/net/stack, type I_stackGetInterfaceInfoResultTag uint64
+pkg syscall/zx/net/stack, type I_stackGetInterfaceIpForwardingResultTag uint64
+pkg syscall/zx/net/stack, type I_stackSetInterfaceIpForwardingResultTag uint64
+pkg syscall/zx/net/stack, type InterfaceConfig struct
+pkg syscall/zx/net/stack, type InterfaceConfig struct, I_unknownData interface{}
+pkg syscall/zx/net/stack, type InterfaceConfig struct, Metric uint32
+pkg syscall/zx/net/stack, type InterfaceConfig struct, MetricPresent bool
+pkg syscall/zx/net/stack, type InterfaceConfig struct, Name string
+pkg syscall/zx/net/stack, type InterfaceConfig struct, NamePresent bool
+pkg syscall/zx/net/stack, type InterfaceConfig struct, Topopath string
+pkg syscall/zx/net/stack, type InterfaceConfig struct, TopopathPresent bool
+pkg syscall/zx/net/stack, type InterfaceInfo struct
+pkg syscall/zx/net/stack, type InterfaceInfo struct, Id uint64
+pkg syscall/zx/net/stack, type InterfaceInfo struct, Properties InterfaceProperties
+pkg syscall/zx/net/stack, type InterfaceProperties struct
+pkg syscall/zx/net/stack, type InterfaceProperties struct, Addresses []net.Subnet
+pkg syscall/zx/net/stack, type InterfaceProperties struct, AdministrativeStatus AdministrativeStatus
+pkg syscall/zx/net/stack, type InterfaceProperties struct, Features ethernet.Features
+pkg syscall/zx/net/stack, type InterfaceProperties struct, Filepath string
+pkg syscall/zx/net/stack, type InterfaceProperties struct, Mac *ethernet.MacAddress
+pkg syscall/zx/net/stack, type InterfaceProperties struct, Mtu uint32
+pkg syscall/zx/net/stack, type InterfaceProperties struct, Name string
+pkg syscall/zx/net/stack, type InterfaceProperties struct, PhysicalStatus PhysicalStatus
+pkg syscall/zx/net/stack, type InterfaceProperties struct, Topopath string
+pkg syscall/zx/net/stack, type LogEventProxy struct
+pkg syscall/zx/net/stack, type LogEventProxy struct, embedded zx.Channel
+pkg syscall/zx/net/stack, type LogWithCtx interface { SetLogPackets }
+pkg syscall/zx/net/stack, type LogWithCtx interface, SetLogPackets(context.Context, bool) error
+pkg syscall/zx/net/stack, type LogWithCtxInterface struct
+pkg syscall/zx/net/stack, type LogWithCtxInterface struct, embedded zx.Channel
+pkg syscall/zx/net/stack, type LogWithCtxInterfaceRequest struct
+pkg syscall/zx/net/stack, type LogWithCtxInterfaceRequest struct, embedded zx.Channel
+pkg syscall/zx/net/stack, type LogWithCtxStub struct
+pkg syscall/zx/net/stack, type LogWithCtxStub struct, Impl LogWithCtx
+pkg syscall/zx/net/stack, type LogWithCtxTransitionalBase struct
+pkg syscall/zx/net/stack, type PhysicalStatus uint32
+pkg syscall/zx/net/stack, type StackAddEthernetInterfaceResponse struct
+pkg syscall/zx/net/stack, type StackAddEthernetInterfaceResponse struct, Id uint64
+pkg syscall/zx/net/stack, type StackAddEthernetInterfaceResult struct
+pkg syscall/zx/net/stack, type StackAddEthernetInterfaceResult struct, Err Error
+pkg syscall/zx/net/stack, type StackAddEthernetInterfaceResult struct, Response StackAddEthernetInterfaceResponse
+pkg syscall/zx/net/stack, type StackAddEthernetInterfaceResult struct, embedded I_stackAddEthernetInterfaceResultTag
+pkg syscall/zx/net/stack, type StackAddForwardingEntryResponse struct
+pkg syscall/zx/net/stack, type StackAddForwardingEntryResult struct
+pkg syscall/zx/net/stack, type StackAddForwardingEntryResult struct, Err Error
+pkg syscall/zx/net/stack, type StackAddForwardingEntryResult struct, Response StackAddForwardingEntryResponse
+pkg syscall/zx/net/stack, type StackAddForwardingEntryResult struct, embedded I_stackAddForwardingEntryResultTag
+pkg syscall/zx/net/stack, type StackAddInterfaceAddressResponse struct
+pkg syscall/zx/net/stack, type StackAddInterfaceAddressResult struct
+pkg syscall/zx/net/stack, type StackAddInterfaceAddressResult struct, Err Error
+pkg syscall/zx/net/stack, type StackAddInterfaceAddressResult struct, Response StackAddInterfaceAddressResponse
+pkg syscall/zx/net/stack, type StackAddInterfaceAddressResult struct, embedded I_stackAddInterfaceAddressResultTag
+pkg syscall/zx/net/stack, type StackAddInterfaceResponse struct
+pkg syscall/zx/net/stack, type StackAddInterfaceResponse struct, Id uint64
+pkg syscall/zx/net/stack, type StackAddInterfaceResult struct
+pkg syscall/zx/net/stack, type StackAddInterfaceResult struct, Err Error
+pkg syscall/zx/net/stack, type StackAddInterfaceResult struct, Response StackAddInterfaceResponse
+pkg syscall/zx/net/stack, type StackAddInterfaceResult struct, embedded I_stackAddInterfaceResultTag
+pkg syscall/zx/net/stack, type StackDelEthernetInterfaceResponse struct
+pkg syscall/zx/net/stack, type StackDelEthernetInterfaceResult struct
+pkg syscall/zx/net/stack, type StackDelEthernetInterfaceResult struct, Err Error
+pkg syscall/zx/net/stack, type StackDelEthernetInterfaceResult struct, Response StackDelEthernetInterfaceResponse
+pkg syscall/zx/net/stack, type StackDelEthernetInterfaceResult struct, embedded I_stackDelEthernetInterfaceResultTag
+pkg syscall/zx/net/stack, type StackDelForwardingEntryResponse struct
+pkg syscall/zx/net/stack, type StackDelForwardingEntryResult struct
+pkg syscall/zx/net/stack, type StackDelForwardingEntryResult struct, Err Error
+pkg syscall/zx/net/stack, type StackDelForwardingEntryResult struct, Response StackDelForwardingEntryResponse
+pkg syscall/zx/net/stack, type StackDelForwardingEntryResult struct, embedded I_stackDelForwardingEntryResultTag
+pkg syscall/zx/net/stack, type StackDelInterfaceAddressResponse struct
+pkg syscall/zx/net/stack, type StackDelInterfaceAddressResult struct
+pkg syscall/zx/net/stack, type StackDelInterfaceAddressResult struct, Err Error
+pkg syscall/zx/net/stack, type StackDelInterfaceAddressResult struct, Response StackDelInterfaceAddressResponse
+pkg syscall/zx/net/stack, type StackDelInterfaceAddressResult struct, embedded I_stackDelInterfaceAddressResultTag
+pkg syscall/zx/net/stack, type StackDisableInterfaceResponse struct
+pkg syscall/zx/net/stack, type StackDisableInterfaceResult struct
+pkg syscall/zx/net/stack, type StackDisableInterfaceResult struct, Err Error
+pkg syscall/zx/net/stack, type StackDisableInterfaceResult struct, Response StackDisableInterfaceResponse
+pkg syscall/zx/net/stack, type StackDisableInterfaceResult struct, embedded I_stackDisableInterfaceResultTag
+pkg syscall/zx/net/stack, type StackDisablePacketFilterResponse struct
+pkg syscall/zx/net/stack, type StackDisablePacketFilterResult struct
+pkg syscall/zx/net/stack, type StackDisablePacketFilterResult struct, Err Error
+pkg syscall/zx/net/stack, type StackDisablePacketFilterResult struct, Response StackDisablePacketFilterResponse
+pkg syscall/zx/net/stack, type StackDisablePacketFilterResult struct, embedded I_stackDisablePacketFilterResultTag
+pkg syscall/zx/net/stack, type StackEnableInterfaceResponse struct
+pkg syscall/zx/net/stack, type StackEnableInterfaceResult struct
+pkg syscall/zx/net/stack, type StackEnableInterfaceResult struct, Err Error
+pkg syscall/zx/net/stack, type StackEnableInterfaceResult struct, Response StackEnableInterfaceResponse
+pkg syscall/zx/net/stack, type StackEnableInterfaceResult struct, embedded I_stackEnableInterfaceResultTag
+pkg syscall/zx/net/stack, type StackEnablePacketFilterResponse struct
+pkg syscall/zx/net/stack, type StackEnablePacketFilterResult struct
+pkg syscall/zx/net/stack, type StackEnablePacketFilterResult struct, Err Error
+pkg syscall/zx/net/stack, type StackEnablePacketFilterResult struct, Response StackEnablePacketFilterResponse
+pkg syscall/zx/net/stack, type StackEnablePacketFilterResult struct, embedded I_stackEnablePacketFilterResultTag
+pkg syscall/zx/net/stack, type StackEventProxy struct
+pkg syscall/zx/net/stack, type StackEventProxy struct, embedded zx.Channel
+pkg syscall/zx/net/stack, type StackGetInterfaceInfoResponse struct
+pkg syscall/zx/net/stack, type StackGetInterfaceInfoResponse struct, Info InterfaceInfo
+pkg syscall/zx/net/stack, type StackGetInterfaceInfoResult struct
+pkg syscall/zx/net/stack, type StackGetInterfaceInfoResult struct, Err Error
+pkg syscall/zx/net/stack, type StackGetInterfaceInfoResult struct, Response StackGetInterfaceInfoResponse
+pkg syscall/zx/net/stack, type StackGetInterfaceInfoResult struct, embedded I_stackGetInterfaceInfoResultTag
+pkg syscall/zx/net/stack, type StackGetInterfaceIpForwardingResponse struct
+pkg syscall/zx/net/stack, type StackGetInterfaceIpForwardingResponse struct, Enabled bool
+pkg syscall/zx/net/stack, type StackGetInterfaceIpForwardingResult struct
+pkg syscall/zx/net/stack, type StackGetInterfaceIpForwardingResult struct, Err Error
+pkg syscall/zx/net/stack, type StackGetInterfaceIpForwardingResult struct, Response StackGetInterfaceIpForwardingResponse
+pkg syscall/zx/net/stack, type StackGetInterfaceIpForwardingResult struct, embedded I_stackGetInterfaceIpForwardingResultTag
+pkg syscall/zx/net/stack, type StackSetInterfaceIpForwardingResponse struct
+pkg syscall/zx/net/stack, type StackSetInterfaceIpForwardingResult struct
+pkg syscall/zx/net/stack, type StackSetInterfaceIpForwardingResult struct, Err Error
+pkg syscall/zx/net/stack, type StackSetInterfaceIpForwardingResult struct, Response StackSetInterfaceIpForwardingResponse
+pkg syscall/zx/net/stack, type StackSetInterfaceIpForwardingResult struct, embedded I_stackSetInterfaceIpForwardingResultTag
+pkg syscall/zx/net/stack, type StackWithCtx interface { AddEthernetInterface, AddForwardingEntry, AddInterface, AddInterfaceAddress, DelEthernetInterface, DelForwardingEntry, DelInterfaceAddress, DisableInterface, DisableIpForwarding, DisablePacketFilter, EnableInterface, EnableIpForwarding, EnablePacketFilter, GetDnsServerWatcher, GetForwardingTable, GetInterfaceInfo, GetInterfaceIpForwarding, ListInterfaces, SetInterfaceIpForwarding }
+pkg syscall/zx/net/stack, type StackWithCtx interface, AddEthernetInterface(context.Context, string, ethernet.DeviceWithCtxInterface) (StackAddEthernetInterfaceResult, error)
+pkg syscall/zx/net/stack, type StackWithCtx interface, AddForwardingEntry(context.Context, ForwardingEntry) (StackAddForwardingEntryResult, error)
+pkg syscall/zx/net/stack, type StackWithCtx interface, AddInterface(context.Context, InterfaceConfig, DeviceDefinition) (StackAddInterfaceResult, error)
+pkg syscall/zx/net/stack, type StackWithCtx interface, AddInterfaceAddress(context.Context, uint64, net.Subnet) (StackAddInterfaceAddressResult, error)
+pkg syscall/zx/net/stack, type StackWithCtx interface, DelEthernetInterface(context.Context, uint64) (StackDelEthernetInterfaceResult, error)
+pkg syscall/zx/net/stack, type StackWithCtx interface, DelForwardingEntry(context.Context, net.Subnet) (StackDelForwardingEntryResult, error)
+pkg syscall/zx/net/stack, type StackWithCtx interface, DelInterfaceAddress(context.Context, uint64, net.Subnet) (StackDelInterfaceAddressResult, error)
+pkg syscall/zx/net/stack, type StackWithCtx interface, DisableInterface(context.Context, uint64) (StackDisableInterfaceResult, error)
+pkg syscall/zx/net/stack, type StackWithCtx interface, DisableIpForwarding(context.Context) error
+pkg syscall/zx/net/stack, type StackWithCtx interface, DisablePacketFilter(context.Context, uint64) (StackDisablePacketFilterResult, error)
+pkg syscall/zx/net/stack, type StackWithCtx interface, EnableInterface(context.Context, uint64) (StackEnableInterfaceResult, error)
+pkg syscall/zx/net/stack, type StackWithCtx interface, EnableIpForwarding(context.Context) error
+pkg syscall/zx/net/stack, type StackWithCtx interface, EnablePacketFilter(context.Context, uint64) (StackEnablePacketFilterResult, error)
+pkg syscall/zx/net/stack, type StackWithCtx interface, GetDnsServerWatcher(context.Context, name.DnsServerWatcherWithCtxInterfaceRequest) error
+pkg syscall/zx/net/stack, type StackWithCtx interface, GetForwardingTable(context.Context) ([]ForwardingEntry, error)
+pkg syscall/zx/net/stack, type StackWithCtx interface, GetInterfaceInfo(context.Context, uint64) (StackGetInterfaceInfoResult, error)
+pkg syscall/zx/net/stack, type StackWithCtx interface, GetInterfaceIpForwarding(context.Context, uint64, net.IpVersion) (StackGetInterfaceIpForwardingResult, error)
+pkg syscall/zx/net/stack, type StackWithCtx interface, ListInterfaces(context.Context) ([]InterfaceInfo, error)
+pkg syscall/zx/net/stack, type StackWithCtx interface, SetInterfaceIpForwarding(context.Context, uint64, net.IpVersion, bool) (StackSetInterfaceIpForwardingResult, error)
+pkg syscall/zx/net/stack, type StackWithCtxInterface struct
+pkg syscall/zx/net/stack, type StackWithCtxInterface struct, embedded zx.Channel
+pkg syscall/zx/net/stack, type StackWithCtxInterfaceRequest struct
+pkg syscall/zx/net/stack, type StackWithCtxInterfaceRequest struct, embedded zx.Channel
+pkg syscall/zx/net/stack, type StackWithCtxStub struct
+pkg syscall/zx/net/stack, type StackWithCtxStub struct, Impl StackWithCtx
+pkg syscall/zx/net/stack, type StackWithCtxTransitionalBase struct
+pkg syscall/zx/posix, const Edeadlock = 35
+pkg syscall/zx/posix, const Edeadlock Errno
+pkg syscall/zx/posix, const Enotsup = 95
+pkg syscall/zx/posix, const Enotsup Errno
+pkg syscall/zx/posix, const ErrnoE2Big = 7
+pkg syscall/zx/posix, const ErrnoE2Big Errno
+pkg syscall/zx/posix, const ErrnoEacces = 13
+pkg syscall/zx/posix, const ErrnoEacces Errno
+pkg syscall/zx/posix, const ErrnoEaddrinuse = 98
+pkg syscall/zx/posix, const ErrnoEaddrinuse Errno
+pkg syscall/zx/posix, const ErrnoEaddrnotavail = 99
+pkg syscall/zx/posix, const ErrnoEaddrnotavail Errno
+pkg syscall/zx/posix, const ErrnoEadv = 68
+pkg syscall/zx/posix, const ErrnoEadv Errno
+pkg syscall/zx/posix, const ErrnoEafnosupport = 97
+pkg syscall/zx/posix, const ErrnoEafnosupport Errno
+pkg syscall/zx/posix, const ErrnoEagain = 11
+pkg syscall/zx/posix, const ErrnoEagain Errno
+pkg syscall/zx/posix, const ErrnoEalready = 114
+pkg syscall/zx/posix, const ErrnoEalready Errno
+pkg syscall/zx/posix, const ErrnoEbade = 52
+pkg syscall/zx/posix, const ErrnoEbade Errno
+pkg syscall/zx/posix, const ErrnoEbadf = 9
+pkg syscall/zx/posix, const ErrnoEbadf Errno
+pkg syscall/zx/posix, const ErrnoEbadfd = 77
+pkg syscall/zx/posix, const ErrnoEbadfd Errno
+pkg syscall/zx/posix, const ErrnoEbadmsg = 74
+pkg syscall/zx/posix, const ErrnoEbadmsg Errno
+pkg syscall/zx/posix, const ErrnoEbadr = 53
+pkg syscall/zx/posix, const ErrnoEbadr Errno
+pkg syscall/zx/posix, const ErrnoEbadrqc = 56
+pkg syscall/zx/posix, const ErrnoEbadrqc Errno
+pkg syscall/zx/posix, const ErrnoEbadslt = 57
+pkg syscall/zx/posix, const ErrnoEbadslt Errno
+pkg syscall/zx/posix, const ErrnoEbfont = 59
+pkg syscall/zx/posix, const ErrnoEbfont Errno
+pkg syscall/zx/posix, const ErrnoEbusy = 16
+pkg syscall/zx/posix, const ErrnoEbusy Errno
+pkg syscall/zx/posix, const ErrnoEcanceled = 125
+pkg syscall/zx/posix, const ErrnoEcanceled Errno
+pkg syscall/zx/posix, const ErrnoEchild = 10
+pkg syscall/zx/posix, const ErrnoEchild Errno
+pkg syscall/zx/posix, const ErrnoEchrng = 44
+pkg syscall/zx/posix, const ErrnoEchrng Errno
+pkg syscall/zx/posix, const ErrnoEcomm = 70
+pkg syscall/zx/posix, const ErrnoEcomm Errno
+pkg syscall/zx/posix, const ErrnoEconnaborted = 103
+pkg syscall/zx/posix, const ErrnoEconnaborted Errno
+pkg syscall/zx/posix, const ErrnoEconnrefused = 111
+pkg syscall/zx/posix, const ErrnoEconnrefused Errno
+pkg syscall/zx/posix, const ErrnoEconnreset = 104
+pkg syscall/zx/posix, const ErrnoEconnreset Errno
+pkg syscall/zx/posix, const ErrnoEdeadlk = 35
+pkg syscall/zx/posix, const ErrnoEdeadlk Errno
+pkg syscall/zx/posix, const ErrnoEdestaddrreq = 89
+pkg syscall/zx/posix, const ErrnoEdestaddrreq Errno
+pkg syscall/zx/posix, const ErrnoEdom = 33
+pkg syscall/zx/posix, const ErrnoEdom Errno
+pkg syscall/zx/posix, const ErrnoEdotdot = 73
+pkg syscall/zx/posix, const ErrnoEdotdot Errno
+pkg syscall/zx/posix, const ErrnoEdquot = 122
+pkg syscall/zx/posix, const ErrnoEdquot Errno
+pkg syscall/zx/posix, const ErrnoEexist = 17
+pkg syscall/zx/posix, const ErrnoEexist Errno
+pkg syscall/zx/posix, const ErrnoEfault = 14
+pkg syscall/zx/posix, const ErrnoEfault Errno
+pkg syscall/zx/posix, const ErrnoEfbig = 27
+pkg syscall/zx/posix, const ErrnoEfbig Errno
+pkg syscall/zx/posix, const ErrnoEhostdown = 112
+pkg syscall/zx/posix, const ErrnoEhostdown Errno
+pkg syscall/zx/posix, const ErrnoEhostunreach = 113
+pkg syscall/zx/posix, const ErrnoEhostunreach Errno
+pkg syscall/zx/posix, const ErrnoEhwpoison = 133
+pkg syscall/zx/posix, const ErrnoEhwpoison Errno
+pkg syscall/zx/posix, const ErrnoEidrm = 43
+pkg syscall/zx/posix, const ErrnoEidrm Errno
+pkg syscall/zx/posix, const ErrnoEilseq = 84
+pkg syscall/zx/posix, const ErrnoEilseq Errno
+pkg syscall/zx/posix, const ErrnoEinprogress = 115
+pkg syscall/zx/posix, const ErrnoEinprogress Errno
+pkg syscall/zx/posix, const ErrnoEintr = 4
+pkg syscall/zx/posix, const ErrnoEintr Errno
+pkg syscall/zx/posix, const ErrnoEinval = 22
+pkg syscall/zx/posix, const ErrnoEinval Errno
+pkg syscall/zx/posix, const ErrnoEio = 5
+pkg syscall/zx/posix, const ErrnoEio Errno
+pkg syscall/zx/posix, const ErrnoEisconn = 106
+pkg syscall/zx/posix, const ErrnoEisconn Errno
+pkg syscall/zx/posix, const ErrnoEisdir = 21
+pkg syscall/zx/posix, const ErrnoEisdir Errno
+pkg syscall/zx/posix, const ErrnoEisnam = 120
+pkg syscall/zx/posix, const ErrnoEisnam Errno
+pkg syscall/zx/posix, const ErrnoEkeyexpired = 127
+pkg syscall/zx/posix, const ErrnoEkeyexpired Errno
+pkg syscall/zx/posix, const ErrnoEkeyrejected = 129
+pkg syscall/zx/posix, const ErrnoEkeyrejected Errno
+pkg syscall/zx/posix, const ErrnoEkeyrevoked = 128
+pkg syscall/zx/posix, const ErrnoEkeyrevoked Errno
+pkg syscall/zx/posix, const ErrnoEl2Hlt = 51
+pkg syscall/zx/posix, const ErrnoEl2Hlt Errno
+pkg syscall/zx/posix, const ErrnoEl2Nsync = 45
+pkg syscall/zx/posix, const ErrnoEl2Nsync Errno
+pkg syscall/zx/posix, const ErrnoEl3Hlt = 46
+pkg syscall/zx/posix, const ErrnoEl3Hlt Errno
+pkg syscall/zx/posix, const ErrnoEl3Rst = 47
+pkg syscall/zx/posix, const ErrnoEl3Rst Errno
+pkg syscall/zx/posix, const ErrnoElibacc = 79
+pkg syscall/zx/posix, const ErrnoElibacc Errno
+pkg syscall/zx/posix, const ErrnoElibbad = 80
+pkg syscall/zx/posix, const ErrnoElibbad Errno
+pkg syscall/zx/posix, const ErrnoElibexec = 83
+pkg syscall/zx/posix, const ErrnoElibexec Errno
+pkg syscall/zx/posix, const ErrnoElibmax = 82
+pkg syscall/zx/posix, const ErrnoElibmax Errno
+pkg syscall/zx/posix, const ErrnoElibscn = 81
+pkg syscall/zx/posix, const ErrnoElibscn Errno
+pkg syscall/zx/posix, const ErrnoElnrng = 48
+pkg syscall/zx/posix, const ErrnoElnrng Errno
+pkg syscall/zx/posix, const ErrnoEloop = 40
+pkg syscall/zx/posix, const ErrnoEloop Errno
+pkg syscall/zx/posix, const ErrnoEmediumtype = 124
+pkg syscall/zx/posix, const ErrnoEmediumtype Errno
+pkg syscall/zx/posix, const ErrnoEmfile = 24
+pkg syscall/zx/posix, const ErrnoEmfile Errno
+pkg syscall/zx/posix, const ErrnoEmlink = 31
+pkg syscall/zx/posix, const ErrnoEmlink Errno
+pkg syscall/zx/posix, const ErrnoEmsgsize = 90
+pkg syscall/zx/posix, const ErrnoEmsgsize Errno
+pkg syscall/zx/posix, const ErrnoEmultihop = 72
+pkg syscall/zx/posix, const ErrnoEmultihop Errno
+pkg syscall/zx/posix, const ErrnoEnametoolong = 36
+pkg syscall/zx/posix, const ErrnoEnametoolong Errno
+pkg syscall/zx/posix, const ErrnoEnavail = 119
+pkg syscall/zx/posix, const ErrnoEnavail Errno
+pkg syscall/zx/posix, const ErrnoEnetdown = 100
+pkg syscall/zx/posix, const ErrnoEnetdown Errno
+pkg syscall/zx/posix, const ErrnoEnetreset = 102
+pkg syscall/zx/posix, const ErrnoEnetreset Errno
+pkg syscall/zx/posix, const ErrnoEnetunreach = 101
+pkg syscall/zx/posix, const ErrnoEnetunreach Errno
+pkg syscall/zx/posix, const ErrnoEnfile = 23
+pkg syscall/zx/posix, const ErrnoEnfile Errno
+pkg syscall/zx/posix, const ErrnoEnoano = 55
+pkg syscall/zx/posix, const ErrnoEnoano Errno
+pkg syscall/zx/posix, const ErrnoEnobufs = 105
+pkg syscall/zx/posix, const ErrnoEnobufs Errno
+pkg syscall/zx/posix, const ErrnoEnocsi = 50
+pkg syscall/zx/posix, const ErrnoEnocsi Errno
+pkg syscall/zx/posix, const ErrnoEnodata = 61
+pkg syscall/zx/posix, const ErrnoEnodata Errno
+pkg syscall/zx/posix, const ErrnoEnodev = 19
+pkg syscall/zx/posix, const ErrnoEnodev Errno
+pkg syscall/zx/posix, const ErrnoEnoent = 2
+pkg syscall/zx/posix, const ErrnoEnoent Errno
+pkg syscall/zx/posix, const ErrnoEnoexec = 8
+pkg syscall/zx/posix, const ErrnoEnoexec Errno
+pkg syscall/zx/posix, const ErrnoEnokey = 126
+pkg syscall/zx/posix, const ErrnoEnokey Errno
+pkg syscall/zx/posix, const ErrnoEnolck = 37
+pkg syscall/zx/posix, const ErrnoEnolck Errno
+pkg syscall/zx/posix, const ErrnoEnolink = 67
+pkg syscall/zx/posix, const ErrnoEnolink Errno
+pkg syscall/zx/posix, const ErrnoEnomedium = 123
+pkg syscall/zx/posix, const ErrnoEnomedium Errno
+pkg syscall/zx/posix, const ErrnoEnomem = 12
+pkg syscall/zx/posix, const ErrnoEnomem Errno
+pkg syscall/zx/posix, const ErrnoEnomsg = 42
+pkg syscall/zx/posix, const ErrnoEnomsg Errno
+pkg syscall/zx/posix, const ErrnoEnonet = 64
+pkg syscall/zx/posix, const ErrnoEnonet Errno
+pkg syscall/zx/posix, const ErrnoEnopkg = 65
+pkg syscall/zx/posix, const ErrnoEnopkg Errno
+pkg syscall/zx/posix, const ErrnoEnoprotoopt = 92
+pkg syscall/zx/posix, const ErrnoEnoprotoopt Errno
+pkg syscall/zx/posix, const ErrnoEnospc = 28
+pkg syscall/zx/posix, const ErrnoEnospc Errno
+pkg syscall/zx/posix, const ErrnoEnosr = 63
+pkg syscall/zx/posix, const ErrnoEnosr Errno
+pkg syscall/zx/posix, const ErrnoEnostr = 60
+pkg syscall/zx/posix, const ErrnoEnostr Errno
+pkg syscall/zx/posix, const ErrnoEnosys = 38
+pkg syscall/zx/posix, const ErrnoEnosys Errno
+pkg syscall/zx/posix, const ErrnoEnotblk = 15
+pkg syscall/zx/posix, const ErrnoEnotblk Errno
+pkg syscall/zx/posix, const ErrnoEnotconn = 107
+pkg syscall/zx/posix, const ErrnoEnotconn Errno
+pkg syscall/zx/posix, const ErrnoEnotdir = 20
+pkg syscall/zx/posix, const ErrnoEnotdir Errno
+pkg syscall/zx/posix, const ErrnoEnotempty = 39
+pkg syscall/zx/posix, const ErrnoEnotempty Errno
+pkg syscall/zx/posix, const ErrnoEnotnam = 118
+pkg syscall/zx/posix, const ErrnoEnotnam Errno
+pkg syscall/zx/posix, const ErrnoEnotrecoverable = 131
+pkg syscall/zx/posix, const ErrnoEnotrecoverable Errno
+pkg syscall/zx/posix, const ErrnoEnotsock = 88
+pkg syscall/zx/posix, const ErrnoEnotsock Errno
+pkg syscall/zx/posix, const ErrnoEnotty = 25
+pkg syscall/zx/posix, const ErrnoEnotty Errno
+pkg syscall/zx/posix, const ErrnoEnotuniq = 76
+pkg syscall/zx/posix, const ErrnoEnotuniq Errno
+pkg syscall/zx/posix, const ErrnoEnxio = 6
+pkg syscall/zx/posix, const ErrnoEnxio Errno
+pkg syscall/zx/posix, const ErrnoEopnotsupp = 95
+pkg syscall/zx/posix, const ErrnoEopnotsupp Errno
+pkg syscall/zx/posix, const ErrnoEoverflow = 75
+pkg syscall/zx/posix, const ErrnoEoverflow Errno
+pkg syscall/zx/posix, const ErrnoEownerdead = 130
+pkg syscall/zx/posix, const ErrnoEownerdead Errno
+pkg syscall/zx/posix, const ErrnoEperm = 1
+pkg syscall/zx/posix, const ErrnoEperm Errno
+pkg syscall/zx/posix, const ErrnoEpfnosupport = 96
+pkg syscall/zx/posix, const ErrnoEpfnosupport Errno
+pkg syscall/zx/posix, const ErrnoEpipe = 32
+pkg syscall/zx/posix, const ErrnoEpipe Errno
+pkg syscall/zx/posix, const ErrnoEproto = 71
+pkg syscall/zx/posix, const ErrnoEproto Errno
+pkg syscall/zx/posix, const ErrnoEprotonosupport = 93
+pkg syscall/zx/posix, const ErrnoEprotonosupport Errno
+pkg syscall/zx/posix, const ErrnoEprototype = 91
+pkg syscall/zx/posix, const ErrnoEprototype Errno
+pkg syscall/zx/posix, const ErrnoErange = 34
+pkg syscall/zx/posix, const ErrnoErange Errno
+pkg syscall/zx/posix, const ErrnoEremchg = 78
+pkg syscall/zx/posix, const ErrnoEremchg Errno
+pkg syscall/zx/posix, const ErrnoEremote = 66
+pkg syscall/zx/posix, const ErrnoEremote Errno
+pkg syscall/zx/posix, const ErrnoEremoteio = 121
+pkg syscall/zx/posix, const ErrnoEremoteio Errno
+pkg syscall/zx/posix, const ErrnoErestart = 85
+pkg syscall/zx/posix, const ErrnoErestart Errno
+pkg syscall/zx/posix, const ErrnoErfkill = 132
+pkg syscall/zx/posix, const ErrnoErfkill Errno
+pkg syscall/zx/posix, const ErrnoErofs = 30
+pkg syscall/zx/posix, const ErrnoErofs Errno
+pkg syscall/zx/posix, const ErrnoEshutdown = 108
+pkg syscall/zx/posix, const ErrnoEshutdown Errno
+pkg syscall/zx/posix, const ErrnoEsocktnosupport = 94
+pkg syscall/zx/posix, const ErrnoEsocktnosupport Errno
+pkg syscall/zx/posix, const ErrnoEspipe = 29
+pkg syscall/zx/posix, const ErrnoEspipe Errno
+pkg syscall/zx/posix, const ErrnoEsrch = 3
+pkg syscall/zx/posix, const ErrnoEsrch Errno
+pkg syscall/zx/posix, const ErrnoEsrmnt = 69
+pkg syscall/zx/posix, const ErrnoEsrmnt Errno
+pkg syscall/zx/posix, const ErrnoEstale = 116
+pkg syscall/zx/posix, const ErrnoEstale Errno
+pkg syscall/zx/posix, const ErrnoEstrpipe = 86
+pkg syscall/zx/posix, const ErrnoEstrpipe Errno
+pkg syscall/zx/posix, const ErrnoEtime = 62
+pkg syscall/zx/posix, const ErrnoEtime Errno
+pkg syscall/zx/posix, const ErrnoEtimedout = 110
+pkg syscall/zx/posix, const ErrnoEtimedout Errno
+pkg syscall/zx/posix, const ErrnoEtoomanyrefs = 109
+pkg syscall/zx/posix, const ErrnoEtoomanyrefs Errno
+pkg syscall/zx/posix, const ErrnoEtxtbsy = 26
+pkg syscall/zx/posix, const ErrnoEtxtbsy Errno
+pkg syscall/zx/posix, const ErrnoEuclean = 117
+pkg syscall/zx/posix, const ErrnoEuclean Errno
+pkg syscall/zx/posix, const ErrnoEunatch = 49
+pkg syscall/zx/posix, const ErrnoEunatch Errno
+pkg syscall/zx/posix, const ErrnoEusers = 87
+pkg syscall/zx/posix, const ErrnoEusers Errno
+pkg syscall/zx/posix, const ErrnoExdev = 18
+pkg syscall/zx/posix, const ErrnoExdev Errno
+pkg syscall/zx/posix, const ErrnoExfull = 54
+pkg syscall/zx/posix, const ErrnoExfull Errno
+pkg syscall/zx/posix, const Ewouldblock = 11
+pkg syscall/zx/posix, const Ewouldblock Errno
+pkg syscall/zx/posix, method (Errno) I_EnumIsStrict() bool
+pkg syscall/zx/posix, method (Errno) I_EnumValues() []Errno
+pkg syscall/zx/posix, method (Errno) IsUnknown() bool
+pkg syscall/zx/posix, method (Errno) String() string
+pkg syscall/zx/posix, type Errno int32
+pkg syscall/zx/posix/socket, const BaseSocketAddIpMembershipOrdinal = 4153706055039272864
+pkg syscall/zx/posix/socket, const BaseSocketAddIpMembershipOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketAddIpMembershipResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketAddIpMembershipResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketAddIpMembershipResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketAddIpMembershipResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketAddIpv6MembershipOrdinal = 2528022147636499649
+pkg syscall/zx/posix/socket, const BaseSocketAddIpv6MembershipOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketAddIpv6MembershipResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketAddIpv6MembershipResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketAddIpv6MembershipResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketAddIpv6MembershipResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketBindOrdinal = 1118115255807776188
+pkg syscall/zx/posix/socket, const BaseSocketBindOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketBindResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketBindResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketBindResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketBindResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketCloneOrdinal = 6512600400724287855
+pkg syscall/zx/posix/socket, const BaseSocketCloneOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketCloseOrdinal = 5983530995951066180
+pkg syscall/zx/posix/socket, const BaseSocketCloseOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketConnectOrdinal = 1705719532842400689
+pkg syscall/zx/posix/socket, const BaseSocketConnectOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketConnectResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketConnectResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketConnectResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketConnectResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketDescribeOrdinal = 1152055232528178848
+pkg syscall/zx/posix/socket, const BaseSocketDescribeOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketDisconnectOrdinal = 2371969537656451236
+pkg syscall/zx/posix/socket, const BaseSocketDisconnectOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketDisconnectResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketDisconnectResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketDisconnectResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketDisconnectResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketDropIpMembershipOrdinal = 7860726367297036884
+pkg syscall/zx/posix/socket, const BaseSocketDropIpMembershipOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketDropIpMembershipResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketDropIpMembershipResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketDropIpMembershipResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketDropIpMembershipResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketDropIpv6MembershipOrdinal = 7105575044582229184
+pkg syscall/zx/posix/socket, const BaseSocketDropIpv6MembershipOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketDropIpv6MembershipResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketDropIpv6MembershipResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketDropIpv6MembershipResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketDropIpv6MembershipResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetAcceptConnOrdinal = 7480036662830729574
+pkg syscall/zx/posix/socket, const BaseSocketGetAcceptConnOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketGetAcceptConnResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketGetAcceptConnResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetAcceptConnResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketGetAcceptConnResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetAttrOrdinal = 8689798978500614909
+pkg syscall/zx/posix/socket, const BaseSocketGetAttrOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketGetBindToDeviceOrdinal = 1923595528092321480
+pkg syscall/zx/posix/socket, const BaseSocketGetBindToDeviceOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketGetBindToDeviceResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketGetBindToDeviceResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetBindToDeviceResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketGetBindToDeviceResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetBroadcastOrdinal = 7528171145484924941
+pkg syscall/zx/posix/socket, const BaseSocketGetBroadcastOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketGetBroadcastResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketGetBroadcastResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetBroadcastResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketGetBroadcastResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetErrorOrdinal = 6533942076392828603
+pkg syscall/zx/posix/socket, const BaseSocketGetErrorOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketGetErrorResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketGetErrorResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetErrorResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketGetErrorResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetIpMulticastInterfaceOrdinal = 4918308280741130276
+pkg syscall/zx/posix/socket, const BaseSocketGetIpMulticastInterfaceOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketGetIpMulticastInterfaceResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketGetIpMulticastInterfaceResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetIpMulticastInterfaceResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketGetIpMulticastInterfaceResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetIpMulticastLoopbackOrdinal = 2860187602730912936
+pkg syscall/zx/posix/socket, const BaseSocketGetIpMulticastLoopbackOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketGetIpMulticastLoopbackResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketGetIpMulticastLoopbackResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetIpMulticastLoopbackResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketGetIpMulticastLoopbackResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetIpMulticastTtlOrdinal = 1714697993812638784
+pkg syscall/zx/posix/socket, const BaseSocketGetIpMulticastTtlOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketGetIpMulticastTtlResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketGetIpMulticastTtlResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetIpMulticastTtlResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketGetIpMulticastTtlResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetIpPacketInfoOrdinal = 1688568992388459285
+pkg syscall/zx/posix/socket, const BaseSocketGetIpPacketInfoOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketGetIpPacketInfoResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketGetIpPacketInfoResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetIpPacketInfoResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketGetIpPacketInfoResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetIpReceiveTypeOfServiceOrdinal = 2795651684914668640
+pkg syscall/zx/posix/socket, const BaseSocketGetIpReceiveTypeOfServiceOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketGetIpReceiveTypeOfServiceResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketGetIpReceiveTypeOfServiceResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetIpReceiveTypeOfServiceResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketGetIpReceiveTypeOfServiceResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetIpTtlOrdinal = 8691206072052717484
+pkg syscall/zx/posix/socket, const BaseSocketGetIpTtlOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketGetIpTtlResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketGetIpTtlResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetIpTtlResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketGetIpTtlResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetIpTypeOfServiceOrdinal = 2828496684558442161
+pkg syscall/zx/posix/socket, const BaseSocketGetIpTypeOfServiceOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketGetIpTypeOfServiceResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketGetIpTypeOfServiceResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetIpTypeOfServiceResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketGetIpTypeOfServiceResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetIpv6MulticastHopsOrdinal = 5882765601580656453
+pkg syscall/zx/posix/socket, const BaseSocketGetIpv6MulticastHopsOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketGetIpv6MulticastHopsResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketGetIpv6MulticastHopsResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetIpv6MulticastHopsResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketGetIpv6MulticastHopsResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetIpv6MulticastInterfaceOrdinal = 8903397652801991356
+pkg syscall/zx/posix/socket, const BaseSocketGetIpv6MulticastInterfaceOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketGetIpv6MulticastInterfaceResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketGetIpv6MulticastInterfaceResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetIpv6MulticastInterfaceResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketGetIpv6MulticastInterfaceResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetIpv6MulticastLoopbackOrdinal = 8707239624767523125
+pkg syscall/zx/posix/socket, const BaseSocketGetIpv6MulticastLoopbackOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketGetIpv6MulticastLoopbackResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketGetIpv6MulticastLoopbackResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetIpv6MulticastLoopbackResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketGetIpv6MulticastLoopbackResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetIpv6OnlyOrdinal = 2726495669902548094
+pkg syscall/zx/posix/socket, const BaseSocketGetIpv6OnlyOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketGetIpv6OnlyResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketGetIpv6OnlyResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetIpv6OnlyResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketGetIpv6OnlyResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetIpv6ReceiveTrafficClassOrdinal = 2054824156998747542
+pkg syscall/zx/posix/socket, const BaseSocketGetIpv6ReceiveTrafficClassOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketGetIpv6ReceiveTrafficClassResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketGetIpv6ReceiveTrafficClassResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetIpv6ReceiveTrafficClassResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketGetIpv6ReceiveTrafficClassResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetIpv6TrafficClassOrdinal = 7828867033215089850
+pkg syscall/zx/posix/socket, const BaseSocketGetIpv6TrafficClassOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketGetIpv6TrafficClassResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketGetIpv6TrafficClassResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetIpv6TrafficClassResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketGetIpv6TrafficClassResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetKeepAliveOrdinal = 3301874315258153426
+pkg syscall/zx/posix/socket, const BaseSocketGetKeepAliveOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketGetKeepAliveResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketGetKeepAliveResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetKeepAliveResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketGetKeepAliveResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetLingerOrdinal = 5254329658518474309
+pkg syscall/zx/posix/socket, const BaseSocketGetLingerOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketGetLingerResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketGetLingerResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetLingerResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketGetLingerResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetNoCheckOrdinal = 3230247044467750548
+pkg syscall/zx/posix/socket, const BaseSocketGetNoCheckOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketGetNoCheckResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketGetNoCheckResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetNoCheckResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketGetNoCheckResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetOutOfBandInlineOrdinal = 3786430745745692485
+pkg syscall/zx/posix/socket, const BaseSocketGetOutOfBandInlineOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketGetOutOfBandInlineResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketGetOutOfBandInlineResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetOutOfBandInlineResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketGetOutOfBandInlineResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetPeerNameOrdinal = 4614448585615564437
+pkg syscall/zx/posix/socket, const BaseSocketGetPeerNameOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketGetPeerNameResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketGetPeerNameResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetPeerNameResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketGetPeerNameResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetReceiveBufferOrdinal = 1495657654187499100
+pkg syscall/zx/posix/socket, const BaseSocketGetReceiveBufferOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketGetReceiveBufferResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketGetReceiveBufferResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetReceiveBufferResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketGetReceiveBufferResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetReuseAddressOrdinal = 7473477752945623205
+pkg syscall/zx/posix/socket, const BaseSocketGetReuseAddressOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketGetReuseAddressResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketGetReuseAddressResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetReuseAddressResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketGetReuseAddressResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetReusePortOrdinal = 8795860040453978152
+pkg syscall/zx/posix/socket, const BaseSocketGetReusePortOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketGetReusePortResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketGetReusePortResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetReusePortResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketGetReusePortResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetSendBufferOrdinal = 8693407268113367307
+pkg syscall/zx/posix/socket, const BaseSocketGetSendBufferOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketGetSendBufferResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketGetSendBufferResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetSendBufferResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketGetSendBufferResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetSockNameOrdinal = 4730495873806049181
+pkg syscall/zx/posix/socket, const BaseSocketGetSockNameOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketGetSockNameResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketGetSockNameResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetSockNameResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketGetSockNameResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetTimestampOrdinal = 5328602765801471271
+pkg syscall/zx/posix/socket, const BaseSocketGetTimestampOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketGetTimestampResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketGetTimestampResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketGetTimestampResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketGetTimestampResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketNodeGetFlagsOrdinal = 6595803110182632097
+pkg syscall/zx/posix/socket, const BaseSocketNodeGetFlagsOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketNodeSetFlagsOrdinal = 5950864159036794675
+pkg syscall/zx/posix/socket, const BaseSocketNodeSetFlagsOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketOnOpenOrdinal = 9207534335756671346
+pkg syscall/zx/posix/socket, const BaseSocketOnOpenOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketSetAttrOrdinal = 4721673413776871238
+pkg syscall/zx/posix/socket, const BaseSocketSetAttrOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketSetBindToDeviceOrdinal = 2384854481495568324
+pkg syscall/zx/posix/socket, const BaseSocketSetBindToDeviceOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketSetBindToDeviceResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketSetBindToDeviceResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketSetBindToDeviceResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketSetBindToDeviceResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketSetBroadcastOrdinal = 6927627499941452103
+pkg syscall/zx/posix/socket, const BaseSocketSetBroadcastOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketSetBroadcastResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketSetBroadcastResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketSetBroadcastResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketSetBroadcastResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketSetIpMulticastInterfaceOrdinal = 7306806407978532088
+pkg syscall/zx/posix/socket, const BaseSocketSetIpMulticastInterfaceOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketSetIpMulticastInterfaceResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketSetIpMulticastInterfaceResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketSetIpMulticastInterfaceResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketSetIpMulticastInterfaceResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketSetIpMulticastLoopbackOrdinal = 190676425902138217
+pkg syscall/zx/posix/socket, const BaseSocketSetIpMulticastLoopbackOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketSetIpMulticastLoopbackResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketSetIpMulticastLoopbackResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketSetIpMulticastLoopbackResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketSetIpMulticastLoopbackResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketSetIpMulticastTtlOrdinal = 9014596182554050771
+pkg syscall/zx/posix/socket, const BaseSocketSetIpMulticastTtlOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketSetIpMulticastTtlResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketSetIpMulticastTtlResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketSetIpMulticastTtlResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketSetIpMulticastTtlResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketSetIpPacketInfoOrdinal = 4468137122591751171
+pkg syscall/zx/posix/socket, const BaseSocketSetIpPacketInfoOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketSetIpPacketInfoResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketSetIpPacketInfoResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketSetIpPacketInfoResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketSetIpPacketInfoResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketSetIpReceiveTypeOfServiceOrdinal = 1663095333240167909
+pkg syscall/zx/posix/socket, const BaseSocketSetIpReceiveTypeOfServiceOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketSetIpReceiveTypeOfServiceResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketSetIpReceiveTypeOfServiceResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketSetIpReceiveTypeOfServiceResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketSetIpReceiveTypeOfServiceResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketSetIpTtlOrdinal = 7438081200508866958
+pkg syscall/zx/posix/socket, const BaseSocketSetIpTtlOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketSetIpTtlResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketSetIpTtlResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketSetIpTtlResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketSetIpTtlResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketSetIpTypeOfServiceOrdinal = 6167760755404079946
+pkg syscall/zx/posix/socket, const BaseSocketSetIpTypeOfServiceOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketSetIpTypeOfServiceResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketSetIpTypeOfServiceResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketSetIpTypeOfServiceResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketSetIpTypeOfServiceResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketSetIpv6MulticastHopsOrdinal = 3107879365955438941
+pkg syscall/zx/posix/socket, const BaseSocketSetIpv6MulticastHopsOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketSetIpv6MulticastHopsResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketSetIpv6MulticastHopsResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketSetIpv6MulticastHopsResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketSetIpv6MulticastHopsResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketSetIpv6MulticastInterfaceOrdinal = 6713273364174422580
+pkg syscall/zx/posix/socket, const BaseSocketSetIpv6MulticastInterfaceOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketSetIpv6MulticastInterfaceResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketSetIpv6MulticastInterfaceResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketSetIpv6MulticastInterfaceResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketSetIpv6MulticastInterfaceResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketSetIpv6MulticastLoopbackOrdinal = 682021103916377015
+pkg syscall/zx/posix/socket, const BaseSocketSetIpv6MulticastLoopbackOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketSetIpv6MulticastLoopbackResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketSetIpv6MulticastLoopbackResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketSetIpv6MulticastLoopbackResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketSetIpv6MulticastLoopbackResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketSetIpv6OnlyOrdinal = 2127896243535920306
+pkg syscall/zx/posix/socket, const BaseSocketSetIpv6OnlyOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketSetIpv6OnlyResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketSetIpv6OnlyResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketSetIpv6OnlyResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketSetIpv6OnlyResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketSetIpv6ReceiveTrafficClassOrdinal = 6032918535733452772
+pkg syscall/zx/posix/socket, const BaseSocketSetIpv6ReceiveTrafficClassOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketSetIpv6ReceiveTrafficClassResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketSetIpv6ReceiveTrafficClassResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketSetIpv6ReceiveTrafficClassResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketSetIpv6ReceiveTrafficClassResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketSetIpv6TrafficClassOrdinal = 3664255147581298562
+pkg syscall/zx/posix/socket, const BaseSocketSetIpv6TrafficClassOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketSetIpv6TrafficClassResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketSetIpv6TrafficClassResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketSetIpv6TrafficClassResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketSetIpv6TrafficClassResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketSetKeepAliveOrdinal = 6281950768033485511
+pkg syscall/zx/posix/socket, const BaseSocketSetKeepAliveOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketSetKeepAliveResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketSetKeepAliveResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketSetKeepAliveResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketSetKeepAliveResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketSetLingerOrdinal = 4987845787467553166
+pkg syscall/zx/posix/socket, const BaseSocketSetLingerOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketSetLingerResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketSetLingerResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketSetLingerResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketSetLingerResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketSetNoCheckOrdinal = 7763925129696671938
+pkg syscall/zx/posix/socket, const BaseSocketSetNoCheckOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketSetNoCheckResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketSetNoCheckResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketSetNoCheckResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketSetNoCheckResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketSetOutOfBandInlineOrdinal = 282799447597835321
+pkg syscall/zx/posix/socket, const BaseSocketSetOutOfBandInlineOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketSetOutOfBandInlineResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketSetOutOfBandInlineResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketSetOutOfBandInlineResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketSetOutOfBandInlineResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketSetReceiveBufferOrdinal = 7713807381122805761
+pkg syscall/zx/posix/socket, const BaseSocketSetReceiveBufferOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketSetReceiveBufferResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketSetReceiveBufferResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketSetReceiveBufferResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketSetReceiveBufferResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketSetReuseAddressOrdinal = 2294389296622512246
+pkg syscall/zx/posix/socket, const BaseSocketSetReuseAddressOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketSetReuseAddressResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketSetReuseAddressResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketSetReuseAddressResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketSetReuseAddressResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketSetReusePortOrdinal = 2656347923086679243
+pkg syscall/zx/posix/socket, const BaseSocketSetReusePortOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketSetReusePortResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketSetReusePortResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketSetReusePortResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketSetReusePortResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketSetSendBufferOrdinal = 8461890084235016816
+pkg syscall/zx/posix/socket, const BaseSocketSetSendBufferOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketSetSendBufferResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketSetSendBufferResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketSetSendBufferResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketSetSendBufferResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketSetTimestampOrdinal = 2908592082776217657
+pkg syscall/zx/posix/socket, const BaseSocketSetTimestampOrdinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketSetTimestampResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketSetTimestampResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketSetTimestampResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketSetTimestampResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketShutdown2Ordinal = 6328478384407213627
+pkg syscall/zx/posix/socket, const BaseSocketShutdown2Ordinal uint64
+pkg syscall/zx/posix/socket, const BaseSocketShutdown2ResultErr = 2
+pkg syscall/zx/posix/socket, const BaseSocketShutdown2ResultErr ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketShutdown2ResultResponse = 1
+pkg syscall/zx/posix/socket, const BaseSocketShutdown2ResultResponse ideal-int
+pkg syscall/zx/posix/socket, const BaseSocketSyncOrdinal = 1773723578397144345
+pkg syscall/zx/posix/socket, const BaseSocketSyncOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketAddIpMembershipOrdinal = 4153706055039272864
+pkg syscall/zx/posix/socket, const DatagramSocketAddIpMembershipOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketAddIpv6MembershipOrdinal = 2528022147636499649
+pkg syscall/zx/posix/socket, const DatagramSocketAddIpv6MembershipOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketBindOrdinal = 1118115255807776188
+pkg syscall/zx/posix/socket, const DatagramSocketBindOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketCloneOrdinal = 6512600400724287855
+pkg syscall/zx/posix/socket, const DatagramSocketCloneOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketCloseOrdinal = 5983530995951066180
+pkg syscall/zx/posix/socket, const DatagramSocketCloseOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketConnectOrdinal = 1705719532842400689
+pkg syscall/zx/posix/socket, const DatagramSocketConnectOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketDescribeOrdinal = 1152055232528178848
+pkg syscall/zx/posix/socket, const DatagramSocketDescribeOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketDisconnectOrdinal = 2371969537656451236
+pkg syscall/zx/posix/socket, const DatagramSocketDisconnectOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketDropIpMembershipOrdinal = 7860726367297036884
+pkg syscall/zx/posix/socket, const DatagramSocketDropIpMembershipOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketDropIpv6MembershipOrdinal = 7105575044582229184
+pkg syscall/zx/posix/socket, const DatagramSocketDropIpv6MembershipOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketGetAcceptConnOrdinal = 7480036662830729574
+pkg syscall/zx/posix/socket, const DatagramSocketGetAcceptConnOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketGetAttrOrdinal = 8689798978500614909
+pkg syscall/zx/posix/socket, const DatagramSocketGetAttrOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketGetBindToDeviceOrdinal = 1923595528092321480
+pkg syscall/zx/posix/socket, const DatagramSocketGetBindToDeviceOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketGetBroadcastOrdinal = 7528171145484924941
+pkg syscall/zx/posix/socket, const DatagramSocketGetBroadcastOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketGetErrorOrdinal = 6533942076392828603
+pkg syscall/zx/posix/socket, const DatagramSocketGetErrorOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketGetInfoOrdinal = 7940165717368966159
+pkg syscall/zx/posix/socket, const DatagramSocketGetInfoOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketGetInfoResultErr = 2
+pkg syscall/zx/posix/socket, const DatagramSocketGetInfoResultErr ideal-int
+pkg syscall/zx/posix/socket, const DatagramSocketGetInfoResultResponse = 1
+pkg syscall/zx/posix/socket, const DatagramSocketGetInfoResultResponse ideal-int
+pkg syscall/zx/posix/socket, const DatagramSocketGetIpMulticastInterfaceOrdinal = 4918308280741130276
+pkg syscall/zx/posix/socket, const DatagramSocketGetIpMulticastInterfaceOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketGetIpMulticastLoopbackOrdinal = 2860187602730912936
+pkg syscall/zx/posix/socket, const DatagramSocketGetIpMulticastLoopbackOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketGetIpMulticastTtlOrdinal = 1714697993812638784
+pkg syscall/zx/posix/socket, const DatagramSocketGetIpMulticastTtlOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketGetIpPacketInfoOrdinal = 1688568992388459285
+pkg syscall/zx/posix/socket, const DatagramSocketGetIpPacketInfoOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketGetIpReceiveTypeOfServiceOrdinal = 2795651684914668640
+pkg syscall/zx/posix/socket, const DatagramSocketGetIpReceiveTypeOfServiceOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketGetIpTtlOrdinal = 8691206072052717484
+pkg syscall/zx/posix/socket, const DatagramSocketGetIpTtlOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketGetIpTypeOfServiceOrdinal = 2828496684558442161
+pkg syscall/zx/posix/socket, const DatagramSocketGetIpTypeOfServiceOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketGetIpv6MulticastHopsOrdinal = 5882765601580656453
+pkg syscall/zx/posix/socket, const DatagramSocketGetIpv6MulticastHopsOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketGetIpv6MulticastInterfaceOrdinal = 8903397652801991356
+pkg syscall/zx/posix/socket, const DatagramSocketGetIpv6MulticastInterfaceOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketGetIpv6MulticastLoopbackOrdinal = 8707239624767523125
+pkg syscall/zx/posix/socket, const DatagramSocketGetIpv6MulticastLoopbackOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketGetIpv6OnlyOrdinal = 2726495669902548094
+pkg syscall/zx/posix/socket, const DatagramSocketGetIpv6OnlyOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketGetIpv6ReceiveTrafficClassOrdinal = 2054824156998747542
+pkg syscall/zx/posix/socket, const DatagramSocketGetIpv6ReceiveTrafficClassOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketGetIpv6TrafficClassOrdinal = 7828867033215089850
+pkg syscall/zx/posix/socket, const DatagramSocketGetIpv6TrafficClassOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketGetKeepAliveOrdinal = 3301874315258153426
+pkg syscall/zx/posix/socket, const DatagramSocketGetKeepAliveOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketGetLingerOrdinal = 5254329658518474309
+pkg syscall/zx/posix/socket, const DatagramSocketGetLingerOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketGetNoCheckOrdinal = 3230247044467750548
+pkg syscall/zx/posix/socket, const DatagramSocketGetNoCheckOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketGetOutOfBandInlineOrdinal = 3786430745745692485
+pkg syscall/zx/posix/socket, const DatagramSocketGetOutOfBandInlineOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketGetPeerNameOrdinal = 4614448585615564437
+pkg syscall/zx/posix/socket, const DatagramSocketGetPeerNameOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketGetReceiveBufferOrdinal = 1495657654187499100
+pkg syscall/zx/posix/socket, const DatagramSocketGetReceiveBufferOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketGetReuseAddressOrdinal = 7473477752945623205
+pkg syscall/zx/posix/socket, const DatagramSocketGetReuseAddressOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketGetReusePortOrdinal = 8795860040453978152
+pkg syscall/zx/posix/socket, const DatagramSocketGetReusePortOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketGetSendBufferOrdinal = 8693407268113367307
+pkg syscall/zx/posix/socket, const DatagramSocketGetSendBufferOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketGetSockNameOrdinal = 4730495873806049181
+pkg syscall/zx/posix/socket, const DatagramSocketGetSockNameOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketGetTimestampOrdinal = 5328602765801471271
+pkg syscall/zx/posix/socket, const DatagramSocketGetTimestampOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketNodeGetFlagsOrdinal = 6595803110182632097
+pkg syscall/zx/posix/socket, const DatagramSocketNodeGetFlagsOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketNodeSetFlagsOrdinal = 5950864159036794675
+pkg syscall/zx/posix/socket, const DatagramSocketNodeSetFlagsOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketOnOpenOrdinal = 9207534335756671346
+pkg syscall/zx/posix/socket, const DatagramSocketOnOpenOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketProtocolIcmpEcho = 2
+pkg syscall/zx/posix/socket, const DatagramSocketProtocolIcmpEcho DatagramSocketProtocol
+pkg syscall/zx/posix/socket, const DatagramSocketProtocolUdp = 1
+pkg syscall/zx/posix/socket, const DatagramSocketProtocolUdp DatagramSocketProtocol
+pkg syscall/zx/posix/socket, const DatagramSocketRecvMsgOrdinal = 8165942820816825210
+pkg syscall/zx/posix/socket, const DatagramSocketRecvMsgOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketRecvMsgResultErr = 2
+pkg syscall/zx/posix/socket, const DatagramSocketRecvMsgResultErr ideal-int
+pkg syscall/zx/posix/socket, const DatagramSocketRecvMsgResultResponse = 1
+pkg syscall/zx/posix/socket, const DatagramSocketRecvMsgResultResponse ideal-int
+pkg syscall/zx/posix/socket, const DatagramSocketSendMsgOrdinal = 3862789327346463099
+pkg syscall/zx/posix/socket, const DatagramSocketSendMsgOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketSendMsgResultErr = 2
+pkg syscall/zx/posix/socket, const DatagramSocketSendMsgResultErr ideal-int
+pkg syscall/zx/posix/socket, const DatagramSocketSendMsgResultResponse = 1
+pkg syscall/zx/posix/socket, const DatagramSocketSendMsgResultResponse ideal-int
+pkg syscall/zx/posix/socket, const DatagramSocketSetAttrOrdinal = 4721673413776871238
+pkg syscall/zx/posix/socket, const DatagramSocketSetAttrOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketSetBindToDeviceOrdinal = 2384854481495568324
+pkg syscall/zx/posix/socket, const DatagramSocketSetBindToDeviceOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketSetBroadcastOrdinal = 6927627499941452103
+pkg syscall/zx/posix/socket, const DatagramSocketSetBroadcastOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketSetIpMulticastInterfaceOrdinal = 7306806407978532088
+pkg syscall/zx/posix/socket, const DatagramSocketSetIpMulticastInterfaceOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketSetIpMulticastLoopbackOrdinal = 190676425902138217
+pkg syscall/zx/posix/socket, const DatagramSocketSetIpMulticastLoopbackOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketSetIpMulticastTtlOrdinal = 9014596182554050771
+pkg syscall/zx/posix/socket, const DatagramSocketSetIpMulticastTtlOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketSetIpPacketInfoOrdinal = 4468137122591751171
+pkg syscall/zx/posix/socket, const DatagramSocketSetIpPacketInfoOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketSetIpReceiveTypeOfServiceOrdinal = 1663095333240167909
+pkg syscall/zx/posix/socket, const DatagramSocketSetIpReceiveTypeOfServiceOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketSetIpTtlOrdinal = 7438081200508866958
+pkg syscall/zx/posix/socket, const DatagramSocketSetIpTtlOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketSetIpTypeOfServiceOrdinal = 6167760755404079946
+pkg syscall/zx/posix/socket, const DatagramSocketSetIpTypeOfServiceOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketSetIpv6MulticastHopsOrdinal = 3107879365955438941
+pkg syscall/zx/posix/socket, const DatagramSocketSetIpv6MulticastHopsOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketSetIpv6MulticastInterfaceOrdinal = 6713273364174422580
+pkg syscall/zx/posix/socket, const DatagramSocketSetIpv6MulticastInterfaceOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketSetIpv6MulticastLoopbackOrdinal = 682021103916377015
+pkg syscall/zx/posix/socket, const DatagramSocketSetIpv6MulticastLoopbackOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketSetIpv6OnlyOrdinal = 2127896243535920306
+pkg syscall/zx/posix/socket, const DatagramSocketSetIpv6OnlyOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketSetIpv6ReceiveTrafficClassOrdinal = 6032918535733452772
+pkg syscall/zx/posix/socket, const DatagramSocketSetIpv6ReceiveTrafficClassOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketSetIpv6TrafficClassOrdinal = 3664255147581298562
+pkg syscall/zx/posix/socket, const DatagramSocketSetIpv6TrafficClassOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketSetKeepAliveOrdinal = 6281950768033485511
+pkg syscall/zx/posix/socket, const DatagramSocketSetKeepAliveOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketSetLingerOrdinal = 4987845787467553166
+pkg syscall/zx/posix/socket, const DatagramSocketSetLingerOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketSetNoCheckOrdinal = 7763925129696671938
+pkg syscall/zx/posix/socket, const DatagramSocketSetNoCheckOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketSetOutOfBandInlineOrdinal = 282799447597835321
+pkg syscall/zx/posix/socket, const DatagramSocketSetOutOfBandInlineOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketSetReceiveBufferOrdinal = 7713807381122805761
+pkg syscall/zx/posix/socket, const DatagramSocketSetReceiveBufferOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketSetReuseAddressOrdinal = 2294389296622512246
+pkg syscall/zx/posix/socket, const DatagramSocketSetReuseAddressOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketSetReusePortOrdinal = 2656347923086679243
+pkg syscall/zx/posix/socket, const DatagramSocketSetReusePortOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketSetSendBufferOrdinal = 8461890084235016816
+pkg syscall/zx/posix/socket, const DatagramSocketSetSendBufferOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketSetTimestampOrdinal = 2908592082776217657
+pkg syscall/zx/posix/socket, const DatagramSocketSetTimestampOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketShutdown2Ordinal = 6328478384407213627
+pkg syscall/zx/posix/socket, const DatagramSocketShutdown2Ordinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketShutdownOrdinal = 4350574647411923264
+pkg syscall/zx/posix/socket, const DatagramSocketShutdownOrdinal uint64
+pkg syscall/zx/posix/socket, const DatagramSocketShutdownResultErr = 2
+pkg syscall/zx/posix/socket, const DatagramSocketShutdownResultErr ideal-int
+pkg syscall/zx/posix/socket, const DatagramSocketShutdownResultResponse = 1
+pkg syscall/zx/posix/socket, const DatagramSocketShutdownResultResponse ideal-int
+pkg syscall/zx/posix/socket, const DatagramSocketSyncOrdinal = 1773723578397144345
+pkg syscall/zx/posix/socket, const DatagramSocketSyncOrdinal uint64
+pkg syscall/zx/posix/socket, const DomainIpv4 = 0
+pkg syscall/zx/posix/socket, const DomainIpv4 Domain
+pkg syscall/zx/posix/socket, const DomainIpv6 = 1
+pkg syscall/zx/posix/socket, const DomainIpv6 Domain
+pkg syscall/zx/posix/socket, const InterfaceFlagsAllmulti = 512
+pkg syscall/zx/posix/socket, const InterfaceFlagsAllmulti InterfaceFlags
+pkg syscall/zx/posix/socket, const InterfaceFlagsAutomedia = 16384
+pkg syscall/zx/posix/socket, const InterfaceFlagsAutomedia InterfaceFlags
+pkg syscall/zx/posix/socket, const InterfaceFlagsBroadcast = 2
+pkg syscall/zx/posix/socket, const InterfaceFlagsBroadcast InterfaceFlags
+pkg syscall/zx/posix/socket, const InterfaceFlagsDebug = 4
+pkg syscall/zx/posix/socket, const InterfaceFlagsDebug InterfaceFlags
+pkg syscall/zx/posix/socket, const InterfaceFlagsDynamic = 32768
+pkg syscall/zx/posix/socket, const InterfaceFlagsDynamic InterfaceFlags
+pkg syscall/zx/posix/socket, const InterfaceFlagsFollower = 2048
+pkg syscall/zx/posix/socket, const InterfaceFlagsFollower InterfaceFlags
+pkg syscall/zx/posix/socket, const InterfaceFlagsLeader = 1024
+pkg syscall/zx/posix/socket, const InterfaceFlagsLeader InterfaceFlags
+pkg syscall/zx/posix/socket, const InterfaceFlagsLoopback = 8
+pkg syscall/zx/posix/socket, const InterfaceFlagsLoopback InterfaceFlags
+pkg syscall/zx/posix/socket, const InterfaceFlagsMulticast = 4096
+pkg syscall/zx/posix/socket, const InterfaceFlagsMulticast InterfaceFlags
+pkg syscall/zx/posix/socket, const InterfaceFlagsNoarp = 128
+pkg syscall/zx/posix/socket, const InterfaceFlagsNoarp InterfaceFlags
+pkg syscall/zx/posix/socket, const InterfaceFlagsNotrailers = 32
+pkg syscall/zx/posix/socket, const InterfaceFlagsNotrailers InterfaceFlags
+pkg syscall/zx/posix/socket, const InterfaceFlagsPointtopoint = 16
+pkg syscall/zx/posix/socket, const InterfaceFlagsPointtopoint InterfaceFlags
+pkg syscall/zx/posix/socket, const InterfaceFlagsPortsel = 8192
+pkg syscall/zx/posix/socket, const InterfaceFlagsPortsel InterfaceFlags
+pkg syscall/zx/posix/socket, const InterfaceFlagsPromisc = 256
+pkg syscall/zx/posix/socket, const InterfaceFlagsPromisc InterfaceFlags
+pkg syscall/zx/posix/socket, const InterfaceFlagsRunning = 64
+pkg syscall/zx/posix/socket, const InterfaceFlagsRunning InterfaceFlags
+pkg syscall/zx/posix/socket, const InterfaceFlagsUp = 1
+pkg syscall/zx/posix/socket, const InterfaceFlagsUp InterfaceFlags
+pkg syscall/zx/posix/socket, const InterfaceFlags_Mask = 65535
+pkg syscall/zx/posix/socket, const InterfaceFlags_Mask InterfaceFlags
+pkg syscall/zx/posix/socket, const InterfaceNameLength = 15
+pkg syscall/zx/posix/socket, const InterfaceNameLength uint8
+pkg syscall/zx/posix/socket, const OptionalUint32Unset = 2
+pkg syscall/zx/posix/socket, const OptionalUint32Unset ideal-int
+pkg syscall/zx/posix/socket, const OptionalUint32Value = 1
+pkg syscall/zx/posix/socket, const OptionalUint32Value ideal-int
+pkg syscall/zx/posix/socket, const OptionalUint8Unset = 2
+pkg syscall/zx/posix/socket, const OptionalUint8Unset ideal-int
+pkg syscall/zx/posix/socket, const OptionalUint8Value = 1
+pkg syscall/zx/posix/socket, const OptionalUint8Value ideal-int
+pkg syscall/zx/posix/socket, const ProviderDatagramSocketOrdinal = 4073343718529375409
+pkg syscall/zx/posix/socket, const ProviderDatagramSocketOrdinal uint64
+pkg syscall/zx/posix/socket, const ProviderDatagramSocketResultErr = 2
+pkg syscall/zx/posix/socket, const ProviderDatagramSocketResultErr ideal-int
+pkg syscall/zx/posix/socket, const ProviderDatagramSocketResultResponse = 1
+pkg syscall/zx/posix/socket, const ProviderDatagramSocketResultResponse ideal-int
+pkg syscall/zx/posix/socket, const ProviderGetInterfaceAddressesOrdinal = 209340051571066992
+pkg syscall/zx/posix/socket, const ProviderGetInterfaceAddressesOrdinal uint64
+pkg syscall/zx/posix/socket, const ProviderInterfaceIndexToNameOrdinal = 5573668875546404655
+pkg syscall/zx/posix/socket, const ProviderInterfaceIndexToNameOrdinal uint64
+pkg syscall/zx/posix/socket, const ProviderInterfaceIndexToNameResultErr = 2
+pkg syscall/zx/posix/socket, const ProviderInterfaceIndexToNameResultErr ideal-int
+pkg syscall/zx/posix/socket, const ProviderInterfaceIndexToNameResultResponse = 1
+pkg syscall/zx/posix/socket, const ProviderInterfaceIndexToNameResultResponse ideal-int
+pkg syscall/zx/posix/socket, const ProviderInterfaceNameToFlagsOrdinal = 2724941441366694411
+pkg syscall/zx/posix/socket, const ProviderInterfaceNameToFlagsOrdinal uint64
+pkg syscall/zx/posix/socket, const ProviderInterfaceNameToFlagsResultErr = 2
+pkg syscall/zx/posix/socket, const ProviderInterfaceNameToFlagsResultErr ideal-int
+pkg syscall/zx/posix/socket, const ProviderInterfaceNameToFlagsResultResponse = 1
+pkg syscall/zx/posix/socket, const ProviderInterfaceNameToFlagsResultResponse ideal-int
+pkg syscall/zx/posix/socket, const ProviderInterfaceNameToIndexOrdinal = 7569663474231824632
+pkg syscall/zx/posix/socket, const ProviderInterfaceNameToIndexOrdinal uint64
+pkg syscall/zx/posix/socket, const ProviderInterfaceNameToIndexResultErr = 2
+pkg syscall/zx/posix/socket, const ProviderInterfaceNameToIndexResultErr ideal-int
+pkg syscall/zx/posix/socket, const ProviderInterfaceNameToIndexResultResponse = 1
+pkg syscall/zx/posix/socket, const ProviderInterfaceNameToIndexResultResponse ideal-int
+pkg syscall/zx/posix/socket, const ProviderName = "fuchsia.posix.socket.Provider"
+pkg syscall/zx/posix/socket, const ProviderName ideal-string
+pkg syscall/zx/posix/socket, const ProviderStreamSocketOrdinal = 2865230672234370373
+pkg syscall/zx/posix/socket, const ProviderStreamSocketOrdinal uint64
+pkg syscall/zx/posix/socket, const ProviderStreamSocketResultErr = 2
+pkg syscall/zx/posix/socket, const ProviderStreamSocketResultErr ideal-int
+pkg syscall/zx/posix/socket, const ProviderStreamSocketResultResponse = 1
+pkg syscall/zx/posix/socket, const ProviderStreamSocketResultResponse ideal-int
+pkg syscall/zx/posix/socket, const RecvMsgFlagsPeek = 2
+pkg syscall/zx/posix/socket, const RecvMsgFlagsPeek RecvMsgFlags
+pkg syscall/zx/posix/socket, const RecvMsgFlags_Mask = 2
+pkg syscall/zx/posix/socket, const RecvMsgFlags_Mask RecvMsgFlags
+pkg syscall/zx/posix/socket, const SendMsgFlagsReserved = 32768
+pkg syscall/zx/posix/socket, const SendMsgFlagsReserved SendMsgFlags
+pkg syscall/zx/posix/socket, const SendMsgFlags_Mask = 32768
+pkg syscall/zx/posix/socket, const SendMsgFlags_Mask SendMsgFlags
+pkg syscall/zx/posix/socket, const ShutdownModeRead = 1
+pkg syscall/zx/posix/socket, const ShutdownModeRead ShutdownMode
+pkg syscall/zx/posix/socket, const ShutdownModeWrite = 2
+pkg syscall/zx/posix/socket, const ShutdownModeWrite ShutdownMode
+pkg syscall/zx/posix/socket, const ShutdownMode_Mask = 3
+pkg syscall/zx/posix/socket, const ShutdownMode_Mask ShutdownMode
+pkg syscall/zx/posix/socket, const StreamSocketAcceptOrdinal = 6536884020639482211
+pkg syscall/zx/posix/socket, const StreamSocketAcceptOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketAcceptResultErr = 2
+pkg syscall/zx/posix/socket, const StreamSocketAcceptResultErr ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketAcceptResultResponse = 1
+pkg syscall/zx/posix/socket, const StreamSocketAcceptResultResponse ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketAddIpMembershipOrdinal = 4153706055039272864
+pkg syscall/zx/posix/socket, const StreamSocketAddIpMembershipOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketAddIpv6MembershipOrdinal = 2528022147636499649
+pkg syscall/zx/posix/socket, const StreamSocketAddIpv6MembershipOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketBindOrdinal = 1118115255807776188
+pkg syscall/zx/posix/socket, const StreamSocketBindOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketCloneOrdinal = 6512600400724287855
+pkg syscall/zx/posix/socket, const StreamSocketCloneOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketCloseOrdinal = 5983530995951066180
+pkg syscall/zx/posix/socket, const StreamSocketCloseOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketConnectOrdinal = 1705719532842400689
+pkg syscall/zx/posix/socket, const StreamSocketConnectOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketDescribeOrdinal = 1152055232528178848
+pkg syscall/zx/posix/socket, const StreamSocketDescribeOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketDisconnectOrdinal = 2371969537656451236
+pkg syscall/zx/posix/socket, const StreamSocketDisconnectOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketDropIpMembershipOrdinal = 7860726367297036884
+pkg syscall/zx/posix/socket, const StreamSocketDropIpMembershipOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketDropIpv6MembershipOrdinal = 7105575044582229184
+pkg syscall/zx/posix/socket, const StreamSocketDropIpv6MembershipOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketGetAcceptConnOrdinal = 7480036662830729574
+pkg syscall/zx/posix/socket, const StreamSocketGetAcceptConnOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketGetAttrOrdinal = 8689798978500614909
+pkg syscall/zx/posix/socket, const StreamSocketGetAttrOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketGetBindToDeviceOrdinal = 1923595528092321480
+pkg syscall/zx/posix/socket, const StreamSocketGetBindToDeviceOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketGetBroadcastOrdinal = 7528171145484924941
+pkg syscall/zx/posix/socket, const StreamSocketGetBroadcastOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketGetErrorOrdinal = 6533942076392828603
+pkg syscall/zx/posix/socket, const StreamSocketGetErrorOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketGetInfoOrdinal = 611638895911602063
+pkg syscall/zx/posix/socket, const StreamSocketGetInfoOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketGetInfoResultErr = 2
+pkg syscall/zx/posix/socket, const StreamSocketGetInfoResultErr ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketGetInfoResultResponse = 1
+pkg syscall/zx/posix/socket, const StreamSocketGetInfoResultResponse ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketGetIpMulticastInterfaceOrdinal = 4918308280741130276
+pkg syscall/zx/posix/socket, const StreamSocketGetIpMulticastInterfaceOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketGetIpMulticastLoopbackOrdinal = 2860187602730912936
+pkg syscall/zx/posix/socket, const StreamSocketGetIpMulticastLoopbackOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketGetIpMulticastTtlOrdinal = 1714697993812638784
+pkg syscall/zx/posix/socket, const StreamSocketGetIpMulticastTtlOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketGetIpPacketInfoOrdinal = 1688568992388459285
+pkg syscall/zx/posix/socket, const StreamSocketGetIpPacketInfoOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketGetIpReceiveTypeOfServiceOrdinal = 2795651684914668640
+pkg syscall/zx/posix/socket, const StreamSocketGetIpReceiveTypeOfServiceOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketGetIpTtlOrdinal = 8691206072052717484
+pkg syscall/zx/posix/socket, const StreamSocketGetIpTtlOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketGetIpTypeOfServiceOrdinal = 2828496684558442161
+pkg syscall/zx/posix/socket, const StreamSocketGetIpTypeOfServiceOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketGetIpv6MulticastHopsOrdinal = 5882765601580656453
+pkg syscall/zx/posix/socket, const StreamSocketGetIpv6MulticastHopsOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketGetIpv6MulticastInterfaceOrdinal = 8903397652801991356
+pkg syscall/zx/posix/socket, const StreamSocketGetIpv6MulticastInterfaceOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketGetIpv6MulticastLoopbackOrdinal = 8707239624767523125
+pkg syscall/zx/posix/socket, const StreamSocketGetIpv6MulticastLoopbackOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketGetIpv6OnlyOrdinal = 2726495669902548094
+pkg syscall/zx/posix/socket, const StreamSocketGetIpv6OnlyOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketGetIpv6ReceiveTrafficClassOrdinal = 2054824156998747542
+pkg syscall/zx/posix/socket, const StreamSocketGetIpv6ReceiveTrafficClassOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketGetIpv6TrafficClassOrdinal = 7828867033215089850
+pkg syscall/zx/posix/socket, const StreamSocketGetIpv6TrafficClassOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketGetKeepAliveOrdinal = 3301874315258153426
+pkg syscall/zx/posix/socket, const StreamSocketGetKeepAliveOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketGetLingerOrdinal = 5254329658518474309
+pkg syscall/zx/posix/socket, const StreamSocketGetLingerOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketGetNoCheckOrdinal = 3230247044467750548
+pkg syscall/zx/posix/socket, const StreamSocketGetNoCheckOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketGetOutOfBandInlineOrdinal = 3786430745745692485
+pkg syscall/zx/posix/socket, const StreamSocketGetOutOfBandInlineOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketGetPeerNameOrdinal = 4614448585615564437
+pkg syscall/zx/posix/socket, const StreamSocketGetPeerNameOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketGetReceiveBufferOrdinal = 1495657654187499100
+pkg syscall/zx/posix/socket, const StreamSocketGetReceiveBufferOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketGetReuseAddressOrdinal = 7473477752945623205
+pkg syscall/zx/posix/socket, const StreamSocketGetReuseAddressOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketGetReusePortOrdinal = 8795860040453978152
+pkg syscall/zx/posix/socket, const StreamSocketGetReusePortOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketGetSendBufferOrdinal = 8693407268113367307
+pkg syscall/zx/posix/socket, const StreamSocketGetSendBufferOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketGetSockNameOrdinal = 4730495873806049181
+pkg syscall/zx/posix/socket, const StreamSocketGetSockNameOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpCongestionOrdinal = 1288420472382761543
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpCongestionOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpCongestionResultErr = 2
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpCongestionResultErr ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpCongestionResultResponse = 1
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpCongestionResultResponse ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpCorkOrdinal = 4853668955013205810
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpCorkOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpCorkResultErr = 2
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpCorkResultErr ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpCorkResultResponse = 1
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpCorkResultResponse ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpDeferAcceptOrdinal = 7230695848691939270
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpDeferAcceptOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpDeferAcceptResultErr = 2
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpDeferAcceptResultErr ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpDeferAcceptResultResponse = 1
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpDeferAcceptResultResponse ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpInfoOrdinal = 2304455690200279762
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpInfoOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpInfoResultErr = 2
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpInfoResultErr ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpInfoResultResponse = 1
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpInfoResultResponse ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpKeepAliveCountOrdinal = 3393298365054614025
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpKeepAliveCountOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpKeepAliveCountResultErr = 2
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpKeepAliveCountResultErr ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpKeepAliveCountResultResponse = 1
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpKeepAliveCountResultResponse ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpKeepAliveIdleOrdinal = 242848606632517036
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpKeepAliveIdleOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpKeepAliveIdleResultErr = 2
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpKeepAliveIdleResultErr ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpKeepAliveIdleResultResponse = 1
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpKeepAliveIdleResultResponse ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpKeepAliveIntervalOrdinal = 172521021101224580
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpKeepAliveIntervalOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpKeepAliveIntervalResultErr = 2
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpKeepAliveIntervalResultErr ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpKeepAliveIntervalResultResponse = 1
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpKeepAliveIntervalResultResponse ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpLingerOrdinal = 781498587187982571
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpLingerOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpLingerResultErr = 2
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpLingerResultErr ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpLingerResultResponse = 1
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpLingerResultResponse ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpMaxSegmentOrdinal = 7166358205780039724
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpMaxSegmentOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpMaxSegmentResultErr = 2
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpMaxSegmentResultErr ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpMaxSegmentResultResponse = 1
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpMaxSegmentResultResponse ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpNoDelayOrdinal = 775210274294269849
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpNoDelayOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpNoDelayResultErr = 2
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpNoDelayResultErr ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpNoDelayResultResponse = 1
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpNoDelayResultResponse ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpQuickAckOrdinal = 8311016296560123698
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpQuickAckOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpQuickAckResultErr = 2
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpQuickAckResultErr ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpQuickAckResultResponse = 1
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpQuickAckResultResponse ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpSynCountOrdinal = 9026758168845172454
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpSynCountOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpSynCountResultErr = 2
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpSynCountResultErr ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpSynCountResultResponse = 1
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpSynCountResultResponse ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpUserTimeoutOrdinal = 2646943975547126656
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpUserTimeoutOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpUserTimeoutResultErr = 2
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpUserTimeoutResultErr ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpUserTimeoutResultResponse = 1
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpUserTimeoutResultResponse ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpWindowClampOrdinal = 3312034922227198542
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpWindowClampOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpWindowClampResultErr = 2
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpWindowClampResultErr ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpWindowClampResultResponse = 1
+pkg syscall/zx/posix/socket, const StreamSocketGetTcpWindowClampResultResponse ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketGetTimestampOrdinal = 5328602765801471271
+pkg syscall/zx/posix/socket, const StreamSocketGetTimestampOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketListenOrdinal = 4398439925072068872
+pkg syscall/zx/posix/socket, const StreamSocketListenOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketListenResultErr = 2
+pkg syscall/zx/posix/socket, const StreamSocketListenResultErr ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketListenResultResponse = 1
+pkg syscall/zx/posix/socket, const StreamSocketListenResultResponse ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketNodeGetFlagsOrdinal = 6595803110182632097
+pkg syscall/zx/posix/socket, const StreamSocketNodeGetFlagsOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketNodeSetFlagsOrdinal = 5950864159036794675
+pkg syscall/zx/posix/socket, const StreamSocketNodeSetFlagsOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketOnOpenOrdinal = 9207534335756671346
+pkg syscall/zx/posix/socket, const StreamSocketOnOpenOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketProtocolTcp = 0
+pkg syscall/zx/posix/socket, const StreamSocketProtocolTcp StreamSocketProtocol
+pkg syscall/zx/posix/socket, const StreamSocketSetAttrOrdinal = 4721673413776871238
+pkg syscall/zx/posix/socket, const StreamSocketSetAttrOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketSetBindToDeviceOrdinal = 2384854481495568324
+pkg syscall/zx/posix/socket, const StreamSocketSetBindToDeviceOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketSetBroadcastOrdinal = 6927627499941452103
+pkg syscall/zx/posix/socket, const StreamSocketSetBroadcastOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketSetIpMulticastInterfaceOrdinal = 7306806407978532088
+pkg syscall/zx/posix/socket, const StreamSocketSetIpMulticastInterfaceOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketSetIpMulticastLoopbackOrdinal = 190676425902138217
+pkg syscall/zx/posix/socket, const StreamSocketSetIpMulticastLoopbackOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketSetIpMulticastTtlOrdinal = 9014596182554050771
+pkg syscall/zx/posix/socket, const StreamSocketSetIpMulticastTtlOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketSetIpPacketInfoOrdinal = 4468137122591751171
+pkg syscall/zx/posix/socket, const StreamSocketSetIpPacketInfoOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketSetIpReceiveTypeOfServiceOrdinal = 1663095333240167909
+pkg syscall/zx/posix/socket, const StreamSocketSetIpReceiveTypeOfServiceOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketSetIpTtlOrdinal = 7438081200508866958
+pkg syscall/zx/posix/socket, const StreamSocketSetIpTtlOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketSetIpTypeOfServiceOrdinal = 6167760755404079946
+pkg syscall/zx/posix/socket, const StreamSocketSetIpTypeOfServiceOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketSetIpv6MulticastHopsOrdinal = 3107879365955438941
+pkg syscall/zx/posix/socket, const StreamSocketSetIpv6MulticastHopsOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketSetIpv6MulticastInterfaceOrdinal = 6713273364174422580
+pkg syscall/zx/posix/socket, const StreamSocketSetIpv6MulticastInterfaceOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketSetIpv6MulticastLoopbackOrdinal = 682021103916377015
+pkg syscall/zx/posix/socket, const StreamSocketSetIpv6MulticastLoopbackOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketSetIpv6OnlyOrdinal = 2127896243535920306
+pkg syscall/zx/posix/socket, const StreamSocketSetIpv6OnlyOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketSetIpv6ReceiveTrafficClassOrdinal = 6032918535733452772
+pkg syscall/zx/posix/socket, const StreamSocketSetIpv6ReceiveTrafficClassOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketSetIpv6TrafficClassOrdinal = 3664255147581298562
+pkg syscall/zx/posix/socket, const StreamSocketSetIpv6TrafficClassOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketSetKeepAliveOrdinal = 6281950768033485511
+pkg syscall/zx/posix/socket, const StreamSocketSetKeepAliveOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketSetLingerOrdinal = 4987845787467553166
+pkg syscall/zx/posix/socket, const StreamSocketSetLingerOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketSetNoCheckOrdinal = 7763925129696671938
+pkg syscall/zx/posix/socket, const StreamSocketSetNoCheckOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketSetOutOfBandInlineOrdinal = 282799447597835321
+pkg syscall/zx/posix/socket, const StreamSocketSetOutOfBandInlineOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketSetReceiveBufferOrdinal = 7713807381122805761
+pkg syscall/zx/posix/socket, const StreamSocketSetReceiveBufferOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketSetReuseAddressOrdinal = 2294389296622512246
+pkg syscall/zx/posix/socket, const StreamSocketSetReuseAddressOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketSetReusePortOrdinal = 2656347923086679243
+pkg syscall/zx/posix/socket, const StreamSocketSetReusePortOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketSetSendBufferOrdinal = 8461890084235016816
+pkg syscall/zx/posix/socket, const StreamSocketSetSendBufferOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpCongestionOrdinal = 8729320689261576606
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpCongestionOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpCongestionResultErr = 2
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpCongestionResultErr ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpCongestionResultResponse = 1
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpCongestionResultResponse ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpCorkOrdinal = 7125372533843510176
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpCorkOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpCorkResultErr = 2
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpCorkResultErr ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpCorkResultResponse = 1
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpCorkResultResponse ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpDeferAcceptOrdinal = 1515794530221671428
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpDeferAcceptOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpDeferAcceptResultErr = 2
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpDeferAcceptResultErr ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpDeferAcceptResultResponse = 1
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpDeferAcceptResultResponse ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpKeepAliveCountOrdinal = 3076777411366388769
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpKeepAliveCountOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpKeepAliveCountResultErr = 2
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpKeepAliveCountResultErr ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpKeepAliveCountResultResponse = 1
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpKeepAliveCountResultResponse ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpKeepAliveIdleOrdinal = 114507899072822338
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpKeepAliveIdleOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpKeepAliveIdleResultErr = 2
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpKeepAliveIdleResultErr ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpKeepAliveIdleResultResponse = 1
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpKeepAliveIdleResultResponse ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpKeepAliveIntervalOrdinal = 5215163707819181042
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpKeepAliveIntervalOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpKeepAliveIntervalResultErr = 2
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpKeepAliveIntervalResultErr ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpKeepAliveIntervalResultResponse = 1
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpKeepAliveIntervalResultResponse ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpLingerOrdinal = 962857624226576100
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpLingerOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpLingerResultErr = 2
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpLingerResultErr ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpLingerResultResponse = 1
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpLingerResultResponse ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpMaxSegmentOrdinal = 809857128920935704
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpMaxSegmentOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpMaxSegmentResultErr = 2
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpMaxSegmentResultErr ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpMaxSegmentResultResponse = 1
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpMaxSegmentResultResponse ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpNoDelayOrdinal = 6510436466512050906
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpNoDelayOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpNoDelayResultErr = 2
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpNoDelayResultErr ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpNoDelayResultResponse = 1
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpNoDelayResultResponse ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpQuickAckOrdinal = 8045700244452570199
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpQuickAckOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpQuickAckResultErr = 2
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpQuickAckResultErr ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpQuickAckResultResponse = 1
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpQuickAckResultResponse ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpSynCountOrdinal = 5606254438231318195
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpSynCountOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpSynCountResultErr = 2
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpSynCountResultErr ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpSynCountResultResponse = 1
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpSynCountResultResponse ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpUserTimeoutOrdinal = 7729758615618460256
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpUserTimeoutOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpUserTimeoutResultErr = 2
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpUserTimeoutResultErr ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpUserTimeoutResultResponse = 1
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpUserTimeoutResultResponse ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpWindowClampOrdinal = 5343184541010358726
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpWindowClampOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpWindowClampResultErr = 2
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpWindowClampResultErr ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpWindowClampResultResponse = 1
+pkg syscall/zx/posix/socket, const StreamSocketSetTcpWindowClampResultResponse ideal-int
+pkg syscall/zx/posix/socket, const StreamSocketSetTimestampOrdinal = 2908592082776217657
+pkg syscall/zx/posix/socket, const StreamSocketSetTimestampOrdinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketShutdown2Ordinal = 6328478384407213627
+pkg syscall/zx/posix/socket, const StreamSocketShutdown2Ordinal uint64
+pkg syscall/zx/posix/socket, const StreamSocketSyncOrdinal = 1773723578397144345
+pkg syscall/zx/posix/socket, const StreamSocketSyncOrdinal uint64
+pkg syscall/zx/posix/socket, const TcpCongestionControlCubic = 2
+pkg syscall/zx/posix/socket, const TcpCongestionControlCubic TcpCongestionControl
+pkg syscall/zx/posix/socket, const TcpCongestionControlReno = 1
+pkg syscall/zx/posix/socket, const TcpCongestionControlReno TcpCongestionControl
+pkg syscall/zx/posix/socket, const TcpCongestionControlStateCongestionWindowReduced = 2
+pkg syscall/zx/posix/socket, const TcpCongestionControlStateCongestionWindowReduced TcpCongestionControlState
+pkg syscall/zx/posix/socket, const TcpCongestionControlStateDisorder = 1
+pkg syscall/zx/posix/socket, const TcpCongestionControlStateDisorder TcpCongestionControlState
+pkg syscall/zx/posix/socket, const TcpCongestionControlStateLoss = 4
+pkg syscall/zx/posix/socket, const TcpCongestionControlStateLoss TcpCongestionControlState
+pkg syscall/zx/posix/socket, const TcpCongestionControlStateOpen = 0
+pkg syscall/zx/posix/socket, const TcpCongestionControlStateOpen TcpCongestionControlState
+pkg syscall/zx/posix/socket, const TcpCongestionControlStateRecovery = 3
+pkg syscall/zx/posix/socket, const TcpCongestionControlStateRecovery TcpCongestionControlState
+pkg syscall/zx/posix/socket, const TcpStateClose = 7
+pkg syscall/zx/posix/socket, const TcpStateClose TcpState
+pkg syscall/zx/posix/socket, const TcpStateCloseWait = 8
+pkg syscall/zx/posix/socket, const TcpStateCloseWait TcpState
+pkg syscall/zx/posix/socket, const TcpStateClosing = 11
+pkg syscall/zx/posix/socket, const TcpStateClosing TcpState
+pkg syscall/zx/posix/socket, const TcpStateEstablished = 1
+pkg syscall/zx/posix/socket, const TcpStateEstablished TcpState
+pkg syscall/zx/posix/socket, const TcpStateFinWait1 = 4
+pkg syscall/zx/posix/socket, const TcpStateFinWait1 TcpState
+pkg syscall/zx/posix/socket, const TcpStateFinWait2 = 5
+pkg syscall/zx/posix/socket, const TcpStateFinWait2 TcpState
+pkg syscall/zx/posix/socket, const TcpStateLastAck = 9
+pkg syscall/zx/posix/socket, const TcpStateLastAck TcpState
+pkg syscall/zx/posix/socket, const TcpStateListen = 10
+pkg syscall/zx/posix/socket, const TcpStateListen TcpState
+pkg syscall/zx/posix/socket, const TcpStateSynRecv = 3
+pkg syscall/zx/posix/socket, const TcpStateSynRecv TcpState
+pkg syscall/zx/posix/socket, const TcpStateSynSent = 2
+pkg syscall/zx/posix/socket, const TcpStateSynSent TcpState
+pkg syscall/zx/posix/socket, const TcpStateTimeWait = 6
+pkg syscall/zx/posix/socket, const TcpStateTimeWait TcpState
+pkg syscall/zx/posix/socket, func BaseSocketAddIpMembershipResultWithErr(posix.Errno) BaseSocketAddIpMembershipResult
+pkg syscall/zx/posix/socket, func BaseSocketAddIpMembershipResultWithResponse(BaseSocketAddIpMembershipResponse) BaseSocketAddIpMembershipResult
+pkg syscall/zx/posix/socket, func BaseSocketAddIpv6MembershipResultWithErr(posix.Errno) BaseSocketAddIpv6MembershipResult
+pkg syscall/zx/posix/socket, func BaseSocketAddIpv6MembershipResultWithResponse(BaseSocketAddIpv6MembershipResponse) BaseSocketAddIpv6MembershipResult
+pkg syscall/zx/posix/socket, func BaseSocketBindResultWithErr(posix.Errno) BaseSocketBindResult
+pkg syscall/zx/posix/socket, func BaseSocketBindResultWithResponse(BaseSocketBindResponse) BaseSocketBindResult
+pkg syscall/zx/posix/socket, func BaseSocketConnectResultWithErr(posix.Errno) BaseSocketConnectResult
+pkg syscall/zx/posix/socket, func BaseSocketConnectResultWithResponse(BaseSocketConnectResponse) BaseSocketConnectResult
+pkg syscall/zx/posix/socket, func BaseSocketDisconnectResultWithErr(posix.Errno) BaseSocketDisconnectResult
+pkg syscall/zx/posix/socket, func BaseSocketDisconnectResultWithResponse(BaseSocketDisconnectResponse) BaseSocketDisconnectResult
+pkg syscall/zx/posix/socket, func BaseSocketDropIpMembershipResultWithErr(posix.Errno) BaseSocketDropIpMembershipResult
+pkg syscall/zx/posix/socket, func BaseSocketDropIpMembershipResultWithResponse(BaseSocketDropIpMembershipResponse) BaseSocketDropIpMembershipResult
+pkg syscall/zx/posix/socket, func BaseSocketDropIpv6MembershipResultWithErr(posix.Errno) BaseSocketDropIpv6MembershipResult
+pkg syscall/zx/posix/socket, func BaseSocketDropIpv6MembershipResultWithResponse(BaseSocketDropIpv6MembershipResponse) BaseSocketDropIpv6MembershipResult
+pkg syscall/zx/posix/socket, func BaseSocketGetAcceptConnResultWithErr(posix.Errno) BaseSocketGetAcceptConnResult
+pkg syscall/zx/posix/socket, func BaseSocketGetAcceptConnResultWithResponse(BaseSocketGetAcceptConnResponse) BaseSocketGetAcceptConnResult
+pkg syscall/zx/posix/socket, func BaseSocketGetBindToDeviceResultWithErr(posix.Errno) BaseSocketGetBindToDeviceResult
+pkg syscall/zx/posix/socket, func BaseSocketGetBindToDeviceResultWithResponse(BaseSocketGetBindToDeviceResponse) BaseSocketGetBindToDeviceResult
+pkg syscall/zx/posix/socket, func BaseSocketGetBroadcastResultWithErr(posix.Errno) BaseSocketGetBroadcastResult
+pkg syscall/zx/posix/socket, func BaseSocketGetBroadcastResultWithResponse(BaseSocketGetBroadcastResponse) BaseSocketGetBroadcastResult
+pkg syscall/zx/posix/socket, func BaseSocketGetErrorResultWithErr(posix.Errno) BaseSocketGetErrorResult
+pkg syscall/zx/posix/socket, func BaseSocketGetErrorResultWithResponse(BaseSocketGetErrorResponse) BaseSocketGetErrorResult
+pkg syscall/zx/posix/socket, func BaseSocketGetIpMulticastInterfaceResultWithErr(posix.Errno) BaseSocketGetIpMulticastInterfaceResult
+pkg syscall/zx/posix/socket, func BaseSocketGetIpMulticastInterfaceResultWithResponse(BaseSocketGetIpMulticastInterfaceResponse) BaseSocketGetIpMulticastInterfaceResult
+pkg syscall/zx/posix/socket, func BaseSocketGetIpMulticastLoopbackResultWithErr(posix.Errno) BaseSocketGetIpMulticastLoopbackResult
+pkg syscall/zx/posix/socket, func BaseSocketGetIpMulticastLoopbackResultWithResponse(BaseSocketGetIpMulticastLoopbackResponse) BaseSocketGetIpMulticastLoopbackResult
+pkg syscall/zx/posix/socket, func BaseSocketGetIpMulticastTtlResultWithErr(posix.Errno) BaseSocketGetIpMulticastTtlResult
+pkg syscall/zx/posix/socket, func BaseSocketGetIpMulticastTtlResultWithResponse(BaseSocketGetIpMulticastTtlResponse) BaseSocketGetIpMulticastTtlResult
+pkg syscall/zx/posix/socket, func BaseSocketGetIpPacketInfoResultWithErr(posix.Errno) BaseSocketGetIpPacketInfoResult
+pkg syscall/zx/posix/socket, func BaseSocketGetIpPacketInfoResultWithResponse(BaseSocketGetIpPacketInfoResponse) BaseSocketGetIpPacketInfoResult
+pkg syscall/zx/posix/socket, func BaseSocketGetIpReceiveTypeOfServiceResultWithErr(posix.Errno) BaseSocketGetIpReceiveTypeOfServiceResult
+pkg syscall/zx/posix/socket, func BaseSocketGetIpReceiveTypeOfServiceResultWithResponse(BaseSocketGetIpReceiveTypeOfServiceResponse) BaseSocketGetIpReceiveTypeOfServiceResult
+pkg syscall/zx/posix/socket, func BaseSocketGetIpTtlResultWithErr(posix.Errno) BaseSocketGetIpTtlResult
+pkg syscall/zx/posix/socket, func BaseSocketGetIpTtlResultWithResponse(BaseSocketGetIpTtlResponse) BaseSocketGetIpTtlResult
+pkg syscall/zx/posix/socket, func BaseSocketGetIpTypeOfServiceResultWithErr(posix.Errno) BaseSocketGetIpTypeOfServiceResult
+pkg syscall/zx/posix/socket, func BaseSocketGetIpTypeOfServiceResultWithResponse(BaseSocketGetIpTypeOfServiceResponse) BaseSocketGetIpTypeOfServiceResult
+pkg syscall/zx/posix/socket, func BaseSocketGetIpv6MulticastHopsResultWithErr(posix.Errno) BaseSocketGetIpv6MulticastHopsResult
+pkg syscall/zx/posix/socket, func BaseSocketGetIpv6MulticastHopsResultWithResponse(BaseSocketGetIpv6MulticastHopsResponse) BaseSocketGetIpv6MulticastHopsResult
+pkg syscall/zx/posix/socket, func BaseSocketGetIpv6MulticastInterfaceResultWithErr(posix.Errno) BaseSocketGetIpv6MulticastInterfaceResult
+pkg syscall/zx/posix/socket, func BaseSocketGetIpv6MulticastInterfaceResultWithResponse(BaseSocketGetIpv6MulticastInterfaceResponse) BaseSocketGetIpv6MulticastInterfaceResult
+pkg syscall/zx/posix/socket, func BaseSocketGetIpv6MulticastLoopbackResultWithErr(posix.Errno) BaseSocketGetIpv6MulticastLoopbackResult
+pkg syscall/zx/posix/socket, func BaseSocketGetIpv6MulticastLoopbackResultWithResponse(BaseSocketGetIpv6MulticastLoopbackResponse) BaseSocketGetIpv6MulticastLoopbackResult
+pkg syscall/zx/posix/socket, func BaseSocketGetIpv6OnlyResultWithErr(posix.Errno) BaseSocketGetIpv6OnlyResult
+pkg syscall/zx/posix/socket, func BaseSocketGetIpv6OnlyResultWithResponse(BaseSocketGetIpv6OnlyResponse) BaseSocketGetIpv6OnlyResult
+pkg syscall/zx/posix/socket, func BaseSocketGetIpv6ReceiveTrafficClassResultWithErr(posix.Errno) BaseSocketGetIpv6ReceiveTrafficClassResult
+pkg syscall/zx/posix/socket, func BaseSocketGetIpv6ReceiveTrafficClassResultWithResponse(BaseSocketGetIpv6ReceiveTrafficClassResponse) BaseSocketGetIpv6ReceiveTrafficClassResult
+pkg syscall/zx/posix/socket, func BaseSocketGetIpv6TrafficClassResultWithErr(posix.Errno) BaseSocketGetIpv6TrafficClassResult
+pkg syscall/zx/posix/socket, func BaseSocketGetIpv6TrafficClassResultWithResponse(BaseSocketGetIpv6TrafficClassResponse) BaseSocketGetIpv6TrafficClassResult
+pkg syscall/zx/posix/socket, func BaseSocketGetKeepAliveResultWithErr(posix.Errno) BaseSocketGetKeepAliveResult
+pkg syscall/zx/posix/socket, func BaseSocketGetKeepAliveResultWithResponse(BaseSocketGetKeepAliveResponse) BaseSocketGetKeepAliveResult
+pkg syscall/zx/posix/socket, func BaseSocketGetLingerResultWithErr(posix.Errno) BaseSocketGetLingerResult
+pkg syscall/zx/posix/socket, func BaseSocketGetLingerResultWithResponse(BaseSocketGetLingerResponse) BaseSocketGetLingerResult
+pkg syscall/zx/posix/socket, func BaseSocketGetNoCheckResultWithErr(posix.Errno) BaseSocketGetNoCheckResult
+pkg syscall/zx/posix/socket, func BaseSocketGetNoCheckResultWithResponse(BaseSocketGetNoCheckResponse) BaseSocketGetNoCheckResult
+pkg syscall/zx/posix/socket, func BaseSocketGetOutOfBandInlineResultWithErr(posix.Errno) BaseSocketGetOutOfBandInlineResult
+pkg syscall/zx/posix/socket, func BaseSocketGetOutOfBandInlineResultWithResponse(BaseSocketGetOutOfBandInlineResponse) BaseSocketGetOutOfBandInlineResult
+pkg syscall/zx/posix/socket, func BaseSocketGetPeerNameResultWithErr(posix.Errno) BaseSocketGetPeerNameResult
+pkg syscall/zx/posix/socket, func BaseSocketGetPeerNameResultWithResponse(BaseSocketGetPeerNameResponse) BaseSocketGetPeerNameResult
+pkg syscall/zx/posix/socket, func BaseSocketGetReceiveBufferResultWithErr(posix.Errno) BaseSocketGetReceiveBufferResult
+pkg syscall/zx/posix/socket, func BaseSocketGetReceiveBufferResultWithResponse(BaseSocketGetReceiveBufferResponse) BaseSocketGetReceiveBufferResult
+pkg syscall/zx/posix/socket, func BaseSocketGetReuseAddressResultWithErr(posix.Errno) BaseSocketGetReuseAddressResult
+pkg syscall/zx/posix/socket, func BaseSocketGetReuseAddressResultWithResponse(BaseSocketGetReuseAddressResponse) BaseSocketGetReuseAddressResult
+pkg syscall/zx/posix/socket, func BaseSocketGetReusePortResultWithErr(posix.Errno) BaseSocketGetReusePortResult
+pkg syscall/zx/posix/socket, func BaseSocketGetReusePortResultWithResponse(BaseSocketGetReusePortResponse) BaseSocketGetReusePortResult
+pkg syscall/zx/posix/socket, func BaseSocketGetSendBufferResultWithErr(posix.Errno) BaseSocketGetSendBufferResult
+pkg syscall/zx/posix/socket, func BaseSocketGetSendBufferResultWithResponse(BaseSocketGetSendBufferResponse) BaseSocketGetSendBufferResult
+pkg syscall/zx/posix/socket, func BaseSocketGetSockNameResultWithErr(posix.Errno) BaseSocketGetSockNameResult
+pkg syscall/zx/posix/socket, func BaseSocketGetSockNameResultWithResponse(BaseSocketGetSockNameResponse) BaseSocketGetSockNameResult
+pkg syscall/zx/posix/socket, func BaseSocketGetTimestampResultWithErr(posix.Errno) BaseSocketGetTimestampResult
+pkg syscall/zx/posix/socket, func BaseSocketGetTimestampResultWithResponse(BaseSocketGetTimestampResponse) BaseSocketGetTimestampResult
+pkg syscall/zx/posix/socket, func BaseSocketSetBindToDeviceResultWithErr(posix.Errno) BaseSocketSetBindToDeviceResult
+pkg syscall/zx/posix/socket, func BaseSocketSetBindToDeviceResultWithResponse(BaseSocketSetBindToDeviceResponse) BaseSocketSetBindToDeviceResult
+pkg syscall/zx/posix/socket, func BaseSocketSetBroadcastResultWithErr(posix.Errno) BaseSocketSetBroadcastResult
+pkg syscall/zx/posix/socket, func BaseSocketSetBroadcastResultWithResponse(BaseSocketSetBroadcastResponse) BaseSocketSetBroadcastResult
+pkg syscall/zx/posix/socket, func BaseSocketSetIpMulticastInterfaceResultWithErr(posix.Errno) BaseSocketSetIpMulticastInterfaceResult
+pkg syscall/zx/posix/socket, func BaseSocketSetIpMulticastInterfaceResultWithResponse(BaseSocketSetIpMulticastInterfaceResponse) BaseSocketSetIpMulticastInterfaceResult
+pkg syscall/zx/posix/socket, func BaseSocketSetIpMulticastLoopbackResultWithErr(posix.Errno) BaseSocketSetIpMulticastLoopbackResult
+pkg syscall/zx/posix/socket, func BaseSocketSetIpMulticastLoopbackResultWithResponse(BaseSocketSetIpMulticastLoopbackResponse) BaseSocketSetIpMulticastLoopbackResult
+pkg syscall/zx/posix/socket, func BaseSocketSetIpMulticastTtlResultWithErr(posix.Errno) BaseSocketSetIpMulticastTtlResult
+pkg syscall/zx/posix/socket, func BaseSocketSetIpMulticastTtlResultWithResponse(BaseSocketSetIpMulticastTtlResponse) BaseSocketSetIpMulticastTtlResult
+pkg syscall/zx/posix/socket, func BaseSocketSetIpPacketInfoResultWithErr(posix.Errno) BaseSocketSetIpPacketInfoResult
+pkg syscall/zx/posix/socket, func BaseSocketSetIpPacketInfoResultWithResponse(BaseSocketSetIpPacketInfoResponse) BaseSocketSetIpPacketInfoResult
+pkg syscall/zx/posix/socket, func BaseSocketSetIpReceiveTypeOfServiceResultWithErr(posix.Errno) BaseSocketSetIpReceiveTypeOfServiceResult
+pkg syscall/zx/posix/socket, func BaseSocketSetIpReceiveTypeOfServiceResultWithResponse(BaseSocketSetIpReceiveTypeOfServiceResponse) BaseSocketSetIpReceiveTypeOfServiceResult
+pkg syscall/zx/posix/socket, func BaseSocketSetIpTtlResultWithErr(posix.Errno) BaseSocketSetIpTtlResult
+pkg syscall/zx/posix/socket, func BaseSocketSetIpTtlResultWithResponse(BaseSocketSetIpTtlResponse) BaseSocketSetIpTtlResult
+pkg syscall/zx/posix/socket, func BaseSocketSetIpTypeOfServiceResultWithErr(posix.Errno) BaseSocketSetIpTypeOfServiceResult
+pkg syscall/zx/posix/socket, func BaseSocketSetIpTypeOfServiceResultWithResponse(BaseSocketSetIpTypeOfServiceResponse) BaseSocketSetIpTypeOfServiceResult
+pkg syscall/zx/posix/socket, func BaseSocketSetIpv6MulticastHopsResultWithErr(posix.Errno) BaseSocketSetIpv6MulticastHopsResult
+pkg syscall/zx/posix/socket, func BaseSocketSetIpv6MulticastHopsResultWithResponse(BaseSocketSetIpv6MulticastHopsResponse) BaseSocketSetIpv6MulticastHopsResult
+pkg syscall/zx/posix/socket, func BaseSocketSetIpv6MulticastInterfaceResultWithErr(posix.Errno) BaseSocketSetIpv6MulticastInterfaceResult
+pkg syscall/zx/posix/socket, func BaseSocketSetIpv6MulticastInterfaceResultWithResponse(BaseSocketSetIpv6MulticastInterfaceResponse) BaseSocketSetIpv6MulticastInterfaceResult
+pkg syscall/zx/posix/socket, func BaseSocketSetIpv6MulticastLoopbackResultWithErr(posix.Errno) BaseSocketSetIpv6MulticastLoopbackResult
+pkg syscall/zx/posix/socket, func BaseSocketSetIpv6MulticastLoopbackResultWithResponse(BaseSocketSetIpv6MulticastLoopbackResponse) BaseSocketSetIpv6MulticastLoopbackResult
+pkg syscall/zx/posix/socket, func BaseSocketSetIpv6OnlyResultWithErr(posix.Errno) BaseSocketSetIpv6OnlyResult
+pkg syscall/zx/posix/socket, func BaseSocketSetIpv6OnlyResultWithResponse(BaseSocketSetIpv6OnlyResponse) BaseSocketSetIpv6OnlyResult
+pkg syscall/zx/posix/socket, func BaseSocketSetIpv6ReceiveTrafficClassResultWithErr(posix.Errno) BaseSocketSetIpv6ReceiveTrafficClassResult
+pkg syscall/zx/posix/socket, func BaseSocketSetIpv6ReceiveTrafficClassResultWithResponse(BaseSocketSetIpv6ReceiveTrafficClassResponse) BaseSocketSetIpv6ReceiveTrafficClassResult
+pkg syscall/zx/posix/socket, func BaseSocketSetIpv6TrafficClassResultWithErr(posix.Errno) BaseSocketSetIpv6TrafficClassResult
+pkg syscall/zx/posix/socket, func BaseSocketSetIpv6TrafficClassResultWithResponse(BaseSocketSetIpv6TrafficClassResponse) BaseSocketSetIpv6TrafficClassResult
+pkg syscall/zx/posix/socket, func BaseSocketSetKeepAliveResultWithErr(posix.Errno) BaseSocketSetKeepAliveResult
+pkg syscall/zx/posix/socket, func BaseSocketSetKeepAliveResultWithResponse(BaseSocketSetKeepAliveResponse) BaseSocketSetKeepAliveResult
+pkg syscall/zx/posix/socket, func BaseSocketSetLingerResultWithErr(posix.Errno) BaseSocketSetLingerResult
+pkg syscall/zx/posix/socket, func BaseSocketSetLingerResultWithResponse(BaseSocketSetLingerResponse) BaseSocketSetLingerResult
+pkg syscall/zx/posix/socket, func BaseSocketSetNoCheckResultWithErr(posix.Errno) BaseSocketSetNoCheckResult
+pkg syscall/zx/posix/socket, func BaseSocketSetNoCheckResultWithResponse(BaseSocketSetNoCheckResponse) BaseSocketSetNoCheckResult
+pkg syscall/zx/posix/socket, func BaseSocketSetOutOfBandInlineResultWithErr(posix.Errno) BaseSocketSetOutOfBandInlineResult
+pkg syscall/zx/posix/socket, func BaseSocketSetOutOfBandInlineResultWithResponse(BaseSocketSetOutOfBandInlineResponse) BaseSocketSetOutOfBandInlineResult
+pkg syscall/zx/posix/socket, func BaseSocketSetReceiveBufferResultWithErr(posix.Errno) BaseSocketSetReceiveBufferResult
+pkg syscall/zx/posix/socket, func BaseSocketSetReceiveBufferResultWithResponse(BaseSocketSetReceiveBufferResponse) BaseSocketSetReceiveBufferResult
+pkg syscall/zx/posix/socket, func BaseSocketSetReuseAddressResultWithErr(posix.Errno) BaseSocketSetReuseAddressResult
+pkg syscall/zx/posix/socket, func BaseSocketSetReuseAddressResultWithResponse(BaseSocketSetReuseAddressResponse) BaseSocketSetReuseAddressResult
+pkg syscall/zx/posix/socket, func BaseSocketSetReusePortResultWithErr(posix.Errno) BaseSocketSetReusePortResult
+pkg syscall/zx/posix/socket, func BaseSocketSetReusePortResultWithResponse(BaseSocketSetReusePortResponse) BaseSocketSetReusePortResult
+pkg syscall/zx/posix/socket, func BaseSocketSetSendBufferResultWithErr(posix.Errno) BaseSocketSetSendBufferResult
+pkg syscall/zx/posix/socket, func BaseSocketSetSendBufferResultWithResponse(BaseSocketSetSendBufferResponse) BaseSocketSetSendBufferResult
+pkg syscall/zx/posix/socket, func BaseSocketSetTimestampResultWithErr(posix.Errno) BaseSocketSetTimestampResult
+pkg syscall/zx/posix/socket, func BaseSocketSetTimestampResultWithResponse(BaseSocketSetTimestampResponse) BaseSocketSetTimestampResult
+pkg syscall/zx/posix/socket, func BaseSocketShutdown2ResultWithErr(posix.Errno) BaseSocketShutdown2Result
+pkg syscall/zx/posix/socket, func BaseSocketShutdown2ResultWithResponse(BaseSocketShutdown2Response) BaseSocketShutdown2Result
+pkg syscall/zx/posix/socket, func DatagramSocketGetInfoResultWithErr(posix.Errno) DatagramSocketGetInfoResult
+pkg syscall/zx/posix/socket, func DatagramSocketGetInfoResultWithResponse(DatagramSocketGetInfoResponse) DatagramSocketGetInfoResult
+pkg syscall/zx/posix/socket, func DatagramSocketRecvMsgResultWithErr(posix.Errno) DatagramSocketRecvMsgResult
+pkg syscall/zx/posix/socket, func DatagramSocketRecvMsgResultWithResponse(DatagramSocketRecvMsgResponse) DatagramSocketRecvMsgResult
+pkg syscall/zx/posix/socket, func DatagramSocketSendMsgResultWithErr(posix.Errno) DatagramSocketSendMsgResult
+pkg syscall/zx/posix/socket, func DatagramSocketSendMsgResultWithResponse(DatagramSocketSendMsgResponse) DatagramSocketSendMsgResult
+pkg syscall/zx/posix/socket, func DatagramSocketShutdownResultWithErr(posix.Errno) DatagramSocketShutdownResult
+pkg syscall/zx/posix/socket, func DatagramSocketShutdownResultWithResponse(DatagramSocketShutdownResponse) DatagramSocketShutdownResult
+pkg syscall/zx/posix/socket, func NewBaseSocketWithCtxInterfaceRequest() (BaseSocketWithCtxInterfaceRequest, *BaseSocketWithCtxInterface, error)
+pkg syscall/zx/posix/socket, func NewDatagramSocketWithCtxInterfaceRequest() (DatagramSocketWithCtxInterfaceRequest, *DatagramSocketWithCtxInterface, error)
+pkg syscall/zx/posix/socket, func NewProviderWithCtxInterfaceRequest() (ProviderWithCtxInterfaceRequest, *ProviderWithCtxInterface, error)
+pkg syscall/zx/posix/socket, func NewStreamSocketWithCtxInterfaceRequest() (StreamSocketWithCtxInterfaceRequest, *StreamSocketWithCtxInterface, error)
+pkg syscall/zx/posix/socket, func OptionalUint32WithUnset(Empty) OptionalUint32
+pkg syscall/zx/posix/socket, func OptionalUint32WithValue(uint32) OptionalUint32
+pkg syscall/zx/posix/socket, func OptionalUint8WithUnset(Empty) OptionalUint8
+pkg syscall/zx/posix/socket, func OptionalUint8WithValue(uint8) OptionalUint8
+pkg syscall/zx/posix/socket, func ProviderDatagramSocketResultWithErr(posix.Errno) ProviderDatagramSocketResult
+pkg syscall/zx/posix/socket, func ProviderDatagramSocketResultWithResponse(ProviderDatagramSocketResponse) ProviderDatagramSocketResult
+pkg syscall/zx/posix/socket, func ProviderInterfaceIndexToNameResultWithErr(int32) ProviderInterfaceIndexToNameResult
+pkg syscall/zx/posix/socket, func ProviderInterfaceIndexToNameResultWithResponse(ProviderInterfaceIndexToNameResponse) ProviderInterfaceIndexToNameResult
+pkg syscall/zx/posix/socket, func ProviderInterfaceNameToFlagsResultWithErr(int32) ProviderInterfaceNameToFlagsResult
+pkg syscall/zx/posix/socket, func ProviderInterfaceNameToFlagsResultWithResponse(ProviderInterfaceNameToFlagsResponse) ProviderInterfaceNameToFlagsResult
+pkg syscall/zx/posix/socket, func ProviderInterfaceNameToIndexResultWithErr(int32) ProviderInterfaceNameToIndexResult
+pkg syscall/zx/posix/socket, func ProviderInterfaceNameToIndexResultWithResponse(ProviderInterfaceNameToIndexResponse) ProviderInterfaceNameToIndexResult
+pkg syscall/zx/posix/socket, func ProviderStreamSocketResultWithErr(posix.Errno) ProviderStreamSocketResult
+pkg syscall/zx/posix/socket, func ProviderStreamSocketResultWithResponse(ProviderStreamSocketResponse) ProviderStreamSocketResult
+pkg syscall/zx/posix/socket, func StreamSocketAcceptResultWithErr(posix.Errno) StreamSocketAcceptResult
+pkg syscall/zx/posix/socket, func StreamSocketAcceptResultWithResponse(StreamSocketAcceptResponse) StreamSocketAcceptResult
+pkg syscall/zx/posix/socket, func StreamSocketGetInfoResultWithErr(posix.Errno) StreamSocketGetInfoResult
+pkg syscall/zx/posix/socket, func StreamSocketGetInfoResultWithResponse(StreamSocketGetInfoResponse) StreamSocketGetInfoResult
+pkg syscall/zx/posix/socket, func StreamSocketGetTcpCongestionResultWithErr(posix.Errno) StreamSocketGetTcpCongestionResult
+pkg syscall/zx/posix/socket, func StreamSocketGetTcpCongestionResultWithResponse(StreamSocketGetTcpCongestionResponse) StreamSocketGetTcpCongestionResult
+pkg syscall/zx/posix/socket, func StreamSocketGetTcpCorkResultWithErr(posix.Errno) StreamSocketGetTcpCorkResult
+pkg syscall/zx/posix/socket, func StreamSocketGetTcpCorkResultWithResponse(StreamSocketGetTcpCorkResponse) StreamSocketGetTcpCorkResult
+pkg syscall/zx/posix/socket, func StreamSocketGetTcpDeferAcceptResultWithErr(posix.Errno) StreamSocketGetTcpDeferAcceptResult
+pkg syscall/zx/posix/socket, func StreamSocketGetTcpDeferAcceptResultWithResponse(StreamSocketGetTcpDeferAcceptResponse) StreamSocketGetTcpDeferAcceptResult
+pkg syscall/zx/posix/socket, func StreamSocketGetTcpInfoResultWithErr(posix.Errno) StreamSocketGetTcpInfoResult
+pkg syscall/zx/posix/socket, func StreamSocketGetTcpInfoResultWithResponse(StreamSocketGetTcpInfoResponse) StreamSocketGetTcpInfoResult
+pkg syscall/zx/posix/socket, func StreamSocketGetTcpKeepAliveCountResultWithErr(posix.Errno) StreamSocketGetTcpKeepAliveCountResult
+pkg syscall/zx/posix/socket, func StreamSocketGetTcpKeepAliveCountResultWithResponse(StreamSocketGetTcpKeepAliveCountResponse) StreamSocketGetTcpKeepAliveCountResult
+pkg syscall/zx/posix/socket, func StreamSocketGetTcpKeepAliveIdleResultWithErr(posix.Errno) StreamSocketGetTcpKeepAliveIdleResult
+pkg syscall/zx/posix/socket, func StreamSocketGetTcpKeepAliveIdleResultWithResponse(StreamSocketGetTcpKeepAliveIdleResponse) StreamSocketGetTcpKeepAliveIdleResult
+pkg syscall/zx/posix/socket, func StreamSocketGetTcpKeepAliveIntervalResultWithErr(posix.Errno) StreamSocketGetTcpKeepAliveIntervalResult
+pkg syscall/zx/posix/socket, func StreamSocketGetTcpKeepAliveIntervalResultWithResponse(StreamSocketGetTcpKeepAliveIntervalResponse) StreamSocketGetTcpKeepAliveIntervalResult
+pkg syscall/zx/posix/socket, func StreamSocketGetTcpLingerResultWithErr(posix.Errno) StreamSocketGetTcpLingerResult
+pkg syscall/zx/posix/socket, func StreamSocketGetTcpLingerResultWithResponse(StreamSocketGetTcpLingerResponse) StreamSocketGetTcpLingerResult
+pkg syscall/zx/posix/socket, func StreamSocketGetTcpMaxSegmentResultWithErr(posix.Errno) StreamSocketGetTcpMaxSegmentResult
+pkg syscall/zx/posix/socket, func StreamSocketGetTcpMaxSegmentResultWithResponse(StreamSocketGetTcpMaxSegmentResponse) StreamSocketGetTcpMaxSegmentResult
+pkg syscall/zx/posix/socket, func StreamSocketGetTcpNoDelayResultWithErr(posix.Errno) StreamSocketGetTcpNoDelayResult
+pkg syscall/zx/posix/socket, func StreamSocketGetTcpNoDelayResultWithResponse(StreamSocketGetTcpNoDelayResponse) StreamSocketGetTcpNoDelayResult
+pkg syscall/zx/posix/socket, func StreamSocketGetTcpQuickAckResultWithErr(posix.Errno) StreamSocketGetTcpQuickAckResult
+pkg syscall/zx/posix/socket, func StreamSocketGetTcpQuickAckResultWithResponse(StreamSocketGetTcpQuickAckResponse) StreamSocketGetTcpQuickAckResult
+pkg syscall/zx/posix/socket, func StreamSocketGetTcpSynCountResultWithErr(posix.Errno) StreamSocketGetTcpSynCountResult
+pkg syscall/zx/posix/socket, func StreamSocketGetTcpSynCountResultWithResponse(StreamSocketGetTcpSynCountResponse) StreamSocketGetTcpSynCountResult
+pkg syscall/zx/posix/socket, func StreamSocketGetTcpUserTimeoutResultWithErr(posix.Errno) StreamSocketGetTcpUserTimeoutResult
+pkg syscall/zx/posix/socket, func StreamSocketGetTcpUserTimeoutResultWithResponse(StreamSocketGetTcpUserTimeoutResponse) StreamSocketGetTcpUserTimeoutResult
+pkg syscall/zx/posix/socket, func StreamSocketGetTcpWindowClampResultWithErr(posix.Errno) StreamSocketGetTcpWindowClampResult
+pkg syscall/zx/posix/socket, func StreamSocketGetTcpWindowClampResultWithResponse(StreamSocketGetTcpWindowClampResponse) StreamSocketGetTcpWindowClampResult
+pkg syscall/zx/posix/socket, func StreamSocketListenResultWithErr(posix.Errno) StreamSocketListenResult
+pkg syscall/zx/posix/socket, func StreamSocketListenResultWithResponse(StreamSocketListenResponse) StreamSocketListenResult
+pkg syscall/zx/posix/socket, func StreamSocketSetTcpCongestionResultWithErr(posix.Errno) StreamSocketSetTcpCongestionResult
+pkg syscall/zx/posix/socket, func StreamSocketSetTcpCongestionResultWithResponse(StreamSocketSetTcpCongestionResponse) StreamSocketSetTcpCongestionResult
+pkg syscall/zx/posix/socket, func StreamSocketSetTcpCorkResultWithErr(posix.Errno) StreamSocketSetTcpCorkResult
+pkg syscall/zx/posix/socket, func StreamSocketSetTcpCorkResultWithResponse(StreamSocketSetTcpCorkResponse) StreamSocketSetTcpCorkResult
+pkg syscall/zx/posix/socket, func StreamSocketSetTcpDeferAcceptResultWithErr(posix.Errno) StreamSocketSetTcpDeferAcceptResult
+pkg syscall/zx/posix/socket, func StreamSocketSetTcpDeferAcceptResultWithResponse(StreamSocketSetTcpDeferAcceptResponse) StreamSocketSetTcpDeferAcceptResult
+pkg syscall/zx/posix/socket, func StreamSocketSetTcpKeepAliveCountResultWithErr(posix.Errno) StreamSocketSetTcpKeepAliveCountResult
+pkg syscall/zx/posix/socket, func StreamSocketSetTcpKeepAliveCountResultWithResponse(StreamSocketSetTcpKeepAliveCountResponse) StreamSocketSetTcpKeepAliveCountResult
+pkg syscall/zx/posix/socket, func StreamSocketSetTcpKeepAliveIdleResultWithErr(posix.Errno) StreamSocketSetTcpKeepAliveIdleResult
+pkg syscall/zx/posix/socket, func StreamSocketSetTcpKeepAliveIdleResultWithResponse(StreamSocketSetTcpKeepAliveIdleResponse) StreamSocketSetTcpKeepAliveIdleResult
+pkg syscall/zx/posix/socket, func StreamSocketSetTcpKeepAliveIntervalResultWithErr(posix.Errno) StreamSocketSetTcpKeepAliveIntervalResult
+pkg syscall/zx/posix/socket, func StreamSocketSetTcpKeepAliveIntervalResultWithResponse(StreamSocketSetTcpKeepAliveIntervalResponse) StreamSocketSetTcpKeepAliveIntervalResult
+pkg syscall/zx/posix/socket, func StreamSocketSetTcpLingerResultWithErr(posix.Errno) StreamSocketSetTcpLingerResult
+pkg syscall/zx/posix/socket, func StreamSocketSetTcpLingerResultWithResponse(StreamSocketSetTcpLingerResponse) StreamSocketSetTcpLingerResult
+pkg syscall/zx/posix/socket, func StreamSocketSetTcpMaxSegmentResultWithErr(posix.Errno) StreamSocketSetTcpMaxSegmentResult
+pkg syscall/zx/posix/socket, func StreamSocketSetTcpMaxSegmentResultWithResponse(StreamSocketSetTcpMaxSegmentResponse) StreamSocketSetTcpMaxSegmentResult
+pkg syscall/zx/posix/socket, func StreamSocketSetTcpNoDelayResultWithErr(posix.Errno) StreamSocketSetTcpNoDelayResult
+pkg syscall/zx/posix/socket, func StreamSocketSetTcpNoDelayResultWithResponse(StreamSocketSetTcpNoDelayResponse) StreamSocketSetTcpNoDelayResult
+pkg syscall/zx/posix/socket, func StreamSocketSetTcpQuickAckResultWithErr(posix.Errno) StreamSocketSetTcpQuickAckResult
+pkg syscall/zx/posix/socket, func StreamSocketSetTcpQuickAckResultWithResponse(StreamSocketSetTcpQuickAckResponse) StreamSocketSetTcpQuickAckResult
+pkg syscall/zx/posix/socket, func StreamSocketSetTcpSynCountResultWithErr(posix.Errno) StreamSocketSetTcpSynCountResult
+pkg syscall/zx/posix/socket, func StreamSocketSetTcpSynCountResultWithResponse(StreamSocketSetTcpSynCountResponse) StreamSocketSetTcpSynCountResult
+pkg syscall/zx/posix/socket, func StreamSocketSetTcpUserTimeoutResultWithErr(posix.Errno) StreamSocketSetTcpUserTimeoutResult
+pkg syscall/zx/posix/socket, func StreamSocketSetTcpUserTimeoutResultWithResponse(StreamSocketSetTcpUserTimeoutResponse) StreamSocketSetTcpUserTimeoutResult
+pkg syscall/zx/posix/socket, func StreamSocketSetTcpWindowClampResultWithErr(posix.Errno) StreamSocketSetTcpWindowClampResult
+pkg syscall/zx/posix/socket, func StreamSocketSetTcpWindowClampResultWithResponse(StreamSocketSetTcpWindowClampResponse) StreamSocketSetTcpWindowClampResult
+pkg syscall/zx/posix/socket, method (*BaseSocketAddIpMembershipResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketAddIpMembershipResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketAddIpMembershipResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketAddIpMembershipResult) SetResponse(BaseSocketAddIpMembershipResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketAddIpMembershipResult) Which() I_baseSocketAddIpMembershipResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketAddIpv6MembershipResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketAddIpv6MembershipResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketAddIpv6MembershipResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketAddIpv6MembershipResult) SetResponse(BaseSocketAddIpv6MembershipResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketAddIpv6MembershipResult) Which() I_baseSocketAddIpv6MembershipResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketBindResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketBindResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketBindResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketBindResult) SetResponse(BaseSocketBindResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketBindResult) Which() I_baseSocketBindResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketConnectResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketConnectResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketConnectResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketConnectResult) SetResponse(BaseSocketConnectResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketConnectResult) Which() I_baseSocketConnectResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketDisconnectResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketDisconnectResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketDisconnectResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketDisconnectResult) SetResponse(BaseSocketDisconnectResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketDisconnectResult) Which() I_baseSocketDisconnectResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketDropIpMembershipResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketDropIpMembershipResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketDropIpMembershipResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketDropIpMembershipResult) SetResponse(BaseSocketDropIpMembershipResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketDropIpMembershipResult) Which() I_baseSocketDropIpMembershipResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketDropIpv6MembershipResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketDropIpv6MembershipResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketDropIpv6MembershipResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketDropIpv6MembershipResult) SetResponse(BaseSocketDropIpv6MembershipResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketDropIpv6MembershipResult) Which() I_baseSocketDropIpv6MembershipResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketEventProxy) Handle() *zx.Handle
+pkg syscall/zx/posix/socket, method (*BaseSocketEventProxy) OnOpen(int32, *io.NodeInfo) error
+pkg syscall/zx/posix/socket, method (*BaseSocketGetAcceptConnResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketGetAcceptConnResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketGetAcceptConnResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetAcceptConnResult) SetResponse(BaseSocketGetAcceptConnResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetAcceptConnResult) Which() I_baseSocketGetAcceptConnResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketGetBindToDeviceResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketGetBindToDeviceResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketGetBindToDeviceResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetBindToDeviceResult) SetResponse(BaseSocketGetBindToDeviceResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetBindToDeviceResult) Which() I_baseSocketGetBindToDeviceResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketGetBroadcastResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketGetBroadcastResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketGetBroadcastResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetBroadcastResult) SetResponse(BaseSocketGetBroadcastResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetBroadcastResult) Which() I_baseSocketGetBroadcastResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketGetErrorResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketGetErrorResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketGetErrorResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetErrorResult) SetResponse(BaseSocketGetErrorResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetErrorResult) Which() I_baseSocketGetErrorResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpMulticastInterfaceResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpMulticastInterfaceResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpMulticastInterfaceResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpMulticastInterfaceResult) SetResponse(BaseSocketGetIpMulticastInterfaceResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpMulticastInterfaceResult) Which() I_baseSocketGetIpMulticastInterfaceResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpMulticastLoopbackResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpMulticastLoopbackResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpMulticastLoopbackResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpMulticastLoopbackResult) SetResponse(BaseSocketGetIpMulticastLoopbackResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpMulticastLoopbackResult) Which() I_baseSocketGetIpMulticastLoopbackResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpMulticastTtlResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpMulticastTtlResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpMulticastTtlResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpMulticastTtlResult) SetResponse(BaseSocketGetIpMulticastTtlResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpMulticastTtlResult) Which() I_baseSocketGetIpMulticastTtlResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpPacketInfoResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpPacketInfoResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpPacketInfoResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpPacketInfoResult) SetResponse(BaseSocketGetIpPacketInfoResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpPacketInfoResult) Which() I_baseSocketGetIpPacketInfoResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpReceiveTypeOfServiceResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpReceiveTypeOfServiceResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpReceiveTypeOfServiceResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpReceiveTypeOfServiceResult) SetResponse(BaseSocketGetIpReceiveTypeOfServiceResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpReceiveTypeOfServiceResult) Which() I_baseSocketGetIpReceiveTypeOfServiceResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpTtlResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpTtlResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpTtlResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpTtlResult) SetResponse(BaseSocketGetIpTtlResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpTtlResult) Which() I_baseSocketGetIpTtlResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpTypeOfServiceResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpTypeOfServiceResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpTypeOfServiceResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpTypeOfServiceResult) SetResponse(BaseSocketGetIpTypeOfServiceResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpTypeOfServiceResult) Which() I_baseSocketGetIpTypeOfServiceResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpv6MulticastHopsResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpv6MulticastHopsResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpv6MulticastHopsResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpv6MulticastHopsResult) SetResponse(BaseSocketGetIpv6MulticastHopsResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpv6MulticastHopsResult) Which() I_baseSocketGetIpv6MulticastHopsResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpv6MulticastInterfaceResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpv6MulticastInterfaceResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpv6MulticastInterfaceResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpv6MulticastInterfaceResult) SetResponse(BaseSocketGetIpv6MulticastInterfaceResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpv6MulticastInterfaceResult) Which() I_baseSocketGetIpv6MulticastInterfaceResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpv6MulticastLoopbackResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpv6MulticastLoopbackResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpv6MulticastLoopbackResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpv6MulticastLoopbackResult) SetResponse(BaseSocketGetIpv6MulticastLoopbackResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpv6MulticastLoopbackResult) Which() I_baseSocketGetIpv6MulticastLoopbackResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpv6OnlyResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpv6OnlyResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpv6OnlyResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpv6OnlyResult) SetResponse(BaseSocketGetIpv6OnlyResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpv6OnlyResult) Which() I_baseSocketGetIpv6OnlyResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpv6ReceiveTrafficClassResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpv6ReceiveTrafficClassResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpv6ReceiveTrafficClassResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpv6ReceiveTrafficClassResult) SetResponse(BaseSocketGetIpv6ReceiveTrafficClassResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpv6ReceiveTrafficClassResult) Which() I_baseSocketGetIpv6ReceiveTrafficClassResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpv6TrafficClassResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpv6TrafficClassResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpv6TrafficClassResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpv6TrafficClassResult) SetResponse(BaseSocketGetIpv6TrafficClassResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetIpv6TrafficClassResult) Which() I_baseSocketGetIpv6TrafficClassResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketGetKeepAliveResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketGetKeepAliveResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketGetKeepAliveResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetKeepAliveResult) SetResponse(BaseSocketGetKeepAliveResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetKeepAliveResult) Which() I_baseSocketGetKeepAliveResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketGetLingerResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketGetLingerResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketGetLingerResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetLingerResult) SetResponse(BaseSocketGetLingerResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetLingerResult) Which() I_baseSocketGetLingerResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketGetNoCheckResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketGetNoCheckResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketGetNoCheckResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetNoCheckResult) SetResponse(BaseSocketGetNoCheckResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetNoCheckResult) Which() I_baseSocketGetNoCheckResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketGetOutOfBandInlineResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketGetOutOfBandInlineResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketGetOutOfBandInlineResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetOutOfBandInlineResult) SetResponse(BaseSocketGetOutOfBandInlineResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetOutOfBandInlineResult) Which() I_baseSocketGetOutOfBandInlineResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketGetPeerNameResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketGetPeerNameResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketGetPeerNameResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetPeerNameResult) SetResponse(BaseSocketGetPeerNameResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetPeerNameResult) Which() I_baseSocketGetPeerNameResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketGetReceiveBufferResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketGetReceiveBufferResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketGetReceiveBufferResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetReceiveBufferResult) SetResponse(BaseSocketGetReceiveBufferResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetReceiveBufferResult) Which() I_baseSocketGetReceiveBufferResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketGetReuseAddressResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketGetReuseAddressResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketGetReuseAddressResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetReuseAddressResult) SetResponse(BaseSocketGetReuseAddressResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetReuseAddressResult) Which() I_baseSocketGetReuseAddressResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketGetReusePortResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketGetReusePortResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketGetReusePortResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetReusePortResult) SetResponse(BaseSocketGetReusePortResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetReusePortResult) Which() I_baseSocketGetReusePortResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketGetSendBufferResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketGetSendBufferResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketGetSendBufferResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetSendBufferResult) SetResponse(BaseSocketGetSendBufferResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetSendBufferResult) Which() I_baseSocketGetSendBufferResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketGetSockNameResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketGetSockNameResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketGetSockNameResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetSockNameResult) SetResponse(BaseSocketGetSockNameResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetSockNameResult) Which() I_baseSocketGetSockNameResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketGetTimestampResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketGetTimestampResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketGetTimestampResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetTimestampResult) SetResponse(BaseSocketGetTimestampResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketGetTimestampResult) Which() I_baseSocketGetTimestampResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketSetBindToDeviceResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketSetBindToDeviceResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketSetBindToDeviceResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketSetBindToDeviceResult) SetResponse(BaseSocketSetBindToDeviceResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketSetBindToDeviceResult) Which() I_baseSocketSetBindToDeviceResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketSetBroadcastResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketSetBroadcastResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketSetBroadcastResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketSetBroadcastResult) SetResponse(BaseSocketSetBroadcastResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketSetBroadcastResult) Which() I_baseSocketSetBroadcastResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpMulticastInterfaceResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpMulticastInterfaceResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpMulticastInterfaceResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpMulticastInterfaceResult) SetResponse(BaseSocketSetIpMulticastInterfaceResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpMulticastInterfaceResult) Which() I_baseSocketSetIpMulticastInterfaceResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpMulticastLoopbackResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpMulticastLoopbackResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpMulticastLoopbackResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpMulticastLoopbackResult) SetResponse(BaseSocketSetIpMulticastLoopbackResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpMulticastLoopbackResult) Which() I_baseSocketSetIpMulticastLoopbackResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpMulticastTtlResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpMulticastTtlResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpMulticastTtlResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpMulticastTtlResult) SetResponse(BaseSocketSetIpMulticastTtlResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpMulticastTtlResult) Which() I_baseSocketSetIpMulticastTtlResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpPacketInfoResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpPacketInfoResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpPacketInfoResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpPacketInfoResult) SetResponse(BaseSocketSetIpPacketInfoResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpPacketInfoResult) Which() I_baseSocketSetIpPacketInfoResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpReceiveTypeOfServiceResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpReceiveTypeOfServiceResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpReceiveTypeOfServiceResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpReceiveTypeOfServiceResult) SetResponse(BaseSocketSetIpReceiveTypeOfServiceResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpReceiveTypeOfServiceResult) Which() I_baseSocketSetIpReceiveTypeOfServiceResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpTtlResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpTtlResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpTtlResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpTtlResult) SetResponse(BaseSocketSetIpTtlResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpTtlResult) Which() I_baseSocketSetIpTtlResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpTypeOfServiceResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpTypeOfServiceResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpTypeOfServiceResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpTypeOfServiceResult) SetResponse(BaseSocketSetIpTypeOfServiceResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpTypeOfServiceResult) Which() I_baseSocketSetIpTypeOfServiceResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpv6MulticastHopsResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpv6MulticastHopsResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpv6MulticastHopsResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpv6MulticastHopsResult) SetResponse(BaseSocketSetIpv6MulticastHopsResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpv6MulticastHopsResult) Which() I_baseSocketSetIpv6MulticastHopsResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpv6MulticastInterfaceResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpv6MulticastInterfaceResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpv6MulticastInterfaceResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpv6MulticastInterfaceResult) SetResponse(BaseSocketSetIpv6MulticastInterfaceResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpv6MulticastInterfaceResult) Which() I_baseSocketSetIpv6MulticastInterfaceResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpv6MulticastLoopbackResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpv6MulticastLoopbackResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpv6MulticastLoopbackResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpv6MulticastLoopbackResult) SetResponse(BaseSocketSetIpv6MulticastLoopbackResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpv6MulticastLoopbackResult) Which() I_baseSocketSetIpv6MulticastLoopbackResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpv6OnlyResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpv6OnlyResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpv6OnlyResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpv6OnlyResult) SetResponse(BaseSocketSetIpv6OnlyResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpv6OnlyResult) Which() I_baseSocketSetIpv6OnlyResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpv6ReceiveTrafficClassResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpv6ReceiveTrafficClassResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpv6ReceiveTrafficClassResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpv6ReceiveTrafficClassResult) SetResponse(BaseSocketSetIpv6ReceiveTrafficClassResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpv6ReceiveTrafficClassResult) Which() I_baseSocketSetIpv6ReceiveTrafficClassResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpv6TrafficClassResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpv6TrafficClassResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpv6TrafficClassResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpv6TrafficClassResult) SetResponse(BaseSocketSetIpv6TrafficClassResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketSetIpv6TrafficClassResult) Which() I_baseSocketSetIpv6TrafficClassResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketSetKeepAliveResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketSetKeepAliveResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketSetKeepAliveResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketSetKeepAliveResult) SetResponse(BaseSocketSetKeepAliveResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketSetKeepAliveResult) Which() I_baseSocketSetKeepAliveResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketSetLingerResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketSetLingerResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketSetLingerResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketSetLingerResult) SetResponse(BaseSocketSetLingerResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketSetLingerResult) Which() I_baseSocketSetLingerResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketSetNoCheckResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketSetNoCheckResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketSetNoCheckResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketSetNoCheckResult) SetResponse(BaseSocketSetNoCheckResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketSetNoCheckResult) Which() I_baseSocketSetNoCheckResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketSetOutOfBandInlineResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketSetOutOfBandInlineResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketSetOutOfBandInlineResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketSetOutOfBandInlineResult) SetResponse(BaseSocketSetOutOfBandInlineResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketSetOutOfBandInlineResult) Which() I_baseSocketSetOutOfBandInlineResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketSetReceiveBufferResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketSetReceiveBufferResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketSetReceiveBufferResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketSetReceiveBufferResult) SetResponse(BaseSocketSetReceiveBufferResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketSetReceiveBufferResult) Which() I_baseSocketSetReceiveBufferResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketSetReuseAddressResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketSetReuseAddressResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketSetReuseAddressResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketSetReuseAddressResult) SetResponse(BaseSocketSetReuseAddressResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketSetReuseAddressResult) Which() I_baseSocketSetReuseAddressResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketSetReusePortResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketSetReusePortResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketSetReusePortResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketSetReusePortResult) SetResponse(BaseSocketSetReusePortResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketSetReusePortResult) Which() I_baseSocketSetReusePortResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketSetSendBufferResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketSetSendBufferResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketSetSendBufferResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketSetSendBufferResult) SetResponse(BaseSocketSetSendBufferResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketSetSendBufferResult) Which() I_baseSocketSetSendBufferResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketSetTimestampResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketSetTimestampResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketSetTimestampResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketSetTimestampResult) SetResponse(BaseSocketSetTimestampResponse)
+pkg syscall/zx/posix/socket, method (*BaseSocketSetTimestampResult) Which() I_baseSocketSetTimestampResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketShutdown2Response) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*BaseSocketShutdown2Result) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*BaseSocketShutdown2Result) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*BaseSocketShutdown2Result) SetResponse(BaseSocketShutdown2Response)
+pkg syscall/zx/posix/socket, method (*BaseSocketShutdown2Result) Which() I_baseSocketShutdown2ResultTag
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) AddIpMembership(context.Context, IpMulticastMembership) (BaseSocketAddIpMembershipResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) AddIpv6Membership(context.Context, Ipv6MulticastMembership) (BaseSocketAddIpv6MembershipResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) Bind(context.Context, net.SocketAddress) (BaseSocketBindResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) Clone(context.Context, uint32, io.NodeWithCtxInterfaceRequest) error
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) Close(context.Context) (int32, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) Connect(context.Context, net.SocketAddress) (BaseSocketConnectResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) Describe(context.Context) (io.NodeInfo, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) Disconnect(context.Context) (BaseSocketDisconnectResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) DropIpMembership(context.Context, IpMulticastMembership) (BaseSocketDropIpMembershipResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) DropIpv6Membership(context.Context, Ipv6MulticastMembership) (BaseSocketDropIpv6MembershipResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) ExpectOnOpen(context.Context) (int32, *io.NodeInfo, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) GetAcceptConn(context.Context) (BaseSocketGetAcceptConnResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) GetAttr(context.Context) (int32, io.NodeAttributes, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) GetBindToDevice(context.Context) (BaseSocketGetBindToDeviceResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) GetBroadcast(context.Context) (BaseSocketGetBroadcastResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) GetError(context.Context) (BaseSocketGetErrorResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) GetIpMulticastInterface(context.Context) (BaseSocketGetIpMulticastInterfaceResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) GetIpMulticastLoopback(context.Context) (BaseSocketGetIpMulticastLoopbackResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) GetIpMulticastTtl(context.Context) (BaseSocketGetIpMulticastTtlResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) GetIpPacketInfo(context.Context) (BaseSocketGetIpPacketInfoResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) GetIpReceiveTypeOfService(context.Context) (BaseSocketGetIpReceiveTypeOfServiceResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) GetIpTtl(context.Context) (BaseSocketGetIpTtlResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) GetIpTypeOfService(context.Context) (BaseSocketGetIpTypeOfServiceResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) GetIpv6MulticastHops(context.Context) (BaseSocketGetIpv6MulticastHopsResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) GetIpv6MulticastInterface(context.Context) (BaseSocketGetIpv6MulticastInterfaceResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) GetIpv6MulticastLoopback(context.Context) (BaseSocketGetIpv6MulticastLoopbackResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) GetIpv6Only(context.Context) (BaseSocketGetIpv6OnlyResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) GetIpv6ReceiveTrafficClass(context.Context) (BaseSocketGetIpv6ReceiveTrafficClassResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) GetIpv6TrafficClass(context.Context) (BaseSocketGetIpv6TrafficClassResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) GetKeepAlive(context.Context) (BaseSocketGetKeepAliveResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) GetLinger(context.Context) (BaseSocketGetLingerResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) GetNoCheck(context.Context) (BaseSocketGetNoCheckResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) GetOutOfBandInline(context.Context) (BaseSocketGetOutOfBandInlineResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) GetPeerName(context.Context) (BaseSocketGetPeerNameResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) GetReceiveBuffer(context.Context) (BaseSocketGetReceiveBufferResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) GetReuseAddress(context.Context) (BaseSocketGetReuseAddressResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) GetReusePort(context.Context) (BaseSocketGetReusePortResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) GetSendBuffer(context.Context) (BaseSocketGetSendBufferResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) GetSockName(context.Context) (BaseSocketGetSockNameResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) GetTimestamp(context.Context) (BaseSocketGetTimestampResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) Handle() *zx.Handle
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) NodeGetFlags(context.Context) (int32, uint32, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) NodeSetFlags(context.Context, uint32) (int32, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) SetAttr(context.Context, uint32, io.NodeAttributes) (int32, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) SetBindToDevice(context.Context, string) (BaseSocketSetBindToDeviceResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) SetBroadcast(context.Context, bool) (BaseSocketSetBroadcastResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) SetIpMulticastInterface(context.Context, uint64, net.Ipv4Address) (BaseSocketSetIpMulticastInterfaceResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) SetIpMulticastLoopback(context.Context, bool) (BaseSocketSetIpMulticastLoopbackResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) SetIpMulticastTtl(context.Context, OptionalUint8) (BaseSocketSetIpMulticastTtlResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) SetIpPacketInfo(context.Context, bool) (BaseSocketSetIpPacketInfoResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) SetIpReceiveTypeOfService(context.Context, bool) (BaseSocketSetIpReceiveTypeOfServiceResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) SetIpTtl(context.Context, OptionalUint8) (BaseSocketSetIpTtlResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) SetIpTypeOfService(context.Context, uint8) (BaseSocketSetIpTypeOfServiceResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) SetIpv6MulticastHops(context.Context, OptionalUint8) (BaseSocketSetIpv6MulticastHopsResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) SetIpv6MulticastInterface(context.Context, uint64) (BaseSocketSetIpv6MulticastInterfaceResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) SetIpv6MulticastLoopback(context.Context, bool) (BaseSocketSetIpv6MulticastLoopbackResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) SetIpv6Only(context.Context, bool) (BaseSocketSetIpv6OnlyResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) SetIpv6ReceiveTrafficClass(context.Context, bool) (BaseSocketSetIpv6ReceiveTrafficClassResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) SetIpv6TrafficClass(context.Context, OptionalUint8) (BaseSocketSetIpv6TrafficClassResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) SetKeepAlive(context.Context, bool) (BaseSocketSetKeepAliveResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) SetLinger(context.Context, bool, uint32) (BaseSocketSetLingerResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) SetNoCheck(context.Context, bool) (BaseSocketSetNoCheckResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) SetOutOfBandInline(context.Context, bool) (BaseSocketSetOutOfBandInlineResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) SetReceiveBuffer(context.Context, uint64) (BaseSocketSetReceiveBufferResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) SetReuseAddress(context.Context, bool) (BaseSocketSetReuseAddressResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) SetReusePort(context.Context, bool) (BaseSocketSetReusePortResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) SetSendBuffer(context.Context, uint64) (BaseSocketSetSendBufferResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) SetTimestamp(context.Context, bool) (BaseSocketSetTimestampResult, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) Shutdown2(context.Context, ShutdownMode) (BaseSocketShutdown2Result, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterface) Sync(context.Context) (int32, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxInterfaceRequest) Handle() *zx.Handle
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxStub) Dispatch(fidl.DispatchArgs) (fidl.Message, bool, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxTransitionalBase) NodeGetFlags(context.Context) (int32, uint32, error)
+pkg syscall/zx/posix/socket, method (*BaseSocketWithCtxTransitionalBase) NodeSetFlags(context.Context, uint32) (int32, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketEventProxy) Handle() *zx.Handle
+pkg syscall/zx/posix/socket, method (*DatagramSocketEventProxy) OnOpen(int32, *io.NodeInfo) error
+pkg syscall/zx/posix/socket, method (*DatagramSocketGetInfoResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*DatagramSocketGetInfoResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*DatagramSocketGetInfoResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*DatagramSocketGetInfoResult) SetResponse(DatagramSocketGetInfoResponse)
+pkg syscall/zx/posix/socket, method (*DatagramSocketGetInfoResult) Which() I_datagramSocketGetInfoResultTag
+pkg syscall/zx/posix/socket, method (*DatagramSocketRecvMsgResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*DatagramSocketRecvMsgResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*DatagramSocketRecvMsgResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*DatagramSocketRecvMsgResult) SetResponse(DatagramSocketRecvMsgResponse)
+pkg syscall/zx/posix/socket, method (*DatagramSocketRecvMsgResult) Which() I_datagramSocketRecvMsgResultTag
+pkg syscall/zx/posix/socket, method (*DatagramSocketSendMsgResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*DatagramSocketSendMsgResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*DatagramSocketSendMsgResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*DatagramSocketSendMsgResult) SetResponse(DatagramSocketSendMsgResponse)
+pkg syscall/zx/posix/socket, method (*DatagramSocketSendMsgResult) Which() I_datagramSocketSendMsgResultTag
+pkg syscall/zx/posix/socket, method (*DatagramSocketShutdownResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*DatagramSocketShutdownResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*DatagramSocketShutdownResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*DatagramSocketShutdownResult) SetResponse(DatagramSocketShutdownResponse)
+pkg syscall/zx/posix/socket, method (*DatagramSocketShutdownResult) Which() I_datagramSocketShutdownResultTag
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) AddIpMembership(context.Context, IpMulticastMembership) (BaseSocketAddIpMembershipResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) AddIpv6Membership(context.Context, Ipv6MulticastMembership) (BaseSocketAddIpv6MembershipResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) Bind(context.Context, net.SocketAddress) (BaseSocketBindResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) Clone(context.Context, uint32, io.NodeWithCtxInterfaceRequest) error
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) Close(context.Context) (int32, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) Connect(context.Context, net.SocketAddress) (BaseSocketConnectResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) Describe(context.Context) (io.NodeInfo, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) Disconnect(context.Context) (BaseSocketDisconnectResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) DropIpMembership(context.Context, IpMulticastMembership) (BaseSocketDropIpMembershipResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) DropIpv6Membership(context.Context, Ipv6MulticastMembership) (BaseSocketDropIpv6MembershipResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) ExpectOnOpen(context.Context) (int32, *io.NodeInfo, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) GetAcceptConn(context.Context) (BaseSocketGetAcceptConnResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) GetAttr(context.Context) (int32, io.NodeAttributes, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) GetBindToDevice(context.Context) (BaseSocketGetBindToDeviceResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) GetBroadcast(context.Context) (BaseSocketGetBroadcastResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) GetError(context.Context) (BaseSocketGetErrorResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) GetInfo(context.Context) (DatagramSocketGetInfoResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) GetIpMulticastInterface(context.Context) (BaseSocketGetIpMulticastInterfaceResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) GetIpMulticastLoopback(context.Context) (BaseSocketGetIpMulticastLoopbackResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) GetIpMulticastTtl(context.Context) (BaseSocketGetIpMulticastTtlResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) GetIpPacketInfo(context.Context) (BaseSocketGetIpPacketInfoResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) GetIpReceiveTypeOfService(context.Context) (BaseSocketGetIpReceiveTypeOfServiceResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) GetIpTtl(context.Context) (BaseSocketGetIpTtlResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) GetIpTypeOfService(context.Context) (BaseSocketGetIpTypeOfServiceResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) GetIpv6MulticastHops(context.Context) (BaseSocketGetIpv6MulticastHopsResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) GetIpv6MulticastInterface(context.Context) (BaseSocketGetIpv6MulticastInterfaceResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) GetIpv6MulticastLoopback(context.Context) (BaseSocketGetIpv6MulticastLoopbackResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) GetIpv6Only(context.Context) (BaseSocketGetIpv6OnlyResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) GetIpv6ReceiveTrafficClass(context.Context) (BaseSocketGetIpv6ReceiveTrafficClassResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) GetIpv6TrafficClass(context.Context) (BaseSocketGetIpv6TrafficClassResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) GetKeepAlive(context.Context) (BaseSocketGetKeepAliveResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) GetLinger(context.Context) (BaseSocketGetLingerResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) GetNoCheck(context.Context) (BaseSocketGetNoCheckResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) GetOutOfBandInline(context.Context) (BaseSocketGetOutOfBandInlineResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) GetPeerName(context.Context) (BaseSocketGetPeerNameResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) GetReceiveBuffer(context.Context) (BaseSocketGetReceiveBufferResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) GetReuseAddress(context.Context) (BaseSocketGetReuseAddressResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) GetReusePort(context.Context) (BaseSocketGetReusePortResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) GetSendBuffer(context.Context) (BaseSocketGetSendBufferResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) GetSockName(context.Context) (BaseSocketGetSockNameResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) GetTimestamp(context.Context) (BaseSocketGetTimestampResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) Handle() *zx.Handle
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) NodeGetFlags(context.Context) (int32, uint32, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) NodeSetFlags(context.Context, uint32) (int32, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) RecvMsg(context.Context, bool, uint32, bool, RecvMsgFlags) (DatagramSocketRecvMsgResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) SendMsg(context.Context, *net.SocketAddress, []uint8, SendControlData, SendMsgFlags) (DatagramSocketSendMsgResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) SetAttr(context.Context, uint32, io.NodeAttributes) (int32, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) SetBindToDevice(context.Context, string) (BaseSocketSetBindToDeviceResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) SetBroadcast(context.Context, bool) (BaseSocketSetBroadcastResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) SetIpMulticastInterface(context.Context, uint64, net.Ipv4Address) (BaseSocketSetIpMulticastInterfaceResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) SetIpMulticastLoopback(context.Context, bool) (BaseSocketSetIpMulticastLoopbackResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) SetIpMulticastTtl(context.Context, OptionalUint8) (BaseSocketSetIpMulticastTtlResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) SetIpPacketInfo(context.Context, bool) (BaseSocketSetIpPacketInfoResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) SetIpReceiveTypeOfService(context.Context, bool) (BaseSocketSetIpReceiveTypeOfServiceResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) SetIpTtl(context.Context, OptionalUint8) (BaseSocketSetIpTtlResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) SetIpTypeOfService(context.Context, uint8) (BaseSocketSetIpTypeOfServiceResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) SetIpv6MulticastHops(context.Context, OptionalUint8) (BaseSocketSetIpv6MulticastHopsResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) SetIpv6MulticastInterface(context.Context, uint64) (BaseSocketSetIpv6MulticastInterfaceResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) SetIpv6MulticastLoopback(context.Context, bool) (BaseSocketSetIpv6MulticastLoopbackResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) SetIpv6Only(context.Context, bool) (BaseSocketSetIpv6OnlyResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) SetIpv6ReceiveTrafficClass(context.Context, bool) (BaseSocketSetIpv6ReceiveTrafficClassResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) SetIpv6TrafficClass(context.Context, OptionalUint8) (BaseSocketSetIpv6TrafficClassResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) SetKeepAlive(context.Context, bool) (BaseSocketSetKeepAliveResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) SetLinger(context.Context, bool, uint32) (BaseSocketSetLingerResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) SetNoCheck(context.Context, bool) (BaseSocketSetNoCheckResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) SetOutOfBandInline(context.Context, bool) (BaseSocketSetOutOfBandInlineResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) SetReceiveBuffer(context.Context, uint64) (BaseSocketSetReceiveBufferResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) SetReuseAddress(context.Context, bool) (BaseSocketSetReuseAddressResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) SetReusePort(context.Context, bool) (BaseSocketSetReusePortResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) SetSendBuffer(context.Context, uint64) (BaseSocketSetSendBufferResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) SetTimestamp(context.Context, bool) (BaseSocketSetTimestampResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) Shutdown(context.Context, ShutdownMode) (DatagramSocketShutdownResult, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) Shutdown2(context.Context, ShutdownMode) (BaseSocketShutdown2Result, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterface) Sync(context.Context) (int32, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxInterfaceRequest) Handle() *zx.Handle
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxStub) Dispatch(fidl.DispatchArgs) (fidl.Message, bool, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxTransitionalBase) NodeGetFlags(context.Context) (int32, uint32, error)
+pkg syscall/zx/posix/socket, method (*DatagramSocketWithCtxTransitionalBase) NodeSetFlags(context.Context, uint32) (int32, error)
+pkg syscall/zx/posix/socket, method (*Empty) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*InterfaceAddresses) ClearAddresses()
+pkg syscall/zx/posix/socket, method (*InterfaceAddresses) ClearFlags()
+pkg syscall/zx/posix/socket, method (*InterfaceAddresses) ClearId()
+pkg syscall/zx/posix/socket, method (*InterfaceAddresses) ClearInterfaceFlags()
+pkg syscall/zx/posix/socket, method (*InterfaceAddresses) ClearName()
+pkg syscall/zx/posix/socket, method (*InterfaceAddresses) GetAddresses() []net.Subnet
+pkg syscall/zx/posix/socket, method (*InterfaceAddresses) GetAddressesWithDefault([]net.Subnet) []net.Subnet
+pkg syscall/zx/posix/socket, method (*InterfaceAddresses) GetFlags() uint32
+pkg syscall/zx/posix/socket, method (*InterfaceAddresses) GetFlagsWithDefault(uint32) uint32
+pkg syscall/zx/posix/socket, method (*InterfaceAddresses) GetId() uint64
+pkg syscall/zx/posix/socket, method (*InterfaceAddresses) GetIdWithDefault(uint64) uint64
+pkg syscall/zx/posix/socket, method (*InterfaceAddresses) GetInterfaceFlags() InterfaceFlags
+pkg syscall/zx/posix/socket, method (*InterfaceAddresses) GetInterfaceFlagsWithDefault(InterfaceFlags) InterfaceFlags
+pkg syscall/zx/posix/socket, method (*InterfaceAddresses) GetName() string
+pkg syscall/zx/posix/socket, method (*InterfaceAddresses) GetNameWithDefault(string) string
+pkg syscall/zx/posix/socket, method (*InterfaceAddresses) GetUnknownData() map[uint64]fidl.UnknownData
+pkg syscall/zx/posix/socket, method (*InterfaceAddresses) HasAddresses() bool
+pkg syscall/zx/posix/socket, method (*InterfaceAddresses) HasFlags() bool
+pkg syscall/zx/posix/socket, method (*InterfaceAddresses) HasId() bool
+pkg syscall/zx/posix/socket, method (*InterfaceAddresses) HasInterfaceFlags() bool
+pkg syscall/zx/posix/socket, method (*InterfaceAddresses) HasName() bool
+pkg syscall/zx/posix/socket, method (*InterfaceAddresses) HasUnknownData() bool
+pkg syscall/zx/posix/socket, method (*InterfaceAddresses) SetAddresses([]net.Subnet)
+pkg syscall/zx/posix/socket, method (*InterfaceAddresses) SetFlags(uint32)
+pkg syscall/zx/posix/socket, method (*InterfaceAddresses) SetId(uint64)
+pkg syscall/zx/posix/socket, method (*InterfaceAddresses) SetInterfaceFlags(InterfaceFlags)
+pkg syscall/zx/posix/socket, method (*InterfaceAddresses) SetName(string)
+pkg syscall/zx/posix/socket, method (*IpMulticastMembership) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*Ipv6MulticastMembership) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*OptionalUint32) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*OptionalUint32) SetUnset(Empty)
+pkg syscall/zx/posix/socket, method (*OptionalUint32) SetValue(uint32)
+pkg syscall/zx/posix/socket, method (*OptionalUint32) Which() I_optionalUint32Tag
+pkg syscall/zx/posix/socket, method (*OptionalUint8) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*OptionalUint8) SetUnset(Empty)
+pkg syscall/zx/posix/socket, method (*OptionalUint8) SetValue(uint8)
+pkg syscall/zx/posix/socket, method (*OptionalUint8) Which() I_optionalUint8Tag
+pkg syscall/zx/posix/socket, method (*ProviderDatagramSocketResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*ProviderDatagramSocketResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*ProviderDatagramSocketResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*ProviderDatagramSocketResult) SetResponse(ProviderDatagramSocketResponse)
+pkg syscall/zx/posix/socket, method (*ProviderDatagramSocketResult) Which() I_providerDatagramSocketResultTag
+pkg syscall/zx/posix/socket, method (*ProviderEventProxy) Handle() *zx.Handle
+pkg syscall/zx/posix/socket, method (*ProviderInterfaceIndexToNameResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*ProviderInterfaceIndexToNameResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*ProviderInterfaceIndexToNameResult) SetErr(int32)
+pkg syscall/zx/posix/socket, method (*ProviderInterfaceIndexToNameResult) SetResponse(ProviderInterfaceIndexToNameResponse)
+pkg syscall/zx/posix/socket, method (*ProviderInterfaceIndexToNameResult) Which() I_providerInterfaceIndexToNameResultTag
+pkg syscall/zx/posix/socket, method (*ProviderInterfaceNameToFlagsResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*ProviderInterfaceNameToFlagsResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*ProviderInterfaceNameToFlagsResult) SetErr(int32)
+pkg syscall/zx/posix/socket, method (*ProviderInterfaceNameToFlagsResult) SetResponse(ProviderInterfaceNameToFlagsResponse)
+pkg syscall/zx/posix/socket, method (*ProviderInterfaceNameToFlagsResult) Which() I_providerInterfaceNameToFlagsResultTag
+pkg syscall/zx/posix/socket, method (*ProviderInterfaceNameToIndexResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*ProviderInterfaceNameToIndexResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*ProviderInterfaceNameToIndexResult) SetErr(int32)
+pkg syscall/zx/posix/socket, method (*ProviderInterfaceNameToIndexResult) SetResponse(ProviderInterfaceNameToIndexResponse)
+pkg syscall/zx/posix/socket, method (*ProviderInterfaceNameToIndexResult) Which() I_providerInterfaceNameToIndexResultTag
+pkg syscall/zx/posix/socket, method (*ProviderStreamSocketResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*ProviderStreamSocketResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*ProviderStreamSocketResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*ProviderStreamSocketResult) SetResponse(ProviderStreamSocketResponse)
+pkg syscall/zx/posix/socket, method (*ProviderStreamSocketResult) Which() I_providerStreamSocketResultTag
+pkg syscall/zx/posix/socket, method (*ProviderWithCtxInterface) DatagramSocket(context.Context, Domain, DatagramSocketProtocol) (ProviderDatagramSocketResult, error)
+pkg syscall/zx/posix/socket, method (*ProviderWithCtxInterface) GetInterfaceAddresses(context.Context) ([]InterfaceAddresses, error)
+pkg syscall/zx/posix/socket, method (*ProviderWithCtxInterface) Handle() *zx.Handle
+pkg syscall/zx/posix/socket, method (*ProviderWithCtxInterface) InterfaceIndexToName(context.Context, uint64) (ProviderInterfaceIndexToNameResult, error)
+pkg syscall/zx/posix/socket, method (*ProviderWithCtxInterface) InterfaceNameToFlags(context.Context, string) (ProviderInterfaceNameToFlagsResult, error)
+pkg syscall/zx/posix/socket, method (*ProviderWithCtxInterface) InterfaceNameToIndex(context.Context, string) (ProviderInterfaceNameToIndexResult, error)
+pkg syscall/zx/posix/socket, method (*ProviderWithCtxInterface) StreamSocket(context.Context, Domain, StreamSocketProtocol) (ProviderStreamSocketResult, error)
+pkg syscall/zx/posix/socket, method (*ProviderWithCtxInterfaceRequest) Handle() *zx.Handle
+pkg syscall/zx/posix/socket, method (*ProviderWithCtxStub) Dispatch(fidl.DispatchArgs) (fidl.Message, bool, error)
+pkg syscall/zx/posix/socket, method (*RecvControlData) GetUnknownData() map[uint64]fidl.UnknownData
+pkg syscall/zx/posix/socket, method (*RecvControlData) HasUnknownData() bool
+pkg syscall/zx/posix/socket, method (*SendControlData) GetUnknownData() map[uint64]fidl.UnknownData
+pkg syscall/zx/posix/socket, method (*SendControlData) HasUnknownData() bool
+pkg syscall/zx/posix/socket, method (*StreamSocketAcceptResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*StreamSocketAcceptResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*StreamSocketAcceptResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*StreamSocketAcceptResult) SetResponse(StreamSocketAcceptResponse)
+pkg syscall/zx/posix/socket, method (*StreamSocketAcceptResult) Which() I_streamSocketAcceptResultTag
+pkg syscall/zx/posix/socket, method (*StreamSocketEventProxy) Handle() *zx.Handle
+pkg syscall/zx/posix/socket, method (*StreamSocketEventProxy) OnOpen(int32, *io.NodeInfo) error
+pkg syscall/zx/posix/socket, method (*StreamSocketGetInfoResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*StreamSocketGetInfoResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*StreamSocketGetInfoResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*StreamSocketGetInfoResult) SetResponse(StreamSocketGetInfoResponse)
+pkg syscall/zx/posix/socket, method (*StreamSocketGetInfoResult) Which() I_streamSocketGetInfoResultTag
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpCongestionResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpCongestionResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpCongestionResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpCongestionResult) SetResponse(StreamSocketGetTcpCongestionResponse)
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpCongestionResult) Which() I_streamSocketGetTcpCongestionResultTag
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpCorkResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpCorkResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpCorkResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpCorkResult) SetResponse(StreamSocketGetTcpCorkResponse)
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpCorkResult) Which() I_streamSocketGetTcpCorkResultTag
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpDeferAcceptResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpDeferAcceptResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpDeferAcceptResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpDeferAcceptResult) SetResponse(StreamSocketGetTcpDeferAcceptResponse)
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpDeferAcceptResult) Which() I_streamSocketGetTcpDeferAcceptResultTag
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpInfoResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpInfoResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpInfoResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpInfoResult) SetResponse(StreamSocketGetTcpInfoResponse)
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpInfoResult) Which() I_streamSocketGetTcpInfoResultTag
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpKeepAliveCountResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpKeepAliveCountResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpKeepAliveCountResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpKeepAliveCountResult) SetResponse(StreamSocketGetTcpKeepAliveCountResponse)
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpKeepAliveCountResult) Which() I_streamSocketGetTcpKeepAliveCountResultTag
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpKeepAliveIdleResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpKeepAliveIdleResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpKeepAliveIdleResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpKeepAliveIdleResult) SetResponse(StreamSocketGetTcpKeepAliveIdleResponse)
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpKeepAliveIdleResult) Which() I_streamSocketGetTcpKeepAliveIdleResultTag
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpKeepAliveIntervalResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpKeepAliveIntervalResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpKeepAliveIntervalResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpKeepAliveIntervalResult) SetResponse(StreamSocketGetTcpKeepAliveIntervalResponse)
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpKeepAliveIntervalResult) Which() I_streamSocketGetTcpKeepAliveIntervalResultTag
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpLingerResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpLingerResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpLingerResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpLingerResult) SetResponse(StreamSocketGetTcpLingerResponse)
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpLingerResult) Which() I_streamSocketGetTcpLingerResultTag
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpMaxSegmentResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpMaxSegmentResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpMaxSegmentResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpMaxSegmentResult) SetResponse(StreamSocketGetTcpMaxSegmentResponse)
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpMaxSegmentResult) Which() I_streamSocketGetTcpMaxSegmentResultTag
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpNoDelayResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpNoDelayResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpNoDelayResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpNoDelayResult) SetResponse(StreamSocketGetTcpNoDelayResponse)
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpNoDelayResult) Which() I_streamSocketGetTcpNoDelayResultTag
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpQuickAckResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpQuickAckResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpQuickAckResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpQuickAckResult) SetResponse(StreamSocketGetTcpQuickAckResponse)
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpQuickAckResult) Which() I_streamSocketGetTcpQuickAckResultTag
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpSynCountResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpSynCountResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpSynCountResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpSynCountResult) SetResponse(StreamSocketGetTcpSynCountResponse)
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpSynCountResult) Which() I_streamSocketGetTcpSynCountResultTag
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpUserTimeoutResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpUserTimeoutResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpUserTimeoutResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpUserTimeoutResult) SetResponse(StreamSocketGetTcpUserTimeoutResponse)
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpUserTimeoutResult) Which() I_streamSocketGetTcpUserTimeoutResultTag
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpWindowClampResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpWindowClampResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpWindowClampResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpWindowClampResult) SetResponse(StreamSocketGetTcpWindowClampResponse)
+pkg syscall/zx/posix/socket, method (*StreamSocketGetTcpWindowClampResult) Which() I_streamSocketGetTcpWindowClampResultTag
+pkg syscall/zx/posix/socket, method (*StreamSocketListenResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*StreamSocketListenResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*StreamSocketListenResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*StreamSocketListenResult) SetResponse(StreamSocketListenResponse)
+pkg syscall/zx/posix/socket, method (*StreamSocketListenResult) Which() I_streamSocketListenResultTag
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpCongestionResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpCongestionResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpCongestionResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpCongestionResult) SetResponse(StreamSocketSetTcpCongestionResponse)
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpCongestionResult) Which() I_streamSocketSetTcpCongestionResultTag
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpCorkResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpCorkResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpCorkResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpCorkResult) SetResponse(StreamSocketSetTcpCorkResponse)
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpCorkResult) Which() I_streamSocketSetTcpCorkResultTag
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpDeferAcceptResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpDeferAcceptResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpDeferAcceptResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpDeferAcceptResult) SetResponse(StreamSocketSetTcpDeferAcceptResponse)
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpDeferAcceptResult) Which() I_streamSocketSetTcpDeferAcceptResultTag
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpKeepAliveCountResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpKeepAliveCountResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpKeepAliveCountResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpKeepAliveCountResult) SetResponse(StreamSocketSetTcpKeepAliveCountResponse)
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpKeepAliveCountResult) Which() I_streamSocketSetTcpKeepAliveCountResultTag
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpKeepAliveIdleResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpKeepAliveIdleResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpKeepAliveIdleResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpKeepAliveIdleResult) SetResponse(StreamSocketSetTcpKeepAliveIdleResponse)
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpKeepAliveIdleResult) Which() I_streamSocketSetTcpKeepAliveIdleResultTag
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpKeepAliveIntervalResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpKeepAliveIntervalResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpKeepAliveIntervalResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpKeepAliveIntervalResult) SetResponse(StreamSocketSetTcpKeepAliveIntervalResponse)
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpKeepAliveIntervalResult) Which() I_streamSocketSetTcpKeepAliveIntervalResultTag
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpLingerResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpLingerResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpLingerResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpLingerResult) SetResponse(StreamSocketSetTcpLingerResponse)
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpLingerResult) Which() I_streamSocketSetTcpLingerResultTag
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpMaxSegmentResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpMaxSegmentResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpMaxSegmentResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpMaxSegmentResult) SetResponse(StreamSocketSetTcpMaxSegmentResponse)
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpMaxSegmentResult) Which() I_streamSocketSetTcpMaxSegmentResultTag
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpNoDelayResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpNoDelayResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpNoDelayResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpNoDelayResult) SetResponse(StreamSocketSetTcpNoDelayResponse)
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpNoDelayResult) Which() I_streamSocketSetTcpNoDelayResultTag
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpQuickAckResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpQuickAckResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpQuickAckResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpQuickAckResult) SetResponse(StreamSocketSetTcpQuickAckResponse)
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpQuickAckResult) Which() I_streamSocketSetTcpQuickAckResultTag
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpSynCountResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpSynCountResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpSynCountResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpSynCountResult) SetResponse(StreamSocketSetTcpSynCountResponse)
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpSynCountResult) Which() I_streamSocketSetTcpSynCountResultTag
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpUserTimeoutResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpUserTimeoutResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpUserTimeoutResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpUserTimeoutResult) SetResponse(StreamSocketSetTcpUserTimeoutResponse)
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpUserTimeoutResult) Which() I_streamSocketSetTcpUserTimeoutResultTag
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpWindowClampResponse) Marshaler() fidl.Marshaler
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpWindowClampResult) Ordinal() uint64
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpWindowClampResult) SetErr(posix.Errno)
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpWindowClampResult) SetResponse(StreamSocketSetTcpWindowClampResponse)
+pkg syscall/zx/posix/socket, method (*StreamSocketSetTcpWindowClampResult) Which() I_streamSocketSetTcpWindowClampResultTag
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) Accept(context.Context, bool) (StreamSocketAcceptResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) AddIpMembership(context.Context, IpMulticastMembership) (BaseSocketAddIpMembershipResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) AddIpv6Membership(context.Context, Ipv6MulticastMembership) (BaseSocketAddIpv6MembershipResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) Bind(context.Context, net.SocketAddress) (BaseSocketBindResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) Clone(context.Context, uint32, io.NodeWithCtxInterfaceRequest) error
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) Close(context.Context) (int32, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) Connect(context.Context, net.SocketAddress) (BaseSocketConnectResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) Describe(context.Context) (io.NodeInfo, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) Disconnect(context.Context) (BaseSocketDisconnectResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) DropIpMembership(context.Context, IpMulticastMembership) (BaseSocketDropIpMembershipResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) DropIpv6Membership(context.Context, Ipv6MulticastMembership) (BaseSocketDropIpv6MembershipResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) ExpectOnOpen(context.Context) (int32, *io.NodeInfo, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) GetAcceptConn(context.Context) (BaseSocketGetAcceptConnResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) GetAttr(context.Context) (int32, io.NodeAttributes, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) GetBindToDevice(context.Context) (BaseSocketGetBindToDeviceResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) GetBroadcast(context.Context) (BaseSocketGetBroadcastResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) GetError(context.Context) (BaseSocketGetErrorResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) GetInfo(context.Context) (StreamSocketGetInfoResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) GetIpMulticastInterface(context.Context) (BaseSocketGetIpMulticastInterfaceResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) GetIpMulticastLoopback(context.Context) (BaseSocketGetIpMulticastLoopbackResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) GetIpMulticastTtl(context.Context) (BaseSocketGetIpMulticastTtlResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) GetIpPacketInfo(context.Context) (BaseSocketGetIpPacketInfoResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) GetIpReceiveTypeOfService(context.Context) (BaseSocketGetIpReceiveTypeOfServiceResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) GetIpTtl(context.Context) (BaseSocketGetIpTtlResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) GetIpTypeOfService(context.Context) (BaseSocketGetIpTypeOfServiceResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) GetIpv6MulticastHops(context.Context) (BaseSocketGetIpv6MulticastHopsResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) GetIpv6MulticastInterface(context.Context) (BaseSocketGetIpv6MulticastInterfaceResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) GetIpv6MulticastLoopback(context.Context) (BaseSocketGetIpv6MulticastLoopbackResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) GetIpv6Only(context.Context) (BaseSocketGetIpv6OnlyResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) GetIpv6ReceiveTrafficClass(context.Context) (BaseSocketGetIpv6ReceiveTrafficClassResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) GetIpv6TrafficClass(context.Context) (BaseSocketGetIpv6TrafficClassResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) GetKeepAlive(context.Context) (BaseSocketGetKeepAliveResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) GetLinger(context.Context) (BaseSocketGetLingerResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) GetNoCheck(context.Context) (BaseSocketGetNoCheckResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) GetOutOfBandInline(context.Context) (BaseSocketGetOutOfBandInlineResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) GetPeerName(context.Context) (BaseSocketGetPeerNameResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) GetReceiveBuffer(context.Context) (BaseSocketGetReceiveBufferResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) GetReuseAddress(context.Context) (BaseSocketGetReuseAddressResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) GetReusePort(context.Context) (BaseSocketGetReusePortResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) GetSendBuffer(context.Context) (BaseSocketGetSendBufferResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) GetSockName(context.Context) (BaseSocketGetSockNameResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) GetTcpCongestion(context.Context) (StreamSocketGetTcpCongestionResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) GetTcpCork(context.Context) (StreamSocketGetTcpCorkResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) GetTcpDeferAccept(context.Context) (StreamSocketGetTcpDeferAcceptResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) GetTcpInfo(context.Context) (StreamSocketGetTcpInfoResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) GetTcpKeepAliveCount(context.Context) (StreamSocketGetTcpKeepAliveCountResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) GetTcpKeepAliveIdle(context.Context) (StreamSocketGetTcpKeepAliveIdleResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) GetTcpKeepAliveInterval(context.Context) (StreamSocketGetTcpKeepAliveIntervalResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) GetTcpLinger(context.Context) (StreamSocketGetTcpLingerResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) GetTcpMaxSegment(context.Context) (StreamSocketGetTcpMaxSegmentResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) GetTcpNoDelay(context.Context) (StreamSocketGetTcpNoDelayResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) GetTcpQuickAck(context.Context) (StreamSocketGetTcpQuickAckResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) GetTcpSynCount(context.Context) (StreamSocketGetTcpSynCountResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) GetTcpUserTimeout(context.Context) (StreamSocketGetTcpUserTimeoutResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) GetTcpWindowClamp(context.Context) (StreamSocketGetTcpWindowClampResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) GetTimestamp(context.Context) (BaseSocketGetTimestampResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) Handle() *zx.Handle
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) Listen(context.Context, int16) (StreamSocketListenResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) NodeGetFlags(context.Context) (int32, uint32, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) NodeSetFlags(context.Context, uint32) (int32, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) SetAttr(context.Context, uint32, io.NodeAttributes) (int32, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) SetBindToDevice(context.Context, string) (BaseSocketSetBindToDeviceResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) SetBroadcast(context.Context, bool) (BaseSocketSetBroadcastResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) SetIpMulticastInterface(context.Context, uint64, net.Ipv4Address) (BaseSocketSetIpMulticastInterfaceResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) SetIpMulticastLoopback(context.Context, bool) (BaseSocketSetIpMulticastLoopbackResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) SetIpMulticastTtl(context.Context, OptionalUint8) (BaseSocketSetIpMulticastTtlResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) SetIpPacketInfo(context.Context, bool) (BaseSocketSetIpPacketInfoResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) SetIpReceiveTypeOfService(context.Context, bool) (BaseSocketSetIpReceiveTypeOfServiceResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) SetIpTtl(context.Context, OptionalUint8) (BaseSocketSetIpTtlResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) SetIpTypeOfService(context.Context, uint8) (BaseSocketSetIpTypeOfServiceResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) SetIpv6MulticastHops(context.Context, OptionalUint8) (BaseSocketSetIpv6MulticastHopsResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) SetIpv6MulticastInterface(context.Context, uint64) (BaseSocketSetIpv6MulticastInterfaceResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) SetIpv6MulticastLoopback(context.Context, bool) (BaseSocketSetIpv6MulticastLoopbackResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) SetIpv6Only(context.Context, bool) (BaseSocketSetIpv6OnlyResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) SetIpv6ReceiveTrafficClass(context.Context, bool) (BaseSocketSetIpv6ReceiveTrafficClassResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) SetIpv6TrafficClass(context.Context, OptionalUint8) (BaseSocketSetIpv6TrafficClassResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) SetKeepAlive(context.Context, bool) (BaseSocketSetKeepAliveResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) SetLinger(context.Context, bool, uint32) (BaseSocketSetLingerResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) SetNoCheck(context.Context, bool) (BaseSocketSetNoCheckResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) SetOutOfBandInline(context.Context, bool) (BaseSocketSetOutOfBandInlineResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) SetReceiveBuffer(context.Context, uint64) (BaseSocketSetReceiveBufferResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) SetReuseAddress(context.Context, bool) (BaseSocketSetReuseAddressResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) SetReusePort(context.Context, bool) (BaseSocketSetReusePortResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) SetSendBuffer(context.Context, uint64) (BaseSocketSetSendBufferResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) SetTcpCongestion(context.Context, TcpCongestionControl) (StreamSocketSetTcpCongestionResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) SetTcpCork(context.Context, bool) (StreamSocketSetTcpCorkResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) SetTcpDeferAccept(context.Context, uint32) (StreamSocketSetTcpDeferAcceptResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) SetTcpKeepAliveCount(context.Context, uint32) (StreamSocketSetTcpKeepAliveCountResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) SetTcpKeepAliveIdle(context.Context, uint32) (StreamSocketSetTcpKeepAliveIdleResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) SetTcpKeepAliveInterval(context.Context, uint32) (StreamSocketSetTcpKeepAliveIntervalResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) SetTcpLinger(context.Context, OptionalUint32) (StreamSocketSetTcpLingerResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) SetTcpMaxSegment(context.Context, uint32) (StreamSocketSetTcpMaxSegmentResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) SetTcpNoDelay(context.Context, bool) (StreamSocketSetTcpNoDelayResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) SetTcpQuickAck(context.Context, bool) (StreamSocketSetTcpQuickAckResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) SetTcpSynCount(context.Context, uint32) (StreamSocketSetTcpSynCountResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) SetTcpUserTimeout(context.Context, uint32) (StreamSocketSetTcpUserTimeoutResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) SetTcpWindowClamp(context.Context, uint32) (StreamSocketSetTcpWindowClampResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) SetTimestamp(context.Context, bool) (BaseSocketSetTimestampResult, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) Shutdown2(context.Context, ShutdownMode) (BaseSocketShutdown2Result, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterface) Sync(context.Context) (int32, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxInterfaceRequest) Handle() *zx.Handle
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxStub) Dispatch(fidl.DispatchArgs) (fidl.Message, bool, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxTransitionalBase) NodeGetFlags(context.Context) (int32, uint32, error)
+pkg syscall/zx/posix/socket, method (*StreamSocketWithCtxTransitionalBase) NodeSetFlags(context.Context, uint32) (int32, error)
+pkg syscall/zx/posix/socket, method (*TcpInfo) ClearCaState()
+pkg syscall/zx/posix/socket, method (*TcpInfo) ClearReorderSeen()
+pkg syscall/zx/posix/socket, method (*TcpInfo) ClearRtoUsec()
+pkg syscall/zx/posix/socket, method (*TcpInfo) ClearRttUsec()
+pkg syscall/zx/posix/socket, method (*TcpInfo) ClearRttVarUsec()
+pkg syscall/zx/posix/socket, method (*TcpInfo) ClearSndCwnd()
+pkg syscall/zx/posix/socket, method (*TcpInfo) ClearSndSsthresh()
+pkg syscall/zx/posix/socket, method (*TcpInfo) ClearState()
+pkg syscall/zx/posix/socket, method (*TcpInfo) GetCaState() TcpCongestionControlState
+pkg syscall/zx/posix/socket, method (*TcpInfo) GetCaStateWithDefault(TcpCongestionControlState) TcpCongestionControlState
+pkg syscall/zx/posix/socket, method (*TcpInfo) GetReorderSeen() bool
+pkg syscall/zx/posix/socket, method (*TcpInfo) GetReorderSeenWithDefault(bool) bool
+pkg syscall/zx/posix/socket, method (*TcpInfo) GetRtoUsec() uint32
+pkg syscall/zx/posix/socket, method (*TcpInfo) GetRtoUsecWithDefault(uint32) uint32
+pkg syscall/zx/posix/socket, method (*TcpInfo) GetRttUsec() uint32
+pkg syscall/zx/posix/socket, method (*TcpInfo) GetRttUsecWithDefault(uint32) uint32
+pkg syscall/zx/posix/socket, method (*TcpInfo) GetRttVarUsec() uint32
+pkg syscall/zx/posix/socket, method (*TcpInfo) GetRttVarUsecWithDefault(uint32) uint32
+pkg syscall/zx/posix/socket, method (*TcpInfo) GetSndCwnd() uint32
+pkg syscall/zx/posix/socket, method (*TcpInfo) GetSndCwndWithDefault(uint32) uint32
+pkg syscall/zx/posix/socket, method (*TcpInfo) GetSndSsthresh() uint32
+pkg syscall/zx/posix/socket, method (*TcpInfo) GetSndSsthreshWithDefault(uint32) uint32
+pkg syscall/zx/posix/socket, method (*TcpInfo) GetState() TcpState
+pkg syscall/zx/posix/socket, method (*TcpInfo) GetStateWithDefault(TcpState) TcpState
+pkg syscall/zx/posix/socket, method (*TcpInfo) GetUnknownData() map[uint64]fidl.UnknownData
+pkg syscall/zx/posix/socket, method (*TcpInfo) HasCaState() bool
+pkg syscall/zx/posix/socket, method (*TcpInfo) HasReorderSeen() bool
+pkg syscall/zx/posix/socket, method (*TcpInfo) HasRtoUsec() bool
+pkg syscall/zx/posix/socket, method (*TcpInfo) HasRttUsec() bool
+pkg syscall/zx/posix/socket, method (*TcpInfo) HasRttVarUsec() bool
+pkg syscall/zx/posix/socket, method (*TcpInfo) HasSndCwnd() bool
+pkg syscall/zx/posix/socket, method (*TcpInfo) HasSndSsthresh() bool
+pkg syscall/zx/posix/socket, method (*TcpInfo) HasState() bool
+pkg syscall/zx/posix/socket, method (*TcpInfo) HasUnknownData() bool
+pkg syscall/zx/posix/socket, method (*TcpInfo) SetCaState(TcpCongestionControlState)
+pkg syscall/zx/posix/socket, method (*TcpInfo) SetReorderSeen(bool)
+pkg syscall/zx/posix/socket, method (*TcpInfo) SetRtoUsec(uint32)
+pkg syscall/zx/posix/socket, method (*TcpInfo) SetRttUsec(uint32)
+pkg syscall/zx/posix/socket, method (*TcpInfo) SetRttVarUsec(uint32)
+pkg syscall/zx/posix/socket, method (*TcpInfo) SetSndCwnd(uint32)
+pkg syscall/zx/posix/socket, method (*TcpInfo) SetSndSsthresh(uint32)
+pkg syscall/zx/posix/socket, method (*TcpInfo) SetState(TcpState)
+pkg syscall/zx/posix/socket, method (DatagramSocketProtocol) I_EnumIsStrict() bool
+pkg syscall/zx/posix/socket, method (DatagramSocketProtocol) I_EnumValues() []DatagramSocketProtocol
+pkg syscall/zx/posix/socket, method (DatagramSocketProtocol) IsUnknown() bool
+pkg syscall/zx/posix/socket, method (DatagramSocketProtocol) String() string
+pkg syscall/zx/posix/socket, method (Domain) I_EnumIsStrict() bool
+pkg syscall/zx/posix/socket, method (Domain) I_EnumValues() []Domain
+pkg syscall/zx/posix/socket, method (Domain) IsUnknown() bool
+pkg syscall/zx/posix/socket, method (Domain) String() string
+pkg syscall/zx/posix/socket, method (InterfaceFlags) ClearBits(InterfaceFlags) InterfaceFlags
+pkg syscall/zx/posix/socket, method (InterfaceFlags) GetUnknownBits() uint64
+pkg syscall/zx/posix/socket, method (InterfaceFlags) HasBits(InterfaceFlags) bool
+pkg syscall/zx/posix/socket, method (InterfaceFlags) HasUnknownBits() bool
+pkg syscall/zx/posix/socket, method (InterfaceFlags) I_BitsIsStrict() bool
+pkg syscall/zx/posix/socket, method (InterfaceFlags) I_BitsMask() InterfaceFlags
+pkg syscall/zx/posix/socket, method (InterfaceFlags) InvertBits() InterfaceFlags
+pkg syscall/zx/posix/socket, method (InterfaceFlags) String() string
+pkg syscall/zx/posix/socket, method (ProviderWithCtxInterfaceRequest) Name() string
+pkg syscall/zx/posix/socket, method (ProviderWithCtxInterfaceRequest) ToChannel() zx.Channel
+pkg syscall/zx/posix/socket, method (RecvMsgFlags) ClearBits(RecvMsgFlags) RecvMsgFlags
+pkg syscall/zx/posix/socket, method (RecvMsgFlags) GetUnknownBits() uint64
+pkg syscall/zx/posix/socket, method (RecvMsgFlags) HasBits(RecvMsgFlags) bool
+pkg syscall/zx/posix/socket, method (RecvMsgFlags) HasUnknownBits() bool
+pkg syscall/zx/posix/socket, method (RecvMsgFlags) I_BitsIsStrict() bool
+pkg syscall/zx/posix/socket, method (RecvMsgFlags) I_BitsMask() RecvMsgFlags
+pkg syscall/zx/posix/socket, method (RecvMsgFlags) InvertBits() RecvMsgFlags
+pkg syscall/zx/posix/socket, method (RecvMsgFlags) String() string
+pkg syscall/zx/posix/socket, method (SendMsgFlags) ClearBits(SendMsgFlags) SendMsgFlags
+pkg syscall/zx/posix/socket, method (SendMsgFlags) GetUnknownBits() uint64
+pkg syscall/zx/posix/socket, method (SendMsgFlags) HasBits(SendMsgFlags) bool
+pkg syscall/zx/posix/socket, method (SendMsgFlags) HasUnknownBits() bool
+pkg syscall/zx/posix/socket, method (SendMsgFlags) I_BitsIsStrict() bool
+pkg syscall/zx/posix/socket, method (SendMsgFlags) I_BitsMask() SendMsgFlags
+pkg syscall/zx/posix/socket, method (SendMsgFlags) InvertBits() SendMsgFlags
+pkg syscall/zx/posix/socket, method (SendMsgFlags) String() string
+pkg syscall/zx/posix/socket, method (ShutdownMode) ClearBits(ShutdownMode) ShutdownMode
+pkg syscall/zx/posix/socket, method (ShutdownMode) GetUnknownBits() uint64
+pkg syscall/zx/posix/socket, method (ShutdownMode) HasBits(ShutdownMode) bool
+pkg syscall/zx/posix/socket, method (ShutdownMode) HasUnknownBits() bool
+pkg syscall/zx/posix/socket, method (ShutdownMode) I_BitsIsStrict() bool
+pkg syscall/zx/posix/socket, method (ShutdownMode) I_BitsMask() ShutdownMode
+pkg syscall/zx/posix/socket, method (ShutdownMode) InvertBits() ShutdownMode
+pkg syscall/zx/posix/socket, method (ShutdownMode) String() string
+pkg syscall/zx/posix/socket, method (StreamSocketProtocol) I_EnumIsStrict() bool
+pkg syscall/zx/posix/socket, method (StreamSocketProtocol) I_EnumValues() []StreamSocketProtocol
+pkg syscall/zx/posix/socket, method (StreamSocketProtocol) IsUnknown() bool
+pkg syscall/zx/posix/socket, method (StreamSocketProtocol) String() string
+pkg syscall/zx/posix/socket, method (TcpCongestionControl) I_EnumIsStrict() bool
+pkg syscall/zx/posix/socket, method (TcpCongestionControl) I_EnumValues() []TcpCongestionControl
+pkg syscall/zx/posix/socket, method (TcpCongestionControl) IsUnknown() bool
+pkg syscall/zx/posix/socket, method (TcpCongestionControl) String() string
+pkg syscall/zx/posix/socket, method (TcpCongestionControlState) I_EnumIsStrict() bool
+pkg syscall/zx/posix/socket, method (TcpCongestionControlState) I_EnumValues() []TcpCongestionControlState
+pkg syscall/zx/posix/socket, method (TcpCongestionControlState) IsUnknown() bool
+pkg syscall/zx/posix/socket, method (TcpCongestionControlState) String() string
+pkg syscall/zx/posix/socket, method (TcpState) I_EnumIsStrict() bool
+pkg syscall/zx/posix/socket, method (TcpState) I_EnumValues() []TcpState
+pkg syscall/zx/posix/socket, method (TcpState) IsUnknown() bool
+pkg syscall/zx/posix/socket, method (TcpState) String() string
+pkg syscall/zx/posix/socket, type BaseSocketAddIpMembershipResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketAddIpMembershipResult struct
+pkg syscall/zx/posix/socket, type BaseSocketAddIpMembershipResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketAddIpMembershipResult struct, Response BaseSocketAddIpMembershipResponse
+pkg syscall/zx/posix/socket, type BaseSocketAddIpMembershipResult struct, embedded I_baseSocketAddIpMembershipResultTag
+pkg syscall/zx/posix/socket, type BaseSocketAddIpv6MembershipResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketAddIpv6MembershipResult struct
+pkg syscall/zx/posix/socket, type BaseSocketAddIpv6MembershipResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketAddIpv6MembershipResult struct, Response BaseSocketAddIpv6MembershipResponse
+pkg syscall/zx/posix/socket, type BaseSocketAddIpv6MembershipResult struct, embedded I_baseSocketAddIpv6MembershipResultTag
+pkg syscall/zx/posix/socket, type BaseSocketBindResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketBindResult struct
+pkg syscall/zx/posix/socket, type BaseSocketBindResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketBindResult struct, Response BaseSocketBindResponse
+pkg syscall/zx/posix/socket, type BaseSocketBindResult struct, embedded I_baseSocketBindResultTag
+pkg syscall/zx/posix/socket, type BaseSocketConnectResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketConnectResult struct
+pkg syscall/zx/posix/socket, type BaseSocketConnectResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketConnectResult struct, Response BaseSocketConnectResponse
+pkg syscall/zx/posix/socket, type BaseSocketConnectResult struct, embedded I_baseSocketConnectResultTag
+pkg syscall/zx/posix/socket, type BaseSocketDisconnectResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketDisconnectResult struct
+pkg syscall/zx/posix/socket, type BaseSocketDisconnectResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketDisconnectResult struct, Response BaseSocketDisconnectResponse
+pkg syscall/zx/posix/socket, type BaseSocketDisconnectResult struct, embedded I_baseSocketDisconnectResultTag
+pkg syscall/zx/posix/socket, type BaseSocketDropIpMembershipResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketDropIpMembershipResult struct
+pkg syscall/zx/posix/socket, type BaseSocketDropIpMembershipResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketDropIpMembershipResult struct, Response BaseSocketDropIpMembershipResponse
+pkg syscall/zx/posix/socket, type BaseSocketDropIpMembershipResult struct, embedded I_baseSocketDropIpMembershipResultTag
+pkg syscall/zx/posix/socket, type BaseSocketDropIpv6MembershipResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketDropIpv6MembershipResult struct
+pkg syscall/zx/posix/socket, type BaseSocketDropIpv6MembershipResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketDropIpv6MembershipResult struct, Response BaseSocketDropIpv6MembershipResponse
+pkg syscall/zx/posix/socket, type BaseSocketDropIpv6MembershipResult struct, embedded I_baseSocketDropIpv6MembershipResultTag
+pkg syscall/zx/posix/socket, type BaseSocketEventProxy struct
+pkg syscall/zx/posix/socket, type BaseSocketEventProxy struct, embedded zx.Channel
+pkg syscall/zx/posix/socket, type BaseSocketGetAcceptConnResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketGetAcceptConnResponse struct, Value bool
+pkg syscall/zx/posix/socket, type BaseSocketGetAcceptConnResult struct
+pkg syscall/zx/posix/socket, type BaseSocketGetAcceptConnResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketGetAcceptConnResult struct, Response BaseSocketGetAcceptConnResponse
+pkg syscall/zx/posix/socket, type BaseSocketGetAcceptConnResult struct, embedded I_baseSocketGetAcceptConnResultTag
+pkg syscall/zx/posix/socket, type BaseSocketGetBindToDeviceResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketGetBindToDeviceResponse struct, Value string
+pkg syscall/zx/posix/socket, type BaseSocketGetBindToDeviceResult struct
+pkg syscall/zx/posix/socket, type BaseSocketGetBindToDeviceResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketGetBindToDeviceResult struct, Response BaseSocketGetBindToDeviceResponse
+pkg syscall/zx/posix/socket, type BaseSocketGetBindToDeviceResult struct, embedded I_baseSocketGetBindToDeviceResultTag
+pkg syscall/zx/posix/socket, type BaseSocketGetBroadcastResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketGetBroadcastResponse struct, Value bool
+pkg syscall/zx/posix/socket, type BaseSocketGetBroadcastResult struct
+pkg syscall/zx/posix/socket, type BaseSocketGetBroadcastResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketGetBroadcastResult struct, Response BaseSocketGetBroadcastResponse
+pkg syscall/zx/posix/socket, type BaseSocketGetBroadcastResult struct, embedded I_baseSocketGetBroadcastResultTag
+pkg syscall/zx/posix/socket, type BaseSocketGetErrorResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketGetErrorResult struct
+pkg syscall/zx/posix/socket, type BaseSocketGetErrorResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketGetErrorResult struct, Response BaseSocketGetErrorResponse
+pkg syscall/zx/posix/socket, type BaseSocketGetErrorResult struct, embedded I_baseSocketGetErrorResultTag
+pkg syscall/zx/posix/socket, type BaseSocketGetIpMulticastInterfaceResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketGetIpMulticastInterfaceResponse struct, Value net.Ipv4Address
+pkg syscall/zx/posix/socket, type BaseSocketGetIpMulticastInterfaceResult struct
+pkg syscall/zx/posix/socket, type BaseSocketGetIpMulticastInterfaceResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketGetIpMulticastInterfaceResult struct, Response BaseSocketGetIpMulticastInterfaceResponse
+pkg syscall/zx/posix/socket, type BaseSocketGetIpMulticastInterfaceResult struct, embedded I_baseSocketGetIpMulticastInterfaceResultTag
+pkg syscall/zx/posix/socket, type BaseSocketGetIpMulticastLoopbackResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketGetIpMulticastLoopbackResponse struct, Value bool
+pkg syscall/zx/posix/socket, type BaseSocketGetIpMulticastLoopbackResult struct
+pkg syscall/zx/posix/socket, type BaseSocketGetIpMulticastLoopbackResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketGetIpMulticastLoopbackResult struct, Response BaseSocketGetIpMulticastLoopbackResponse
+pkg syscall/zx/posix/socket, type BaseSocketGetIpMulticastLoopbackResult struct, embedded I_baseSocketGetIpMulticastLoopbackResultTag
+pkg syscall/zx/posix/socket, type BaseSocketGetIpMulticastTtlResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketGetIpMulticastTtlResponse struct, Value uint8
+pkg syscall/zx/posix/socket, type BaseSocketGetIpMulticastTtlResult struct
+pkg syscall/zx/posix/socket, type BaseSocketGetIpMulticastTtlResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketGetIpMulticastTtlResult struct, Response BaseSocketGetIpMulticastTtlResponse
+pkg syscall/zx/posix/socket, type BaseSocketGetIpMulticastTtlResult struct, embedded I_baseSocketGetIpMulticastTtlResultTag
+pkg syscall/zx/posix/socket, type BaseSocketGetIpPacketInfoResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketGetIpPacketInfoResponse struct, Value bool
+pkg syscall/zx/posix/socket, type BaseSocketGetIpPacketInfoResult struct
+pkg syscall/zx/posix/socket, type BaseSocketGetIpPacketInfoResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketGetIpPacketInfoResult struct, Response BaseSocketGetIpPacketInfoResponse
+pkg syscall/zx/posix/socket, type BaseSocketGetIpPacketInfoResult struct, embedded I_baseSocketGetIpPacketInfoResultTag
+pkg syscall/zx/posix/socket, type BaseSocketGetIpReceiveTypeOfServiceResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketGetIpReceiveTypeOfServiceResponse struct, Value bool
+pkg syscall/zx/posix/socket, type BaseSocketGetIpReceiveTypeOfServiceResult struct
+pkg syscall/zx/posix/socket, type BaseSocketGetIpReceiveTypeOfServiceResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketGetIpReceiveTypeOfServiceResult struct, Response BaseSocketGetIpReceiveTypeOfServiceResponse
+pkg syscall/zx/posix/socket, type BaseSocketGetIpReceiveTypeOfServiceResult struct, embedded I_baseSocketGetIpReceiveTypeOfServiceResultTag
+pkg syscall/zx/posix/socket, type BaseSocketGetIpTtlResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketGetIpTtlResponse struct, Value uint8
+pkg syscall/zx/posix/socket, type BaseSocketGetIpTtlResult struct
+pkg syscall/zx/posix/socket, type BaseSocketGetIpTtlResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketGetIpTtlResult struct, Response BaseSocketGetIpTtlResponse
+pkg syscall/zx/posix/socket, type BaseSocketGetIpTtlResult struct, embedded I_baseSocketGetIpTtlResultTag
+pkg syscall/zx/posix/socket, type BaseSocketGetIpTypeOfServiceResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketGetIpTypeOfServiceResponse struct, Value uint8
+pkg syscall/zx/posix/socket, type BaseSocketGetIpTypeOfServiceResult struct
+pkg syscall/zx/posix/socket, type BaseSocketGetIpTypeOfServiceResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketGetIpTypeOfServiceResult struct, Response BaseSocketGetIpTypeOfServiceResponse
+pkg syscall/zx/posix/socket, type BaseSocketGetIpTypeOfServiceResult struct, embedded I_baseSocketGetIpTypeOfServiceResultTag
+pkg syscall/zx/posix/socket, type BaseSocketGetIpv6MulticastHopsResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketGetIpv6MulticastHopsResponse struct, Value uint8
+pkg syscall/zx/posix/socket, type BaseSocketGetIpv6MulticastHopsResult struct
+pkg syscall/zx/posix/socket, type BaseSocketGetIpv6MulticastHopsResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketGetIpv6MulticastHopsResult struct, Response BaseSocketGetIpv6MulticastHopsResponse
+pkg syscall/zx/posix/socket, type BaseSocketGetIpv6MulticastHopsResult struct, embedded I_baseSocketGetIpv6MulticastHopsResultTag
+pkg syscall/zx/posix/socket, type BaseSocketGetIpv6MulticastInterfaceResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketGetIpv6MulticastInterfaceResponse struct, Value uint64
+pkg syscall/zx/posix/socket, type BaseSocketGetIpv6MulticastInterfaceResult struct
+pkg syscall/zx/posix/socket, type BaseSocketGetIpv6MulticastInterfaceResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketGetIpv6MulticastInterfaceResult struct, Response BaseSocketGetIpv6MulticastInterfaceResponse
+pkg syscall/zx/posix/socket, type BaseSocketGetIpv6MulticastInterfaceResult struct, embedded I_baseSocketGetIpv6MulticastInterfaceResultTag
+pkg syscall/zx/posix/socket, type BaseSocketGetIpv6MulticastLoopbackResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketGetIpv6MulticastLoopbackResponse struct, Value bool
+pkg syscall/zx/posix/socket, type BaseSocketGetIpv6MulticastLoopbackResult struct
+pkg syscall/zx/posix/socket, type BaseSocketGetIpv6MulticastLoopbackResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketGetIpv6MulticastLoopbackResult struct, Response BaseSocketGetIpv6MulticastLoopbackResponse
+pkg syscall/zx/posix/socket, type BaseSocketGetIpv6MulticastLoopbackResult struct, embedded I_baseSocketGetIpv6MulticastLoopbackResultTag
+pkg syscall/zx/posix/socket, type BaseSocketGetIpv6OnlyResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketGetIpv6OnlyResponse struct, Value bool
+pkg syscall/zx/posix/socket, type BaseSocketGetIpv6OnlyResult struct
+pkg syscall/zx/posix/socket, type BaseSocketGetIpv6OnlyResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketGetIpv6OnlyResult struct, Response BaseSocketGetIpv6OnlyResponse
+pkg syscall/zx/posix/socket, type BaseSocketGetIpv6OnlyResult struct, embedded I_baseSocketGetIpv6OnlyResultTag
+pkg syscall/zx/posix/socket, type BaseSocketGetIpv6ReceiveTrafficClassResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketGetIpv6ReceiveTrafficClassResponse struct, Value bool
+pkg syscall/zx/posix/socket, type BaseSocketGetIpv6ReceiveTrafficClassResult struct
+pkg syscall/zx/posix/socket, type BaseSocketGetIpv6ReceiveTrafficClassResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketGetIpv6ReceiveTrafficClassResult struct, Response BaseSocketGetIpv6ReceiveTrafficClassResponse
+pkg syscall/zx/posix/socket, type BaseSocketGetIpv6ReceiveTrafficClassResult struct, embedded I_baseSocketGetIpv6ReceiveTrafficClassResultTag
+pkg syscall/zx/posix/socket, type BaseSocketGetIpv6TrafficClassResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketGetIpv6TrafficClassResponse struct, Value uint8
+pkg syscall/zx/posix/socket, type BaseSocketGetIpv6TrafficClassResult struct
+pkg syscall/zx/posix/socket, type BaseSocketGetIpv6TrafficClassResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketGetIpv6TrafficClassResult struct, Response BaseSocketGetIpv6TrafficClassResponse
+pkg syscall/zx/posix/socket, type BaseSocketGetIpv6TrafficClassResult struct, embedded I_baseSocketGetIpv6TrafficClassResultTag
+pkg syscall/zx/posix/socket, type BaseSocketGetKeepAliveResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketGetKeepAliveResponse struct, Value bool
+pkg syscall/zx/posix/socket, type BaseSocketGetKeepAliveResult struct
+pkg syscall/zx/posix/socket, type BaseSocketGetKeepAliveResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketGetKeepAliveResult struct, Response BaseSocketGetKeepAliveResponse
+pkg syscall/zx/posix/socket, type BaseSocketGetKeepAliveResult struct, embedded I_baseSocketGetKeepAliveResultTag
+pkg syscall/zx/posix/socket, type BaseSocketGetLingerResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketGetLingerResponse struct, LengthSecs uint32
+pkg syscall/zx/posix/socket, type BaseSocketGetLingerResponse struct, Linger bool
+pkg syscall/zx/posix/socket, type BaseSocketGetLingerResult struct
+pkg syscall/zx/posix/socket, type BaseSocketGetLingerResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketGetLingerResult struct, Response BaseSocketGetLingerResponse
+pkg syscall/zx/posix/socket, type BaseSocketGetLingerResult struct, embedded I_baseSocketGetLingerResultTag
+pkg syscall/zx/posix/socket, type BaseSocketGetNoCheckResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketGetNoCheckResponse struct, Value bool
+pkg syscall/zx/posix/socket, type BaseSocketGetNoCheckResult struct
+pkg syscall/zx/posix/socket, type BaseSocketGetNoCheckResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketGetNoCheckResult struct, Response BaseSocketGetNoCheckResponse
+pkg syscall/zx/posix/socket, type BaseSocketGetNoCheckResult struct, embedded I_baseSocketGetNoCheckResultTag
+pkg syscall/zx/posix/socket, type BaseSocketGetOutOfBandInlineResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketGetOutOfBandInlineResponse struct, Value bool
+pkg syscall/zx/posix/socket, type BaseSocketGetOutOfBandInlineResult struct
+pkg syscall/zx/posix/socket, type BaseSocketGetOutOfBandInlineResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketGetOutOfBandInlineResult struct, Response BaseSocketGetOutOfBandInlineResponse
+pkg syscall/zx/posix/socket, type BaseSocketGetOutOfBandInlineResult struct, embedded I_baseSocketGetOutOfBandInlineResultTag
+pkg syscall/zx/posix/socket, type BaseSocketGetPeerNameResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketGetPeerNameResponse struct, Addr net.SocketAddress
+pkg syscall/zx/posix/socket, type BaseSocketGetPeerNameResult struct
+pkg syscall/zx/posix/socket, type BaseSocketGetPeerNameResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketGetPeerNameResult struct, Response BaseSocketGetPeerNameResponse
+pkg syscall/zx/posix/socket, type BaseSocketGetPeerNameResult struct, embedded I_baseSocketGetPeerNameResultTag
+pkg syscall/zx/posix/socket, type BaseSocketGetReceiveBufferResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketGetReceiveBufferResponse struct, ValueBytes uint64
+pkg syscall/zx/posix/socket, type BaseSocketGetReceiveBufferResult struct
+pkg syscall/zx/posix/socket, type BaseSocketGetReceiveBufferResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketGetReceiveBufferResult struct, Response BaseSocketGetReceiveBufferResponse
+pkg syscall/zx/posix/socket, type BaseSocketGetReceiveBufferResult struct, embedded I_baseSocketGetReceiveBufferResultTag
+pkg syscall/zx/posix/socket, type BaseSocketGetReuseAddressResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketGetReuseAddressResponse struct, Value bool
+pkg syscall/zx/posix/socket, type BaseSocketGetReuseAddressResult struct
+pkg syscall/zx/posix/socket, type BaseSocketGetReuseAddressResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketGetReuseAddressResult struct, Response BaseSocketGetReuseAddressResponse
+pkg syscall/zx/posix/socket, type BaseSocketGetReuseAddressResult struct, embedded I_baseSocketGetReuseAddressResultTag
+pkg syscall/zx/posix/socket, type BaseSocketGetReusePortResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketGetReusePortResponse struct, Value bool
+pkg syscall/zx/posix/socket, type BaseSocketGetReusePortResult struct
+pkg syscall/zx/posix/socket, type BaseSocketGetReusePortResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketGetReusePortResult struct, Response BaseSocketGetReusePortResponse
+pkg syscall/zx/posix/socket, type BaseSocketGetReusePortResult struct, embedded I_baseSocketGetReusePortResultTag
+pkg syscall/zx/posix/socket, type BaseSocketGetSendBufferResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketGetSendBufferResponse struct, ValueBytes uint64
+pkg syscall/zx/posix/socket, type BaseSocketGetSendBufferResult struct
+pkg syscall/zx/posix/socket, type BaseSocketGetSendBufferResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketGetSendBufferResult struct, Response BaseSocketGetSendBufferResponse
+pkg syscall/zx/posix/socket, type BaseSocketGetSendBufferResult struct, embedded I_baseSocketGetSendBufferResultTag
+pkg syscall/zx/posix/socket, type BaseSocketGetSockNameResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketGetSockNameResponse struct, Addr net.SocketAddress
+pkg syscall/zx/posix/socket, type BaseSocketGetSockNameResult struct
+pkg syscall/zx/posix/socket, type BaseSocketGetSockNameResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketGetSockNameResult struct, Response BaseSocketGetSockNameResponse
+pkg syscall/zx/posix/socket, type BaseSocketGetSockNameResult struct, embedded I_baseSocketGetSockNameResultTag
+pkg syscall/zx/posix/socket, type BaseSocketGetTimestampResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketGetTimestampResponse struct, Value bool
+pkg syscall/zx/posix/socket, type BaseSocketGetTimestampResult struct
+pkg syscall/zx/posix/socket, type BaseSocketGetTimestampResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketGetTimestampResult struct, Response BaseSocketGetTimestampResponse
+pkg syscall/zx/posix/socket, type BaseSocketGetTimestampResult struct, embedded I_baseSocketGetTimestampResultTag
+pkg syscall/zx/posix/socket, type BaseSocketSetBindToDeviceResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketSetBindToDeviceResult struct
+pkg syscall/zx/posix/socket, type BaseSocketSetBindToDeviceResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketSetBindToDeviceResult struct, Response BaseSocketSetBindToDeviceResponse
+pkg syscall/zx/posix/socket, type BaseSocketSetBindToDeviceResult struct, embedded I_baseSocketSetBindToDeviceResultTag
+pkg syscall/zx/posix/socket, type BaseSocketSetBroadcastResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketSetBroadcastResult struct
+pkg syscall/zx/posix/socket, type BaseSocketSetBroadcastResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketSetBroadcastResult struct, Response BaseSocketSetBroadcastResponse
+pkg syscall/zx/posix/socket, type BaseSocketSetBroadcastResult struct, embedded I_baseSocketSetBroadcastResultTag
+pkg syscall/zx/posix/socket, type BaseSocketSetIpMulticastInterfaceResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketSetIpMulticastInterfaceResult struct
+pkg syscall/zx/posix/socket, type BaseSocketSetIpMulticastInterfaceResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketSetIpMulticastInterfaceResult struct, Response BaseSocketSetIpMulticastInterfaceResponse
+pkg syscall/zx/posix/socket, type BaseSocketSetIpMulticastInterfaceResult struct, embedded I_baseSocketSetIpMulticastInterfaceResultTag
+pkg syscall/zx/posix/socket, type BaseSocketSetIpMulticastLoopbackResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketSetIpMulticastLoopbackResult struct
+pkg syscall/zx/posix/socket, type BaseSocketSetIpMulticastLoopbackResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketSetIpMulticastLoopbackResult struct, Response BaseSocketSetIpMulticastLoopbackResponse
+pkg syscall/zx/posix/socket, type BaseSocketSetIpMulticastLoopbackResult struct, embedded I_baseSocketSetIpMulticastLoopbackResultTag
+pkg syscall/zx/posix/socket, type BaseSocketSetIpMulticastTtlResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketSetIpMulticastTtlResult struct
+pkg syscall/zx/posix/socket, type BaseSocketSetIpMulticastTtlResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketSetIpMulticastTtlResult struct, Response BaseSocketSetIpMulticastTtlResponse
+pkg syscall/zx/posix/socket, type BaseSocketSetIpMulticastTtlResult struct, embedded I_baseSocketSetIpMulticastTtlResultTag
+pkg syscall/zx/posix/socket, type BaseSocketSetIpPacketInfoResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketSetIpPacketInfoResult struct
+pkg syscall/zx/posix/socket, type BaseSocketSetIpPacketInfoResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketSetIpPacketInfoResult struct, Response BaseSocketSetIpPacketInfoResponse
+pkg syscall/zx/posix/socket, type BaseSocketSetIpPacketInfoResult struct, embedded I_baseSocketSetIpPacketInfoResultTag
+pkg syscall/zx/posix/socket, type BaseSocketSetIpReceiveTypeOfServiceResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketSetIpReceiveTypeOfServiceResult struct
+pkg syscall/zx/posix/socket, type BaseSocketSetIpReceiveTypeOfServiceResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketSetIpReceiveTypeOfServiceResult struct, Response BaseSocketSetIpReceiveTypeOfServiceResponse
+pkg syscall/zx/posix/socket, type BaseSocketSetIpReceiveTypeOfServiceResult struct, embedded I_baseSocketSetIpReceiveTypeOfServiceResultTag
+pkg syscall/zx/posix/socket, type BaseSocketSetIpTtlResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketSetIpTtlResult struct
+pkg syscall/zx/posix/socket, type BaseSocketSetIpTtlResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketSetIpTtlResult struct, Response BaseSocketSetIpTtlResponse
+pkg syscall/zx/posix/socket, type BaseSocketSetIpTtlResult struct, embedded I_baseSocketSetIpTtlResultTag
+pkg syscall/zx/posix/socket, type BaseSocketSetIpTypeOfServiceResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketSetIpTypeOfServiceResult struct
+pkg syscall/zx/posix/socket, type BaseSocketSetIpTypeOfServiceResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketSetIpTypeOfServiceResult struct, Response BaseSocketSetIpTypeOfServiceResponse
+pkg syscall/zx/posix/socket, type BaseSocketSetIpTypeOfServiceResult struct, embedded I_baseSocketSetIpTypeOfServiceResultTag
+pkg syscall/zx/posix/socket, type BaseSocketSetIpv6MulticastHopsResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketSetIpv6MulticastHopsResult struct
+pkg syscall/zx/posix/socket, type BaseSocketSetIpv6MulticastHopsResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketSetIpv6MulticastHopsResult struct, Response BaseSocketSetIpv6MulticastHopsResponse
+pkg syscall/zx/posix/socket, type BaseSocketSetIpv6MulticastHopsResult struct, embedded I_baseSocketSetIpv6MulticastHopsResultTag
+pkg syscall/zx/posix/socket, type BaseSocketSetIpv6MulticastInterfaceResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketSetIpv6MulticastInterfaceResult struct
+pkg syscall/zx/posix/socket, type BaseSocketSetIpv6MulticastInterfaceResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketSetIpv6MulticastInterfaceResult struct, Response BaseSocketSetIpv6MulticastInterfaceResponse
+pkg syscall/zx/posix/socket, type BaseSocketSetIpv6MulticastInterfaceResult struct, embedded I_baseSocketSetIpv6MulticastInterfaceResultTag
+pkg syscall/zx/posix/socket, type BaseSocketSetIpv6MulticastLoopbackResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketSetIpv6MulticastLoopbackResult struct
+pkg syscall/zx/posix/socket, type BaseSocketSetIpv6MulticastLoopbackResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketSetIpv6MulticastLoopbackResult struct, Response BaseSocketSetIpv6MulticastLoopbackResponse
+pkg syscall/zx/posix/socket, type BaseSocketSetIpv6MulticastLoopbackResult struct, embedded I_baseSocketSetIpv6MulticastLoopbackResultTag
+pkg syscall/zx/posix/socket, type BaseSocketSetIpv6OnlyResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketSetIpv6OnlyResult struct
+pkg syscall/zx/posix/socket, type BaseSocketSetIpv6OnlyResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketSetIpv6OnlyResult struct, Response BaseSocketSetIpv6OnlyResponse
+pkg syscall/zx/posix/socket, type BaseSocketSetIpv6OnlyResult struct, embedded I_baseSocketSetIpv6OnlyResultTag
+pkg syscall/zx/posix/socket, type BaseSocketSetIpv6ReceiveTrafficClassResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketSetIpv6ReceiveTrafficClassResult struct
+pkg syscall/zx/posix/socket, type BaseSocketSetIpv6ReceiveTrafficClassResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketSetIpv6ReceiveTrafficClassResult struct, Response BaseSocketSetIpv6ReceiveTrafficClassResponse
+pkg syscall/zx/posix/socket, type BaseSocketSetIpv6ReceiveTrafficClassResult struct, embedded I_baseSocketSetIpv6ReceiveTrafficClassResultTag
+pkg syscall/zx/posix/socket, type BaseSocketSetIpv6TrafficClassResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketSetIpv6TrafficClassResult struct
+pkg syscall/zx/posix/socket, type BaseSocketSetIpv6TrafficClassResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketSetIpv6TrafficClassResult struct, Response BaseSocketSetIpv6TrafficClassResponse
+pkg syscall/zx/posix/socket, type BaseSocketSetIpv6TrafficClassResult struct, embedded I_baseSocketSetIpv6TrafficClassResultTag
+pkg syscall/zx/posix/socket, type BaseSocketSetKeepAliveResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketSetKeepAliveResult struct
+pkg syscall/zx/posix/socket, type BaseSocketSetKeepAliveResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketSetKeepAliveResult struct, Response BaseSocketSetKeepAliveResponse
+pkg syscall/zx/posix/socket, type BaseSocketSetKeepAliveResult struct, embedded I_baseSocketSetKeepAliveResultTag
+pkg syscall/zx/posix/socket, type BaseSocketSetLingerResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketSetLingerResult struct
+pkg syscall/zx/posix/socket, type BaseSocketSetLingerResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketSetLingerResult struct, Response BaseSocketSetLingerResponse
+pkg syscall/zx/posix/socket, type BaseSocketSetLingerResult struct, embedded I_baseSocketSetLingerResultTag
+pkg syscall/zx/posix/socket, type BaseSocketSetNoCheckResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketSetNoCheckResult struct
+pkg syscall/zx/posix/socket, type BaseSocketSetNoCheckResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketSetNoCheckResult struct, Response BaseSocketSetNoCheckResponse
+pkg syscall/zx/posix/socket, type BaseSocketSetNoCheckResult struct, embedded I_baseSocketSetNoCheckResultTag
+pkg syscall/zx/posix/socket, type BaseSocketSetOutOfBandInlineResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketSetOutOfBandInlineResult struct
+pkg syscall/zx/posix/socket, type BaseSocketSetOutOfBandInlineResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketSetOutOfBandInlineResult struct, Response BaseSocketSetOutOfBandInlineResponse
+pkg syscall/zx/posix/socket, type BaseSocketSetOutOfBandInlineResult struct, embedded I_baseSocketSetOutOfBandInlineResultTag
+pkg syscall/zx/posix/socket, type BaseSocketSetReceiveBufferResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketSetReceiveBufferResult struct
+pkg syscall/zx/posix/socket, type BaseSocketSetReceiveBufferResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketSetReceiveBufferResult struct, Response BaseSocketSetReceiveBufferResponse
+pkg syscall/zx/posix/socket, type BaseSocketSetReceiveBufferResult struct, embedded I_baseSocketSetReceiveBufferResultTag
+pkg syscall/zx/posix/socket, type BaseSocketSetReuseAddressResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketSetReuseAddressResult struct
+pkg syscall/zx/posix/socket, type BaseSocketSetReuseAddressResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketSetReuseAddressResult struct, Response BaseSocketSetReuseAddressResponse
+pkg syscall/zx/posix/socket, type BaseSocketSetReuseAddressResult struct, embedded I_baseSocketSetReuseAddressResultTag
+pkg syscall/zx/posix/socket, type BaseSocketSetReusePortResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketSetReusePortResult struct
+pkg syscall/zx/posix/socket, type BaseSocketSetReusePortResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketSetReusePortResult struct, Response BaseSocketSetReusePortResponse
+pkg syscall/zx/posix/socket, type BaseSocketSetReusePortResult struct, embedded I_baseSocketSetReusePortResultTag
+pkg syscall/zx/posix/socket, type BaseSocketSetSendBufferResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketSetSendBufferResult struct
+pkg syscall/zx/posix/socket, type BaseSocketSetSendBufferResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketSetSendBufferResult struct, Response BaseSocketSetSendBufferResponse
+pkg syscall/zx/posix/socket, type BaseSocketSetSendBufferResult struct, embedded I_baseSocketSetSendBufferResultTag
+pkg syscall/zx/posix/socket, type BaseSocketSetTimestampResponse struct
+pkg syscall/zx/posix/socket, type BaseSocketSetTimestampResult struct
+pkg syscall/zx/posix/socket, type BaseSocketSetTimestampResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketSetTimestampResult struct, Response BaseSocketSetTimestampResponse
+pkg syscall/zx/posix/socket, type BaseSocketSetTimestampResult struct, embedded I_baseSocketSetTimestampResultTag
+pkg syscall/zx/posix/socket, type BaseSocketShutdown2Response struct
+pkg syscall/zx/posix/socket, type BaseSocketShutdown2Result struct
+pkg syscall/zx/posix/socket, type BaseSocketShutdown2Result struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type BaseSocketShutdown2Result struct, Response BaseSocketShutdown2Response
+pkg syscall/zx/posix/socket, type BaseSocketShutdown2Result struct, embedded I_baseSocketShutdown2ResultTag
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface { AddIpMembership, AddIpv6Membership, Bind, Clone, Close, Connect, Describe, Disconnect, DropIpMembership, DropIpv6Membership, GetAcceptConn, GetAttr, GetBindToDevice, GetBroadcast, GetError, GetIpMulticastInterface, GetIpMulticastLoopback, GetIpMulticastTtl, GetIpPacketInfo, GetIpReceiveTypeOfService, GetIpTtl, GetIpTypeOfService, GetIpv6MulticastHops, GetIpv6MulticastInterface, GetIpv6MulticastLoopback, GetIpv6Only, GetIpv6ReceiveTrafficClass, GetIpv6TrafficClass, GetKeepAlive, GetLinger, GetNoCheck, GetOutOfBandInline, GetPeerName, GetReceiveBuffer, GetReuseAddress, GetReusePort, GetSendBuffer, GetSockName, GetTimestamp, NodeGetFlags, NodeSetFlags, SetAttr, SetBindToDevice, SetBroadcast, SetIpMulticastInterface, SetIpMulticastLoopback, SetIpMulticastTtl, SetIpPacketInfo, SetIpReceiveTypeOfService, SetIpTtl, SetIpTypeOfService, SetIpv6MulticastHops, SetIpv6MulticastInterface, SetIpv6MulticastLoopback, SetIpv6Only, SetIpv6ReceiveTrafficClass, SetIpv6TrafficClass, SetKeepAlive, SetLinger, SetNoCheck, SetOutOfBandInline, SetReceiveBuffer, SetReuseAddress, SetReusePort, SetSendBuffer, SetTimestamp, Shutdown2, Sync }
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, AddIpMembership(context.Context, IpMulticastMembership) (BaseSocketAddIpMembershipResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, AddIpv6Membership(context.Context, Ipv6MulticastMembership) (BaseSocketAddIpv6MembershipResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, Bind(context.Context, net.SocketAddress) (BaseSocketBindResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, Clone(context.Context, uint32, io.NodeWithCtxInterfaceRequest) error
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, Close(context.Context) (int32, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, Connect(context.Context, net.SocketAddress) (BaseSocketConnectResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, Describe(context.Context) (io.NodeInfo, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, Disconnect(context.Context) (BaseSocketDisconnectResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, DropIpMembership(context.Context, IpMulticastMembership) (BaseSocketDropIpMembershipResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, DropIpv6Membership(context.Context, Ipv6MulticastMembership) (BaseSocketDropIpv6MembershipResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, GetAcceptConn(context.Context) (BaseSocketGetAcceptConnResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, GetAttr(context.Context) (int32, io.NodeAttributes, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, GetBindToDevice(context.Context) (BaseSocketGetBindToDeviceResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, GetBroadcast(context.Context) (BaseSocketGetBroadcastResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, GetError(context.Context) (BaseSocketGetErrorResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, GetIpMulticastInterface(context.Context) (BaseSocketGetIpMulticastInterfaceResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, GetIpMulticastLoopback(context.Context) (BaseSocketGetIpMulticastLoopbackResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, GetIpMulticastTtl(context.Context) (BaseSocketGetIpMulticastTtlResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, GetIpPacketInfo(context.Context) (BaseSocketGetIpPacketInfoResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, GetIpReceiveTypeOfService(context.Context) (BaseSocketGetIpReceiveTypeOfServiceResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, GetIpTtl(context.Context) (BaseSocketGetIpTtlResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, GetIpTypeOfService(context.Context) (BaseSocketGetIpTypeOfServiceResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, GetIpv6MulticastHops(context.Context) (BaseSocketGetIpv6MulticastHopsResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, GetIpv6MulticastInterface(context.Context) (BaseSocketGetIpv6MulticastInterfaceResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, GetIpv6MulticastLoopback(context.Context) (BaseSocketGetIpv6MulticastLoopbackResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, GetIpv6Only(context.Context) (BaseSocketGetIpv6OnlyResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, GetIpv6ReceiveTrafficClass(context.Context) (BaseSocketGetIpv6ReceiveTrafficClassResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, GetIpv6TrafficClass(context.Context) (BaseSocketGetIpv6TrafficClassResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, GetKeepAlive(context.Context) (BaseSocketGetKeepAliveResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, GetLinger(context.Context) (BaseSocketGetLingerResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, GetNoCheck(context.Context) (BaseSocketGetNoCheckResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, GetOutOfBandInline(context.Context) (BaseSocketGetOutOfBandInlineResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, GetPeerName(context.Context) (BaseSocketGetPeerNameResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, GetReceiveBuffer(context.Context) (BaseSocketGetReceiveBufferResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, GetReuseAddress(context.Context) (BaseSocketGetReuseAddressResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, GetReusePort(context.Context) (BaseSocketGetReusePortResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, GetSendBuffer(context.Context) (BaseSocketGetSendBufferResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, GetSockName(context.Context) (BaseSocketGetSockNameResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, GetTimestamp(context.Context) (BaseSocketGetTimestampResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, NodeGetFlags(context.Context) (int32, uint32, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, NodeSetFlags(context.Context, uint32) (int32, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, SetAttr(context.Context, uint32, io.NodeAttributes) (int32, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, SetBindToDevice(context.Context, string) (BaseSocketSetBindToDeviceResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, SetBroadcast(context.Context, bool) (BaseSocketSetBroadcastResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, SetIpMulticastInterface(context.Context, uint64, net.Ipv4Address) (BaseSocketSetIpMulticastInterfaceResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, SetIpMulticastLoopback(context.Context, bool) (BaseSocketSetIpMulticastLoopbackResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, SetIpMulticastTtl(context.Context, OptionalUint8) (BaseSocketSetIpMulticastTtlResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, SetIpPacketInfo(context.Context, bool) (BaseSocketSetIpPacketInfoResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, SetIpReceiveTypeOfService(context.Context, bool) (BaseSocketSetIpReceiveTypeOfServiceResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, SetIpTtl(context.Context, OptionalUint8) (BaseSocketSetIpTtlResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, SetIpTypeOfService(context.Context, uint8) (BaseSocketSetIpTypeOfServiceResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, SetIpv6MulticastHops(context.Context, OptionalUint8) (BaseSocketSetIpv6MulticastHopsResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, SetIpv6MulticastInterface(context.Context, uint64) (BaseSocketSetIpv6MulticastInterfaceResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, SetIpv6MulticastLoopback(context.Context, bool) (BaseSocketSetIpv6MulticastLoopbackResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, SetIpv6Only(context.Context, bool) (BaseSocketSetIpv6OnlyResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, SetIpv6ReceiveTrafficClass(context.Context, bool) (BaseSocketSetIpv6ReceiveTrafficClassResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, SetIpv6TrafficClass(context.Context, OptionalUint8) (BaseSocketSetIpv6TrafficClassResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, SetKeepAlive(context.Context, bool) (BaseSocketSetKeepAliveResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, SetLinger(context.Context, bool, uint32) (BaseSocketSetLingerResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, SetNoCheck(context.Context, bool) (BaseSocketSetNoCheckResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, SetOutOfBandInline(context.Context, bool) (BaseSocketSetOutOfBandInlineResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, SetReceiveBuffer(context.Context, uint64) (BaseSocketSetReceiveBufferResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, SetReuseAddress(context.Context, bool) (BaseSocketSetReuseAddressResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, SetReusePort(context.Context, bool) (BaseSocketSetReusePortResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, SetSendBuffer(context.Context, uint64) (BaseSocketSetSendBufferResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, SetTimestamp(context.Context, bool) (BaseSocketSetTimestampResult, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, Shutdown2(context.Context, ShutdownMode) (BaseSocketShutdown2Result, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtx interface, Sync(context.Context) (int32, error)
+pkg syscall/zx/posix/socket, type BaseSocketWithCtxInterface struct
+pkg syscall/zx/posix/socket, type BaseSocketWithCtxInterface struct, embedded zx.Channel
+pkg syscall/zx/posix/socket, type BaseSocketWithCtxInterfaceRequest struct
+pkg syscall/zx/posix/socket, type BaseSocketWithCtxInterfaceRequest struct, embedded zx.Channel
+pkg syscall/zx/posix/socket, type BaseSocketWithCtxStub struct
+pkg syscall/zx/posix/socket, type BaseSocketWithCtxStub struct, Impl BaseSocketWithCtx
+pkg syscall/zx/posix/socket, type BaseSocketWithCtxTransitionalBase struct
+pkg syscall/zx/posix/socket, type DatagramSocketEventProxy struct
+pkg syscall/zx/posix/socket, type DatagramSocketEventProxy struct, embedded zx.Channel
+pkg syscall/zx/posix/socket, type DatagramSocketGetInfoResponse struct
+pkg syscall/zx/posix/socket, type DatagramSocketGetInfoResponse struct, Domain Domain
+pkg syscall/zx/posix/socket, type DatagramSocketGetInfoResponse struct, Proto DatagramSocketProtocol
+pkg syscall/zx/posix/socket, type DatagramSocketGetInfoResult struct
+pkg syscall/zx/posix/socket, type DatagramSocketGetInfoResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type DatagramSocketGetInfoResult struct, Response DatagramSocketGetInfoResponse
+pkg syscall/zx/posix/socket, type DatagramSocketGetInfoResult struct, embedded I_datagramSocketGetInfoResultTag
+pkg syscall/zx/posix/socket, type DatagramSocketProtocol uint32
+pkg syscall/zx/posix/socket, type DatagramSocketRecvMsgResponse struct
+pkg syscall/zx/posix/socket, type DatagramSocketRecvMsgResponse struct, Addr *net.SocketAddress
+pkg syscall/zx/posix/socket, type DatagramSocketRecvMsgResponse struct, Control RecvControlData
+pkg syscall/zx/posix/socket, type DatagramSocketRecvMsgResponse struct, Data []uint8
+pkg syscall/zx/posix/socket, type DatagramSocketRecvMsgResponse struct, Truncated uint32
+pkg syscall/zx/posix/socket, type DatagramSocketRecvMsgResult struct
+pkg syscall/zx/posix/socket, type DatagramSocketRecvMsgResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type DatagramSocketRecvMsgResult struct, Response DatagramSocketRecvMsgResponse
+pkg syscall/zx/posix/socket, type DatagramSocketRecvMsgResult struct, embedded I_datagramSocketRecvMsgResultTag
+pkg syscall/zx/posix/socket, type DatagramSocketSendMsgResponse struct
+pkg syscall/zx/posix/socket, type DatagramSocketSendMsgResponse struct, Len int64
+pkg syscall/zx/posix/socket, type DatagramSocketSendMsgResult struct
+pkg syscall/zx/posix/socket, type DatagramSocketSendMsgResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type DatagramSocketSendMsgResult struct, Response DatagramSocketSendMsgResponse
+pkg syscall/zx/posix/socket, type DatagramSocketSendMsgResult struct, embedded I_datagramSocketSendMsgResultTag
+pkg syscall/zx/posix/socket, type DatagramSocketShutdownResponse struct
+pkg syscall/zx/posix/socket, type DatagramSocketShutdownResult struct
+pkg syscall/zx/posix/socket, type DatagramSocketShutdownResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type DatagramSocketShutdownResult struct, Response DatagramSocketShutdownResponse
+pkg syscall/zx/posix/socket, type DatagramSocketShutdownResult struct, embedded I_datagramSocketShutdownResultTag
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface { AddIpMembership, AddIpv6Membership, Bind, Clone, Close, Connect, Describe, Disconnect, DropIpMembership, DropIpv6Membership, GetAcceptConn, GetAttr, GetBindToDevice, GetBroadcast, GetError, GetInfo, GetIpMulticastInterface, GetIpMulticastLoopback, GetIpMulticastTtl, GetIpPacketInfo, GetIpReceiveTypeOfService, GetIpTtl, GetIpTypeOfService, GetIpv6MulticastHops, GetIpv6MulticastInterface, GetIpv6MulticastLoopback, GetIpv6Only, GetIpv6ReceiveTrafficClass, GetIpv6TrafficClass, GetKeepAlive, GetLinger, GetNoCheck, GetOutOfBandInline, GetPeerName, GetReceiveBuffer, GetReuseAddress, GetReusePort, GetSendBuffer, GetSockName, GetTimestamp, NodeGetFlags, NodeSetFlags, RecvMsg, SendMsg, SetAttr, SetBindToDevice, SetBroadcast, SetIpMulticastInterface, SetIpMulticastLoopback, SetIpMulticastTtl, SetIpPacketInfo, SetIpReceiveTypeOfService, SetIpTtl, SetIpTypeOfService, SetIpv6MulticastHops, SetIpv6MulticastInterface, SetIpv6MulticastLoopback, SetIpv6Only, SetIpv6ReceiveTrafficClass, SetIpv6TrafficClass, SetKeepAlive, SetLinger, SetNoCheck, SetOutOfBandInline, SetReceiveBuffer, SetReuseAddress, SetReusePort, SetSendBuffer, SetTimestamp, Shutdown, Shutdown2, Sync }
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, AddIpMembership(context.Context, IpMulticastMembership) (BaseSocketAddIpMembershipResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, AddIpv6Membership(context.Context, Ipv6MulticastMembership) (BaseSocketAddIpv6MembershipResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, Bind(context.Context, net.SocketAddress) (BaseSocketBindResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, Clone(context.Context, uint32, io.NodeWithCtxInterfaceRequest) error
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, Close(context.Context) (int32, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, Connect(context.Context, net.SocketAddress) (BaseSocketConnectResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, Describe(context.Context) (io.NodeInfo, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, Disconnect(context.Context) (BaseSocketDisconnectResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, DropIpMembership(context.Context, IpMulticastMembership) (BaseSocketDropIpMembershipResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, DropIpv6Membership(context.Context, Ipv6MulticastMembership) (BaseSocketDropIpv6MembershipResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, GetAcceptConn(context.Context) (BaseSocketGetAcceptConnResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, GetAttr(context.Context) (int32, io.NodeAttributes, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, GetBindToDevice(context.Context) (BaseSocketGetBindToDeviceResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, GetBroadcast(context.Context) (BaseSocketGetBroadcastResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, GetError(context.Context) (BaseSocketGetErrorResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, GetInfo(context.Context) (DatagramSocketGetInfoResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, GetIpMulticastInterface(context.Context) (BaseSocketGetIpMulticastInterfaceResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, GetIpMulticastLoopback(context.Context) (BaseSocketGetIpMulticastLoopbackResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, GetIpMulticastTtl(context.Context) (BaseSocketGetIpMulticastTtlResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, GetIpPacketInfo(context.Context) (BaseSocketGetIpPacketInfoResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, GetIpReceiveTypeOfService(context.Context) (BaseSocketGetIpReceiveTypeOfServiceResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, GetIpTtl(context.Context) (BaseSocketGetIpTtlResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, GetIpTypeOfService(context.Context) (BaseSocketGetIpTypeOfServiceResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, GetIpv6MulticastHops(context.Context) (BaseSocketGetIpv6MulticastHopsResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, GetIpv6MulticastInterface(context.Context) (BaseSocketGetIpv6MulticastInterfaceResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, GetIpv6MulticastLoopback(context.Context) (BaseSocketGetIpv6MulticastLoopbackResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, GetIpv6Only(context.Context) (BaseSocketGetIpv6OnlyResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, GetIpv6ReceiveTrafficClass(context.Context) (BaseSocketGetIpv6ReceiveTrafficClassResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, GetIpv6TrafficClass(context.Context) (BaseSocketGetIpv6TrafficClassResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, GetKeepAlive(context.Context) (BaseSocketGetKeepAliveResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, GetLinger(context.Context) (BaseSocketGetLingerResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, GetNoCheck(context.Context) (BaseSocketGetNoCheckResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, GetOutOfBandInline(context.Context) (BaseSocketGetOutOfBandInlineResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, GetPeerName(context.Context) (BaseSocketGetPeerNameResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, GetReceiveBuffer(context.Context) (BaseSocketGetReceiveBufferResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, GetReuseAddress(context.Context) (BaseSocketGetReuseAddressResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, GetReusePort(context.Context) (BaseSocketGetReusePortResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, GetSendBuffer(context.Context) (BaseSocketGetSendBufferResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, GetSockName(context.Context) (BaseSocketGetSockNameResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, GetTimestamp(context.Context) (BaseSocketGetTimestampResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, NodeGetFlags(context.Context) (int32, uint32, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, NodeSetFlags(context.Context, uint32) (int32, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, RecvMsg(context.Context, bool, uint32, bool, RecvMsgFlags) (DatagramSocketRecvMsgResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, SendMsg(context.Context, *net.SocketAddress, []uint8, SendControlData, SendMsgFlags) (DatagramSocketSendMsgResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, SetAttr(context.Context, uint32, io.NodeAttributes) (int32, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, SetBindToDevice(context.Context, string) (BaseSocketSetBindToDeviceResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, SetBroadcast(context.Context, bool) (BaseSocketSetBroadcastResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, SetIpMulticastInterface(context.Context, uint64, net.Ipv4Address) (BaseSocketSetIpMulticastInterfaceResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, SetIpMulticastLoopback(context.Context, bool) (BaseSocketSetIpMulticastLoopbackResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, SetIpMulticastTtl(context.Context, OptionalUint8) (BaseSocketSetIpMulticastTtlResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, SetIpPacketInfo(context.Context, bool) (BaseSocketSetIpPacketInfoResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, SetIpReceiveTypeOfService(context.Context, bool) (BaseSocketSetIpReceiveTypeOfServiceResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, SetIpTtl(context.Context, OptionalUint8) (BaseSocketSetIpTtlResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, SetIpTypeOfService(context.Context, uint8) (BaseSocketSetIpTypeOfServiceResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, SetIpv6MulticastHops(context.Context, OptionalUint8) (BaseSocketSetIpv6MulticastHopsResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, SetIpv6MulticastInterface(context.Context, uint64) (BaseSocketSetIpv6MulticastInterfaceResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, SetIpv6MulticastLoopback(context.Context, bool) (BaseSocketSetIpv6MulticastLoopbackResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, SetIpv6Only(context.Context, bool) (BaseSocketSetIpv6OnlyResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, SetIpv6ReceiveTrafficClass(context.Context, bool) (BaseSocketSetIpv6ReceiveTrafficClassResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, SetIpv6TrafficClass(context.Context, OptionalUint8) (BaseSocketSetIpv6TrafficClassResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, SetKeepAlive(context.Context, bool) (BaseSocketSetKeepAliveResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, SetLinger(context.Context, bool, uint32) (BaseSocketSetLingerResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, SetNoCheck(context.Context, bool) (BaseSocketSetNoCheckResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, SetOutOfBandInline(context.Context, bool) (BaseSocketSetOutOfBandInlineResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, SetReceiveBuffer(context.Context, uint64) (BaseSocketSetReceiveBufferResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, SetReuseAddress(context.Context, bool) (BaseSocketSetReuseAddressResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, SetReusePort(context.Context, bool) (BaseSocketSetReusePortResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, SetSendBuffer(context.Context, uint64) (BaseSocketSetSendBufferResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, SetTimestamp(context.Context, bool) (BaseSocketSetTimestampResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, Shutdown(context.Context, ShutdownMode) (DatagramSocketShutdownResult, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, Shutdown2(context.Context, ShutdownMode) (BaseSocketShutdown2Result, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtx interface, Sync(context.Context) (int32, error)
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtxInterface struct
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtxInterface struct, embedded zx.Channel
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtxInterfaceRequest struct
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtxInterfaceRequest struct, embedded zx.Channel
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtxStub struct
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtxStub struct, Impl DatagramSocketWithCtx
+pkg syscall/zx/posix/socket, type DatagramSocketWithCtxTransitionalBase struct
+pkg syscall/zx/posix/socket, type Domain int16
+pkg syscall/zx/posix/socket, type Empty struct
+pkg syscall/zx/posix/socket, type I_baseSocketAddIpMembershipResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketAddIpv6MembershipResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketBindResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketConnectResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketDisconnectResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketDropIpMembershipResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketDropIpv6MembershipResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketGetAcceptConnResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketGetBindToDeviceResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketGetBroadcastResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketGetErrorResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketGetIpMulticastInterfaceResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketGetIpMulticastLoopbackResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketGetIpMulticastTtlResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketGetIpPacketInfoResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketGetIpReceiveTypeOfServiceResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketGetIpTtlResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketGetIpTypeOfServiceResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketGetIpv6MulticastHopsResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketGetIpv6MulticastInterfaceResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketGetIpv6MulticastLoopbackResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketGetIpv6OnlyResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketGetIpv6ReceiveTrafficClassResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketGetIpv6TrafficClassResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketGetKeepAliveResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketGetLingerResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketGetNoCheckResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketGetOutOfBandInlineResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketGetPeerNameResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketGetReceiveBufferResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketGetReuseAddressResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketGetReusePortResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketGetSendBufferResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketGetSockNameResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketGetTimestampResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketSetBindToDeviceResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketSetBroadcastResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketSetIpMulticastInterfaceResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketSetIpMulticastLoopbackResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketSetIpMulticastTtlResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketSetIpPacketInfoResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketSetIpReceiveTypeOfServiceResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketSetIpTtlResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketSetIpTypeOfServiceResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketSetIpv6MulticastHopsResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketSetIpv6MulticastInterfaceResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketSetIpv6MulticastLoopbackResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketSetIpv6OnlyResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketSetIpv6ReceiveTrafficClassResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketSetIpv6TrafficClassResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketSetKeepAliveResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketSetLingerResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketSetNoCheckResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketSetOutOfBandInlineResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketSetReceiveBufferResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketSetReuseAddressResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketSetReusePortResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketSetSendBufferResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketSetTimestampResultTag uint64
+pkg syscall/zx/posix/socket, type I_baseSocketShutdown2ResultTag uint64
+pkg syscall/zx/posix/socket, type I_datagramSocketGetInfoResultTag uint64
+pkg syscall/zx/posix/socket, type I_datagramSocketRecvMsgResultTag uint64
+pkg syscall/zx/posix/socket, type I_datagramSocketSendMsgResultTag uint64
+pkg syscall/zx/posix/socket, type I_datagramSocketShutdownResultTag uint64
+pkg syscall/zx/posix/socket, type I_optionalUint32Tag uint64
+pkg syscall/zx/posix/socket, type I_optionalUint8Tag uint64
+pkg syscall/zx/posix/socket, type I_providerDatagramSocketResultTag uint64
+pkg syscall/zx/posix/socket, type I_providerInterfaceIndexToNameResultTag uint64
+pkg syscall/zx/posix/socket, type I_providerInterfaceNameToFlagsResultTag uint64
+pkg syscall/zx/posix/socket, type I_providerInterfaceNameToIndexResultTag uint64
+pkg syscall/zx/posix/socket, type I_providerStreamSocketResultTag uint64
+pkg syscall/zx/posix/socket, type I_streamSocketAcceptResultTag uint64
+pkg syscall/zx/posix/socket, type I_streamSocketGetInfoResultTag uint64
+pkg syscall/zx/posix/socket, type I_streamSocketGetTcpCongestionResultTag uint64
+pkg syscall/zx/posix/socket, type I_streamSocketGetTcpCorkResultTag uint64
+pkg syscall/zx/posix/socket, type I_streamSocketGetTcpDeferAcceptResultTag uint64
+pkg syscall/zx/posix/socket, type I_streamSocketGetTcpInfoResultTag uint64
+pkg syscall/zx/posix/socket, type I_streamSocketGetTcpKeepAliveCountResultTag uint64
+pkg syscall/zx/posix/socket, type I_streamSocketGetTcpKeepAliveIdleResultTag uint64
+pkg syscall/zx/posix/socket, type I_streamSocketGetTcpKeepAliveIntervalResultTag uint64
+pkg syscall/zx/posix/socket, type I_streamSocketGetTcpLingerResultTag uint64
+pkg syscall/zx/posix/socket, type I_streamSocketGetTcpMaxSegmentResultTag uint64
+pkg syscall/zx/posix/socket, type I_streamSocketGetTcpNoDelayResultTag uint64
+pkg syscall/zx/posix/socket, type I_streamSocketGetTcpQuickAckResultTag uint64
+pkg syscall/zx/posix/socket, type I_streamSocketGetTcpSynCountResultTag uint64
+pkg syscall/zx/posix/socket, type I_streamSocketGetTcpUserTimeoutResultTag uint64
+pkg syscall/zx/posix/socket, type I_streamSocketGetTcpWindowClampResultTag uint64
+pkg syscall/zx/posix/socket, type I_streamSocketListenResultTag uint64
+pkg syscall/zx/posix/socket, type I_streamSocketSetTcpCongestionResultTag uint64
+pkg syscall/zx/posix/socket, type I_streamSocketSetTcpCorkResultTag uint64
+pkg syscall/zx/posix/socket, type I_streamSocketSetTcpDeferAcceptResultTag uint64
+pkg syscall/zx/posix/socket, type I_streamSocketSetTcpKeepAliveCountResultTag uint64
+pkg syscall/zx/posix/socket, type I_streamSocketSetTcpKeepAliveIdleResultTag uint64
+pkg syscall/zx/posix/socket, type I_streamSocketSetTcpKeepAliveIntervalResultTag uint64
+pkg syscall/zx/posix/socket, type I_streamSocketSetTcpLingerResultTag uint64
+pkg syscall/zx/posix/socket, type I_streamSocketSetTcpMaxSegmentResultTag uint64
+pkg syscall/zx/posix/socket, type I_streamSocketSetTcpNoDelayResultTag uint64
+pkg syscall/zx/posix/socket, type I_streamSocketSetTcpQuickAckResultTag uint64
+pkg syscall/zx/posix/socket, type I_streamSocketSetTcpSynCountResultTag uint64
+pkg syscall/zx/posix/socket, type I_streamSocketSetTcpUserTimeoutResultTag uint64
+pkg syscall/zx/posix/socket, type I_streamSocketSetTcpWindowClampResultTag uint64
+pkg syscall/zx/posix/socket, type InterfaceAddresses struct
+pkg syscall/zx/posix/socket, type InterfaceAddresses struct, Addresses []net.Subnet
+pkg syscall/zx/posix/socket, type InterfaceAddresses struct, AddressesPresent bool
+pkg syscall/zx/posix/socket, type InterfaceAddresses struct, Flags uint32
+pkg syscall/zx/posix/socket, type InterfaceAddresses struct, FlagsPresent bool
+pkg syscall/zx/posix/socket, type InterfaceAddresses struct, I_unknownData interface{}
+pkg syscall/zx/posix/socket, type InterfaceAddresses struct, Id uint64
+pkg syscall/zx/posix/socket, type InterfaceAddresses struct, IdPresent bool
+pkg syscall/zx/posix/socket, type InterfaceAddresses struct, InterfaceFlags InterfaceFlags
+pkg syscall/zx/posix/socket, type InterfaceAddresses struct, InterfaceFlagsPresent bool
+pkg syscall/zx/posix/socket, type InterfaceAddresses struct, Name string
+pkg syscall/zx/posix/socket, type InterfaceAddresses struct, NamePresent bool
+pkg syscall/zx/posix/socket, type InterfaceFlags uint16
+pkg syscall/zx/posix/socket, type IpMulticastMembership struct
+pkg syscall/zx/posix/socket, type IpMulticastMembership struct, Iface uint64
+pkg syscall/zx/posix/socket, type IpMulticastMembership struct, LocalAddr net.Ipv4Address
+pkg syscall/zx/posix/socket, type IpMulticastMembership struct, McastAddr net.Ipv4Address
+pkg syscall/zx/posix/socket, type Ipv6MulticastMembership struct
+pkg syscall/zx/posix/socket, type Ipv6MulticastMembership struct, Iface uint64
+pkg syscall/zx/posix/socket, type Ipv6MulticastMembership struct, McastAddr net.Ipv6Address
+pkg syscall/zx/posix/socket, type OptionalUint32 struct
+pkg syscall/zx/posix/socket, type OptionalUint32 struct, Unset Empty
+pkg syscall/zx/posix/socket, type OptionalUint32 struct, Value uint32
+pkg syscall/zx/posix/socket, type OptionalUint32 struct, embedded I_optionalUint32Tag
+pkg syscall/zx/posix/socket, type OptionalUint8 struct
+pkg syscall/zx/posix/socket, type OptionalUint8 struct, Unset Empty
+pkg syscall/zx/posix/socket, type OptionalUint8 struct, Value uint8
+pkg syscall/zx/posix/socket, type OptionalUint8 struct, embedded I_optionalUint8Tag
+pkg syscall/zx/posix/socket, type ProviderDatagramSocketResponse struct
+pkg syscall/zx/posix/socket, type ProviderDatagramSocketResponse struct, S DatagramSocketWithCtxInterface
+pkg syscall/zx/posix/socket, type ProviderDatagramSocketResult struct
+pkg syscall/zx/posix/socket, type ProviderDatagramSocketResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type ProviderDatagramSocketResult struct, Response ProviderDatagramSocketResponse
+pkg syscall/zx/posix/socket, type ProviderDatagramSocketResult struct, embedded I_providerDatagramSocketResultTag
+pkg syscall/zx/posix/socket, type ProviderEventProxy struct
+pkg syscall/zx/posix/socket, type ProviderEventProxy struct, embedded zx.Channel
+pkg syscall/zx/posix/socket, type ProviderInterfaceIndexToNameResponse struct
+pkg syscall/zx/posix/socket, type ProviderInterfaceIndexToNameResponse struct, Name string
+pkg syscall/zx/posix/socket, type ProviderInterfaceIndexToNameResult struct
+pkg syscall/zx/posix/socket, type ProviderInterfaceIndexToNameResult struct, Err int32
+pkg syscall/zx/posix/socket, type ProviderInterfaceIndexToNameResult struct, Response ProviderInterfaceIndexToNameResponse
+pkg syscall/zx/posix/socket, type ProviderInterfaceIndexToNameResult struct, embedded I_providerInterfaceIndexToNameResultTag
+pkg syscall/zx/posix/socket, type ProviderInterfaceNameToFlagsResponse struct
+pkg syscall/zx/posix/socket, type ProviderInterfaceNameToFlagsResponse struct, Flags InterfaceFlags
+pkg syscall/zx/posix/socket, type ProviderInterfaceNameToFlagsResult struct
+pkg syscall/zx/posix/socket, type ProviderInterfaceNameToFlagsResult struct, Err int32
+pkg syscall/zx/posix/socket, type ProviderInterfaceNameToFlagsResult struct, Response ProviderInterfaceNameToFlagsResponse
+pkg syscall/zx/posix/socket, type ProviderInterfaceNameToFlagsResult struct, embedded I_providerInterfaceNameToFlagsResultTag
+pkg syscall/zx/posix/socket, type ProviderInterfaceNameToIndexResponse struct
+pkg syscall/zx/posix/socket, type ProviderInterfaceNameToIndexResponse struct, Index uint64
+pkg syscall/zx/posix/socket, type ProviderInterfaceNameToIndexResult struct
+pkg syscall/zx/posix/socket, type ProviderInterfaceNameToIndexResult struct, Err int32
+pkg syscall/zx/posix/socket, type ProviderInterfaceNameToIndexResult struct, Response ProviderInterfaceNameToIndexResponse
+pkg syscall/zx/posix/socket, type ProviderInterfaceNameToIndexResult struct, embedded I_providerInterfaceNameToIndexResultTag
+pkg syscall/zx/posix/socket, type ProviderStreamSocketResponse struct
+pkg syscall/zx/posix/socket, type ProviderStreamSocketResponse struct, S StreamSocketWithCtxInterface
+pkg syscall/zx/posix/socket, type ProviderStreamSocketResult struct
+pkg syscall/zx/posix/socket, type ProviderStreamSocketResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type ProviderStreamSocketResult struct, Response ProviderStreamSocketResponse
+pkg syscall/zx/posix/socket, type ProviderStreamSocketResult struct, embedded I_providerStreamSocketResultTag
+pkg syscall/zx/posix/socket, type ProviderWithCtx interface { DatagramSocket, GetInterfaceAddresses, InterfaceIndexToName, InterfaceNameToFlags, InterfaceNameToIndex, StreamSocket }
+pkg syscall/zx/posix/socket, type ProviderWithCtx interface, DatagramSocket(context.Context, Domain, DatagramSocketProtocol) (ProviderDatagramSocketResult, error)
+pkg syscall/zx/posix/socket, type ProviderWithCtx interface, GetInterfaceAddresses(context.Context) ([]InterfaceAddresses, error)
+pkg syscall/zx/posix/socket, type ProviderWithCtx interface, InterfaceIndexToName(context.Context, uint64) (ProviderInterfaceIndexToNameResult, error)
+pkg syscall/zx/posix/socket, type ProviderWithCtx interface, InterfaceNameToFlags(context.Context, string) (ProviderInterfaceNameToFlagsResult, error)
+pkg syscall/zx/posix/socket, type ProviderWithCtx interface, InterfaceNameToIndex(context.Context, string) (ProviderInterfaceNameToIndexResult, error)
+pkg syscall/zx/posix/socket, type ProviderWithCtx interface, StreamSocket(context.Context, Domain, StreamSocketProtocol) (ProviderStreamSocketResult, error)
+pkg syscall/zx/posix/socket, type ProviderWithCtxInterface struct
+pkg syscall/zx/posix/socket, type ProviderWithCtxInterface struct, embedded zx.Channel
+pkg syscall/zx/posix/socket, type ProviderWithCtxInterfaceRequest struct
+pkg syscall/zx/posix/socket, type ProviderWithCtxInterfaceRequest struct, embedded zx.Channel
+pkg syscall/zx/posix/socket, type ProviderWithCtxStub struct
+pkg syscall/zx/posix/socket, type ProviderWithCtxStub struct, Impl ProviderWithCtx
+pkg syscall/zx/posix/socket, type ProviderWithCtxTransitionalBase struct
+pkg syscall/zx/posix/socket, type RecvControlData struct
+pkg syscall/zx/posix/socket, type RecvControlData struct, I_unknownData interface{}
+pkg syscall/zx/posix/socket, type RecvMsgFlags uint16
+pkg syscall/zx/posix/socket, type SendControlData struct
+pkg syscall/zx/posix/socket, type SendControlData struct, I_unknownData interface{}
+pkg syscall/zx/posix/socket, type SendMsgFlags uint16
+pkg syscall/zx/posix/socket, type ShutdownMode uint16
+pkg syscall/zx/posix/socket, type StreamSocketAcceptResponse struct
+pkg syscall/zx/posix/socket, type StreamSocketAcceptResponse struct, Addr *net.SocketAddress
+pkg syscall/zx/posix/socket, type StreamSocketAcceptResponse struct, S StreamSocketWithCtxInterface
+pkg syscall/zx/posix/socket, type StreamSocketAcceptResult struct
+pkg syscall/zx/posix/socket, type StreamSocketAcceptResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type StreamSocketAcceptResult struct, Response StreamSocketAcceptResponse
+pkg syscall/zx/posix/socket, type StreamSocketAcceptResult struct, embedded I_streamSocketAcceptResultTag
+pkg syscall/zx/posix/socket, type StreamSocketEventProxy struct
+pkg syscall/zx/posix/socket, type StreamSocketEventProxy struct, embedded zx.Channel
+pkg syscall/zx/posix/socket, type StreamSocketGetInfoResponse struct
+pkg syscall/zx/posix/socket, type StreamSocketGetInfoResponse struct, Domain Domain
+pkg syscall/zx/posix/socket, type StreamSocketGetInfoResponse struct, Proto StreamSocketProtocol
+pkg syscall/zx/posix/socket, type StreamSocketGetInfoResult struct
+pkg syscall/zx/posix/socket, type StreamSocketGetInfoResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type StreamSocketGetInfoResult struct, Response StreamSocketGetInfoResponse
+pkg syscall/zx/posix/socket, type StreamSocketGetInfoResult struct, embedded I_streamSocketGetInfoResultTag
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpCongestionResponse struct
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpCongestionResponse struct, Value TcpCongestionControl
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpCongestionResult struct
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpCongestionResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpCongestionResult struct, Response StreamSocketGetTcpCongestionResponse
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpCongestionResult struct, embedded I_streamSocketGetTcpCongestionResultTag
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpCorkResponse struct
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpCorkResponse struct, Value bool
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpCorkResult struct
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpCorkResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpCorkResult struct, Response StreamSocketGetTcpCorkResponse
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpCorkResult struct, embedded I_streamSocketGetTcpCorkResultTag
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpDeferAcceptResponse struct
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpDeferAcceptResponse struct, ValueSecs uint32
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpDeferAcceptResult struct
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpDeferAcceptResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpDeferAcceptResult struct, Response StreamSocketGetTcpDeferAcceptResponse
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpDeferAcceptResult struct, embedded I_streamSocketGetTcpDeferAcceptResultTag
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpInfoResponse struct
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpInfoResponse struct, Info TcpInfo
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpInfoResult struct
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpInfoResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpInfoResult struct, Response StreamSocketGetTcpInfoResponse
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpInfoResult struct, embedded I_streamSocketGetTcpInfoResultTag
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpKeepAliveCountResponse struct
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpKeepAliveCountResponse struct, Value uint32
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpKeepAliveCountResult struct
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpKeepAliveCountResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpKeepAliveCountResult struct, Response StreamSocketGetTcpKeepAliveCountResponse
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpKeepAliveCountResult struct, embedded I_streamSocketGetTcpKeepAliveCountResultTag
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpKeepAliveIdleResponse struct
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpKeepAliveIdleResponse struct, ValueSecs uint32
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpKeepAliveIdleResult struct
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpKeepAliveIdleResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpKeepAliveIdleResult struct, Response StreamSocketGetTcpKeepAliveIdleResponse
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpKeepAliveIdleResult struct, embedded I_streamSocketGetTcpKeepAliveIdleResultTag
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpKeepAliveIntervalResponse struct
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpKeepAliveIntervalResponse struct, ValueSecs uint32
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpKeepAliveIntervalResult struct
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpKeepAliveIntervalResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpKeepAliveIntervalResult struct, Response StreamSocketGetTcpKeepAliveIntervalResponse
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpKeepAliveIntervalResult struct, embedded I_streamSocketGetTcpKeepAliveIntervalResultTag
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpLingerResponse struct
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpLingerResponse struct, ValueSecs OptionalUint32
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpLingerResult struct
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpLingerResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpLingerResult struct, Response StreamSocketGetTcpLingerResponse
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpLingerResult struct, embedded I_streamSocketGetTcpLingerResultTag
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpMaxSegmentResponse struct
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpMaxSegmentResponse struct, ValueBytes uint32
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpMaxSegmentResult struct
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpMaxSegmentResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpMaxSegmentResult struct, Response StreamSocketGetTcpMaxSegmentResponse
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpMaxSegmentResult struct, embedded I_streamSocketGetTcpMaxSegmentResultTag
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpNoDelayResponse struct
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpNoDelayResponse struct, Value bool
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpNoDelayResult struct
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpNoDelayResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpNoDelayResult struct, Response StreamSocketGetTcpNoDelayResponse
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpNoDelayResult struct, embedded I_streamSocketGetTcpNoDelayResultTag
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpQuickAckResponse struct
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpQuickAckResponse struct, Value bool
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpQuickAckResult struct
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpQuickAckResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpQuickAckResult struct, Response StreamSocketGetTcpQuickAckResponse
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpQuickAckResult struct, embedded I_streamSocketGetTcpQuickAckResultTag
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpSynCountResponse struct
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpSynCountResponse struct, Value uint32
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpSynCountResult struct
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpSynCountResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpSynCountResult struct, Response StreamSocketGetTcpSynCountResponse
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpSynCountResult struct, embedded I_streamSocketGetTcpSynCountResultTag
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpUserTimeoutResponse struct
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpUserTimeoutResponse struct, ValueMillis uint32
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpUserTimeoutResult struct
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpUserTimeoutResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpUserTimeoutResult struct, Response StreamSocketGetTcpUserTimeoutResponse
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpUserTimeoutResult struct, embedded I_streamSocketGetTcpUserTimeoutResultTag
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpWindowClampResponse struct
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpWindowClampResponse struct, Value uint32
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpWindowClampResult struct
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpWindowClampResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpWindowClampResult struct, Response StreamSocketGetTcpWindowClampResponse
+pkg syscall/zx/posix/socket, type StreamSocketGetTcpWindowClampResult struct, embedded I_streamSocketGetTcpWindowClampResultTag
+pkg syscall/zx/posix/socket, type StreamSocketListenResponse struct
+pkg syscall/zx/posix/socket, type StreamSocketListenResult struct
+pkg syscall/zx/posix/socket, type StreamSocketListenResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type StreamSocketListenResult struct, Response StreamSocketListenResponse
+pkg syscall/zx/posix/socket, type StreamSocketListenResult struct, embedded I_streamSocketListenResultTag
+pkg syscall/zx/posix/socket, type StreamSocketProtocol uint32
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpCongestionResponse struct
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpCongestionResult struct
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpCongestionResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpCongestionResult struct, Response StreamSocketSetTcpCongestionResponse
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpCongestionResult struct, embedded I_streamSocketSetTcpCongestionResultTag
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpCorkResponse struct
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpCorkResult struct
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpCorkResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpCorkResult struct, Response StreamSocketSetTcpCorkResponse
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpCorkResult struct, embedded I_streamSocketSetTcpCorkResultTag
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpDeferAcceptResponse struct
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpDeferAcceptResult struct
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpDeferAcceptResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpDeferAcceptResult struct, Response StreamSocketSetTcpDeferAcceptResponse
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpDeferAcceptResult struct, embedded I_streamSocketSetTcpDeferAcceptResultTag
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpKeepAliveCountResponse struct
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpKeepAliveCountResult struct
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpKeepAliveCountResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpKeepAliveCountResult struct, Response StreamSocketSetTcpKeepAliveCountResponse
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpKeepAliveCountResult struct, embedded I_streamSocketSetTcpKeepAliveCountResultTag
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpKeepAliveIdleResponse struct
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpKeepAliveIdleResult struct
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpKeepAliveIdleResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpKeepAliveIdleResult struct, Response StreamSocketSetTcpKeepAliveIdleResponse
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpKeepAliveIdleResult struct, embedded I_streamSocketSetTcpKeepAliveIdleResultTag
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpKeepAliveIntervalResponse struct
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpKeepAliveIntervalResult struct
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpKeepAliveIntervalResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpKeepAliveIntervalResult struct, Response StreamSocketSetTcpKeepAliveIntervalResponse
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpKeepAliveIntervalResult struct, embedded I_streamSocketSetTcpKeepAliveIntervalResultTag
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpLingerResponse struct
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpLingerResult struct
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpLingerResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpLingerResult struct, Response StreamSocketSetTcpLingerResponse
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpLingerResult struct, embedded I_streamSocketSetTcpLingerResultTag
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpMaxSegmentResponse struct
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpMaxSegmentResult struct
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpMaxSegmentResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpMaxSegmentResult struct, Response StreamSocketSetTcpMaxSegmentResponse
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpMaxSegmentResult struct, embedded I_streamSocketSetTcpMaxSegmentResultTag
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpNoDelayResponse struct
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpNoDelayResult struct
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpNoDelayResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpNoDelayResult struct, Response StreamSocketSetTcpNoDelayResponse
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpNoDelayResult struct, embedded I_streamSocketSetTcpNoDelayResultTag
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpQuickAckResponse struct
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpQuickAckResult struct
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpQuickAckResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpQuickAckResult struct, Response StreamSocketSetTcpQuickAckResponse
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpQuickAckResult struct, embedded I_streamSocketSetTcpQuickAckResultTag
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpSynCountResponse struct
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpSynCountResult struct
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpSynCountResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpSynCountResult struct, Response StreamSocketSetTcpSynCountResponse
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpSynCountResult struct, embedded I_streamSocketSetTcpSynCountResultTag
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpUserTimeoutResponse struct
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpUserTimeoutResult struct
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpUserTimeoutResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpUserTimeoutResult struct, Response StreamSocketSetTcpUserTimeoutResponse
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpUserTimeoutResult struct, embedded I_streamSocketSetTcpUserTimeoutResultTag
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpWindowClampResponse struct
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpWindowClampResult struct
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpWindowClampResult struct, Err posix.Errno
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpWindowClampResult struct, Response StreamSocketSetTcpWindowClampResponse
+pkg syscall/zx/posix/socket, type StreamSocketSetTcpWindowClampResult struct, embedded I_streamSocketSetTcpWindowClampResultTag
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface { Accept, AddIpMembership, AddIpv6Membership, Bind, Clone, Close, Connect, Describe, Disconnect, DropIpMembership, DropIpv6Membership, GetAcceptConn, GetAttr, GetBindToDevice, GetBroadcast, GetError, GetInfo, GetIpMulticastInterface, GetIpMulticastLoopback, GetIpMulticastTtl, GetIpPacketInfo, GetIpReceiveTypeOfService, GetIpTtl, GetIpTypeOfService, GetIpv6MulticastHops, GetIpv6MulticastInterface, GetIpv6MulticastLoopback, GetIpv6Only, GetIpv6ReceiveTrafficClass, GetIpv6TrafficClass, GetKeepAlive, GetLinger, GetNoCheck, GetOutOfBandInline, GetPeerName, GetReceiveBuffer, GetReuseAddress, GetReusePort, GetSendBuffer, GetSockName, GetTcpCongestion, GetTcpCork, GetTcpDeferAccept, GetTcpInfo, GetTcpKeepAliveCount, GetTcpKeepAliveIdle, GetTcpKeepAliveInterval, GetTcpLinger, GetTcpMaxSegment, GetTcpNoDelay, GetTcpQuickAck, GetTcpSynCount, GetTcpUserTimeout, GetTcpWindowClamp, GetTimestamp, Listen, NodeGetFlags, NodeSetFlags, SetAttr, SetBindToDevice, SetBroadcast, SetIpMulticastInterface, SetIpMulticastLoopback, SetIpMulticastTtl, SetIpPacketInfo, SetIpReceiveTypeOfService, SetIpTtl, SetIpTypeOfService, SetIpv6MulticastHops, SetIpv6MulticastInterface, SetIpv6MulticastLoopback, SetIpv6Only, SetIpv6ReceiveTrafficClass, SetIpv6TrafficClass, SetKeepAlive, SetLinger, SetNoCheck, SetOutOfBandInline, SetReceiveBuffer, SetReuseAddress, SetReusePort, SetSendBuffer, SetTcpCongestion, SetTcpCork, SetTcpDeferAccept, SetTcpKeepAliveCount, SetTcpKeepAliveIdle, SetTcpKeepAliveInterval, SetTcpLinger, SetTcpMaxSegment, SetTcpNoDelay, SetTcpQuickAck, SetTcpSynCount, SetTcpUserTimeout, SetTcpWindowClamp, SetTimestamp, Shutdown2, Sync }
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, Accept(context.Context, bool) (StreamSocketAcceptResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, AddIpMembership(context.Context, IpMulticastMembership) (BaseSocketAddIpMembershipResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, AddIpv6Membership(context.Context, Ipv6MulticastMembership) (BaseSocketAddIpv6MembershipResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, Bind(context.Context, net.SocketAddress) (BaseSocketBindResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, Clone(context.Context, uint32, io.NodeWithCtxInterfaceRequest) error
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, Close(context.Context) (int32, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, Connect(context.Context, net.SocketAddress) (BaseSocketConnectResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, Describe(context.Context) (io.NodeInfo, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, Disconnect(context.Context) (BaseSocketDisconnectResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, DropIpMembership(context.Context, IpMulticastMembership) (BaseSocketDropIpMembershipResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, DropIpv6Membership(context.Context, Ipv6MulticastMembership) (BaseSocketDropIpv6MembershipResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, GetAcceptConn(context.Context) (BaseSocketGetAcceptConnResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, GetAttr(context.Context) (int32, io.NodeAttributes, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, GetBindToDevice(context.Context) (BaseSocketGetBindToDeviceResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, GetBroadcast(context.Context) (BaseSocketGetBroadcastResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, GetError(context.Context) (BaseSocketGetErrorResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, GetInfo(context.Context) (StreamSocketGetInfoResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, GetIpMulticastInterface(context.Context) (BaseSocketGetIpMulticastInterfaceResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, GetIpMulticastLoopback(context.Context) (BaseSocketGetIpMulticastLoopbackResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, GetIpMulticastTtl(context.Context) (BaseSocketGetIpMulticastTtlResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, GetIpPacketInfo(context.Context) (BaseSocketGetIpPacketInfoResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, GetIpReceiveTypeOfService(context.Context) (BaseSocketGetIpReceiveTypeOfServiceResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, GetIpTtl(context.Context) (BaseSocketGetIpTtlResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, GetIpTypeOfService(context.Context) (BaseSocketGetIpTypeOfServiceResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, GetIpv6MulticastHops(context.Context) (BaseSocketGetIpv6MulticastHopsResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, GetIpv6MulticastInterface(context.Context) (BaseSocketGetIpv6MulticastInterfaceResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, GetIpv6MulticastLoopback(context.Context) (BaseSocketGetIpv6MulticastLoopbackResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, GetIpv6Only(context.Context) (BaseSocketGetIpv6OnlyResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, GetIpv6ReceiveTrafficClass(context.Context) (BaseSocketGetIpv6ReceiveTrafficClassResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, GetIpv6TrafficClass(context.Context) (BaseSocketGetIpv6TrafficClassResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, GetKeepAlive(context.Context) (BaseSocketGetKeepAliveResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, GetLinger(context.Context) (BaseSocketGetLingerResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, GetNoCheck(context.Context) (BaseSocketGetNoCheckResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, GetOutOfBandInline(context.Context) (BaseSocketGetOutOfBandInlineResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, GetPeerName(context.Context) (BaseSocketGetPeerNameResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, GetReceiveBuffer(context.Context) (BaseSocketGetReceiveBufferResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, GetReuseAddress(context.Context) (BaseSocketGetReuseAddressResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, GetReusePort(context.Context) (BaseSocketGetReusePortResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, GetSendBuffer(context.Context) (BaseSocketGetSendBufferResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, GetSockName(context.Context) (BaseSocketGetSockNameResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, GetTcpCongestion(context.Context) (StreamSocketGetTcpCongestionResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, GetTcpCork(context.Context) (StreamSocketGetTcpCorkResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, GetTcpDeferAccept(context.Context) (StreamSocketGetTcpDeferAcceptResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, GetTcpInfo(context.Context) (StreamSocketGetTcpInfoResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, GetTcpKeepAliveCount(context.Context) (StreamSocketGetTcpKeepAliveCountResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, GetTcpKeepAliveIdle(context.Context) (StreamSocketGetTcpKeepAliveIdleResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, GetTcpKeepAliveInterval(context.Context) (StreamSocketGetTcpKeepAliveIntervalResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, GetTcpLinger(context.Context) (StreamSocketGetTcpLingerResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, GetTcpMaxSegment(context.Context) (StreamSocketGetTcpMaxSegmentResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, GetTcpNoDelay(context.Context) (StreamSocketGetTcpNoDelayResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, GetTcpQuickAck(context.Context) (StreamSocketGetTcpQuickAckResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, GetTcpSynCount(context.Context) (StreamSocketGetTcpSynCountResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, GetTcpUserTimeout(context.Context) (StreamSocketGetTcpUserTimeoutResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, GetTcpWindowClamp(context.Context) (StreamSocketGetTcpWindowClampResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, GetTimestamp(context.Context) (BaseSocketGetTimestampResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, Listen(context.Context, int16) (StreamSocketListenResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, NodeGetFlags(context.Context) (int32, uint32, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, NodeSetFlags(context.Context, uint32) (int32, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, SetAttr(context.Context, uint32, io.NodeAttributes) (int32, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, SetBindToDevice(context.Context, string) (BaseSocketSetBindToDeviceResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, SetBroadcast(context.Context, bool) (BaseSocketSetBroadcastResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, SetIpMulticastInterface(context.Context, uint64, net.Ipv4Address) (BaseSocketSetIpMulticastInterfaceResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, SetIpMulticastLoopback(context.Context, bool) (BaseSocketSetIpMulticastLoopbackResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, SetIpMulticastTtl(context.Context, OptionalUint8) (BaseSocketSetIpMulticastTtlResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, SetIpPacketInfo(context.Context, bool) (BaseSocketSetIpPacketInfoResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, SetIpReceiveTypeOfService(context.Context, bool) (BaseSocketSetIpReceiveTypeOfServiceResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, SetIpTtl(context.Context, OptionalUint8) (BaseSocketSetIpTtlResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, SetIpTypeOfService(context.Context, uint8) (BaseSocketSetIpTypeOfServiceResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, SetIpv6MulticastHops(context.Context, OptionalUint8) (BaseSocketSetIpv6MulticastHopsResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, SetIpv6MulticastInterface(context.Context, uint64) (BaseSocketSetIpv6MulticastInterfaceResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, SetIpv6MulticastLoopback(context.Context, bool) (BaseSocketSetIpv6MulticastLoopbackResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, SetIpv6Only(context.Context, bool) (BaseSocketSetIpv6OnlyResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, SetIpv6ReceiveTrafficClass(context.Context, bool) (BaseSocketSetIpv6ReceiveTrafficClassResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, SetIpv6TrafficClass(context.Context, OptionalUint8) (BaseSocketSetIpv6TrafficClassResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, SetKeepAlive(context.Context, bool) (BaseSocketSetKeepAliveResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, SetLinger(context.Context, bool, uint32) (BaseSocketSetLingerResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, SetNoCheck(context.Context, bool) (BaseSocketSetNoCheckResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, SetOutOfBandInline(context.Context, bool) (BaseSocketSetOutOfBandInlineResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, SetReceiveBuffer(context.Context, uint64) (BaseSocketSetReceiveBufferResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, SetReuseAddress(context.Context, bool) (BaseSocketSetReuseAddressResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, SetReusePort(context.Context, bool) (BaseSocketSetReusePortResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, SetSendBuffer(context.Context, uint64) (BaseSocketSetSendBufferResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, SetTcpCongestion(context.Context, TcpCongestionControl) (StreamSocketSetTcpCongestionResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, SetTcpCork(context.Context, bool) (StreamSocketSetTcpCorkResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, SetTcpDeferAccept(context.Context, uint32) (StreamSocketSetTcpDeferAcceptResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, SetTcpKeepAliveCount(context.Context, uint32) (StreamSocketSetTcpKeepAliveCountResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, SetTcpKeepAliveIdle(context.Context, uint32) (StreamSocketSetTcpKeepAliveIdleResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, SetTcpKeepAliveInterval(context.Context, uint32) (StreamSocketSetTcpKeepAliveIntervalResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, SetTcpLinger(context.Context, OptionalUint32) (StreamSocketSetTcpLingerResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, SetTcpMaxSegment(context.Context, uint32) (StreamSocketSetTcpMaxSegmentResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, SetTcpNoDelay(context.Context, bool) (StreamSocketSetTcpNoDelayResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, SetTcpQuickAck(context.Context, bool) (StreamSocketSetTcpQuickAckResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, SetTcpSynCount(context.Context, uint32) (StreamSocketSetTcpSynCountResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, SetTcpUserTimeout(context.Context, uint32) (StreamSocketSetTcpUserTimeoutResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, SetTcpWindowClamp(context.Context, uint32) (StreamSocketSetTcpWindowClampResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, SetTimestamp(context.Context, bool) (BaseSocketSetTimestampResult, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, Shutdown2(context.Context, ShutdownMode) (BaseSocketShutdown2Result, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtx interface, Sync(context.Context) (int32, error)
+pkg syscall/zx/posix/socket, type StreamSocketWithCtxInterface struct
+pkg syscall/zx/posix/socket, type StreamSocketWithCtxInterface struct, embedded zx.Channel
+pkg syscall/zx/posix/socket, type StreamSocketWithCtxInterfaceRequest struct
+pkg syscall/zx/posix/socket, type StreamSocketWithCtxInterfaceRequest struct, embedded zx.Channel
+pkg syscall/zx/posix/socket, type StreamSocketWithCtxStub struct
+pkg syscall/zx/posix/socket, type StreamSocketWithCtxStub struct, Impl StreamSocketWithCtx
+pkg syscall/zx/posix/socket, type StreamSocketWithCtxTransitionalBase struct
+pkg syscall/zx/posix/socket, type TcpCongestionControl uint32
+pkg syscall/zx/posix/socket, type TcpCongestionControlState uint32
+pkg syscall/zx/posix/socket, type TcpInfo struct
+pkg syscall/zx/posix/socket, type TcpInfo struct, CaState TcpCongestionControlState
+pkg syscall/zx/posix/socket, type TcpInfo struct, CaStatePresent bool
+pkg syscall/zx/posix/socket, type TcpInfo struct, I_unknownData interface{}
+pkg syscall/zx/posix/socket, type TcpInfo struct, ReorderSeen bool
+pkg syscall/zx/posix/socket, type TcpInfo struct, ReorderSeenPresent bool
+pkg syscall/zx/posix/socket, type TcpInfo struct, RtoUsec uint32
+pkg syscall/zx/posix/socket, type TcpInfo struct, RtoUsecPresent bool
+pkg syscall/zx/posix/socket, type TcpInfo struct, RttUsec uint32
+pkg syscall/zx/posix/socket, type TcpInfo struct, RttUsecPresent bool
+pkg syscall/zx/posix/socket, type TcpInfo struct, RttVarUsec uint32
+pkg syscall/zx/posix/socket, type TcpInfo struct, RttVarUsecPresent bool
+pkg syscall/zx/posix/socket, type TcpInfo struct, SndCwnd uint32
+pkg syscall/zx/posix/socket, type TcpInfo struct, SndCwndPresent bool
+pkg syscall/zx/posix/socket, type TcpInfo struct, SndSsthresh uint32
+pkg syscall/zx/posix/socket, type TcpInfo struct, SndSsthreshPresent bool
+pkg syscall/zx/posix/socket, type TcpInfo struct, State TcpState
+pkg syscall/zx/posix/socket, type TcpInfo struct, StatePresent bool
+pkg syscall/zx/posix/socket, type TcpState uint32
diff --git a/makefuchsia/BUILD.gn b/makefuchsia/BUILD.gn
new file mode 100644
index 0000000..ae1666e
--- /dev/null
+++ b/makefuchsia/BUILD.gn
@@ -0,0 +1,19 @@
+# Copyright 2019 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//build/go/go_binary.gni")
+import("//build/go/go_library.gni")
+
+go_library("makefuchsia_lib") {
+ name = "makefuchsia"
+ sources = [
+ "makefuchsia.go",
+ ]
+}
+
+go_binary("makefuchsia") {
+ gopackage = "makefuchsia"
+
+ deps = [ ":makefuchsia_lib" ]
+}
diff --git a/makefuchsia/makefuchsia.go b/makefuchsia/makefuchsia.go
new file mode 100644
index 0000000..c1093ec
--- /dev/null
+++ b/makefuchsia/makefuchsia.go
@@ -0,0 +1,110 @@
+// Copyright 2017 The Fuchsia Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// The makefuchsia.go script builds a GOROOT in the out/ build directory
+// using sources from third_party/go.
+package main
+
+import (
+ "bytes"
+ "flag"
+ "fmt"
+ "io/ioutil"
+ "log"
+ "os"
+ "os/exec"
+ "path/filepath"
+ "strings"
+ "time"
+)
+
+var (
+ cc = flag.String("cc", "", "Path to C compiler")
+ cxx = flag.String("cxx", "", "Path to C++ compiler")
+ gocache = flag.String("gocache", "", "Path to GOCACHE")
+ goroot = flag.String("goroot", "", "Path to the output GOROOT")
+ gorootBootstrap = flag.String("goroot-bootstrap", "", "Path to go root used for bootstrap")
+ sysroot = flag.String("sysroot", "", "Path to sysroot")
+
+ depfilePath = flag.String("depfile", "", "depfile to write into")
+ stampPath = flag.String("stamp-file", "", "Path of a file to create upon completion")
+)
+
+func main() {
+ log.SetFlags(log.Lshortfile)
+ flag.Parse()
+
+ // Provide the narrowest possible PATH.
+ var path []string
+ for _, bin := range []string{
+ // make.bash uses bash in its shebang.
+ "bash",
+ // make.bash uses rm.
+ "rm",
+ // make.bash uses uname, which we do not vendor.
+ "uname",
+ } {
+ binPath, err := exec.LookPath(bin)
+ if err != nil {
+ log.Fatalf("exec.LookPath(%s): %s", bin, err)
+ }
+ path = append(path, filepath.Dir(binPath))
+ }
+
+ cmd := exec.Cmd{
+ Path: "make.bash",
+ Env: []string{
+ fmt.Sprintf("CC=%s", *cc),
+ fmt.Sprintf("CXX=%s", *cxx),
+ fmt.Sprintf("CGO_CFLAGS=--sysroot=%s", *sysroot),
+ fmt.Sprintf("CGO_CPPFLAGS=--sysroot=%s", *sysroot),
+ fmt.Sprintf("CGO_CXXFLAGS=--sysroot=%s", *sysroot),
+ fmt.Sprintf("CGO_LDFLAGS=--sysroot=%s", *sysroot),
+ fmt.Sprintf("GOCACHE=%s", *gocache),
+ fmt.Sprintf("GOROOT_BOOTSTRAP=%s", *gorootBootstrap),
+ fmt.Sprintf("PATH=%s", strings.Join(path, ":")),
+ },
+ Dir: filepath.Join(*goroot, "src"),
+ }
+ if tmp, ok := os.LookupEnv("TMPDIR"); ok {
+ cmd.Env = append(cmd.Env, "TMPDIR="+tmp)
+ }
+ if out, err := cmd.CombinedOutput(); err != nil {
+ log.Fatalf("%s failed: %s:\n%s", cmd.Args, err, out)
+ }
+
+ var buf bytes.Buffer
+ buf.WriteString(*stampPath)
+ buf.WriteByte(':')
+ if err := filepath.Walk(*goroot, func(path string, info os.FileInfo, err error) error {
+ if err != nil {
+ return err
+ }
+ if !info.IsDir() {
+ buf.WriteByte(' ')
+ buf.WriteString(path)
+ }
+ return nil
+ }); err != nil {
+ log.Fatalf("filepath.Walk(%s, _): %s", *goroot, err)
+ }
+
+ buf.WriteByte('\n')
+
+ if err := ioutil.WriteFile(*depfilePath, buf.Bytes(), os.ModePerm); err != nil {
+ log.Fatalf("ioutil.WriteFile(%s, _, os.ModePerm): %s", *depfilePath, err)
+ }
+
+ f, err := os.OpenFile(*stampPath, os.O_CREATE|os.O_TRUNC, os.ModePerm)
+ if err != nil {
+ log.Fatalf("os.OpenFile(%s, os.O_CREATE|os.O_TRUNC, os.ModePerm): %s", *stampPath, err)
+ }
+ if err := f.Close(); err != nil {
+ log.Fatalf("%s.Close(): %s", f.Name(), err)
+ }
+ now := time.Now()
+ if err := os.Chtimes(*stampPath, now, now); err != nil {
+ log.Fatalf("os.Chtimes(%[1]s, %[2]s, %[2]s): %[3]s", *stampPath, now, err)
+ }
+}
diff --git a/makeroot/BUILD.gn b/makeroot/BUILD.gn
new file mode 100644
index 0000000..0a5fca0
--- /dev/null
+++ b/makeroot/BUILD.gn
@@ -0,0 +1,19 @@
+# Copyright 2019 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//build/go/go_binary.gni")
+import("//build/go/go_library.gni")
+
+go_library("makeroot_lib") {
+ name = "makeroot"
+ sources = [
+ "makeroot.go",
+ ]
+}
+
+go_binary("makeroot") {
+ gopackage = "makeroot"
+
+ deps = [ ":makeroot_lib" ]
+}
diff --git a/makeroot/makeroot.go b/makeroot/makeroot.go
new file mode 100644
index 0000000..64a8ade
--- /dev/null
+++ b/makeroot/makeroot.go
@@ -0,0 +1,119 @@
+// Copyright 2018 The Fuchsia Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// The makeroot.go script copies a GOROOT. It is a precursor to makefuchsia.go,
+// used to stage a clean GOROOT into the build directory.
+// Note: this script exists because the `go` tool globs for inputs, as such, a
+// copy tool is required that will actively remove files that are not found in
+// the source.
+
+package main
+
+import (
+ "bytes"
+ "flag"
+ "io"
+ "io/ioutil"
+ "log"
+ "os"
+ "os/exec"
+ "path/filepath"
+ "time"
+)
+
+var (
+ sourceGoroot = flag.String("source-goroot", "", "GOROOT to copy from")
+ targetGoroot = flag.String("target-goroot", "", "GOROOT to copy into")
+ depfilePath = flag.String("depfile", "", "depfile to write into")
+ stampPath = flag.String("stamp-file", "", "Path of a file to create upon completion")
+)
+
+func main() {
+ log.SetFlags(log.Lshortfile)
+ flag.Parse()
+
+ if err := os.RemoveAll(*targetGoroot); err != nil {
+ log.Fatal(err)
+ }
+
+ var buf bytes.Buffer
+ buf.WriteString(*stampPath)
+ buf.WriteByte(':')
+
+ cmd := exec.Command("git", "ls-files", "--cached", "--others", "--exclude-standard", "-z")
+ cmd.Dir = *sourceGoroot
+ cmd.Env = []string{
+ "PATH=" + os.Getenv("PATH"),
+ }
+ out, err := cmd.Output()
+ if err != nil {
+ log.Fatal(err)
+ }
+ for _, path := range bytes.Split(out, []byte{0}) {
+ if len(path) == 0 {
+ continue
+ }
+ path := string(path)
+ src := filepath.Join(*sourceGoroot, path)
+ dst := filepath.Join(*targetGoroot, path)
+ srcFile, err := os.Open(src)
+ if err != nil {
+ // Renaming or deleting files will cause git ls-files to return the old (or deleted)
+ // paths unless the change is staged, so ignore these errors.
+ if os.IsNotExist(err) {
+ log.Print("could not open file: ", src)
+ continue
+ }
+ log.Fatal(err)
+ }
+ dstDir := filepath.Dir(dst)
+ if _, err := os.Stat(dstDir); os.IsNotExist(err) {
+ info, err := os.Stat(filepath.Dir(src))
+ if err != nil {
+ log.Fatal(err)
+ }
+ if err := os.MkdirAll(dstDir, info.Mode()); err != nil {
+ log.Fatal(err)
+ }
+ } else if err != nil {
+ log.Fatal(err)
+ }
+ info, err := srcFile.Stat()
+ if err != nil {
+ log.Fatal(err)
+ }
+ dstFile, err := os.OpenFile(dst, os.O_WRONLY|os.O_CREATE|os.O_EXCL, info.Mode())
+ if err != nil {
+ log.Fatal(err)
+ }
+ if _, err := io.Copy(dstFile, srcFile); err != nil {
+ log.Fatal(err)
+ }
+ if err := dstFile.Close(); err != nil {
+ log.Fatal(err)
+ }
+ if err := srcFile.Close(); err != nil {
+ log.Fatal(err)
+ }
+ buf.WriteByte(' ')
+ buf.WriteString(src)
+ }
+ buf.WriteByte('\n')
+
+ if err := ioutil.WriteFile(*depfilePath, buf.Bytes(), os.ModePerm); err != nil {
+ log.Fatal(err)
+ }
+
+ f, err := os.OpenFile(*stampPath, os.O_CREATE|os.O_TRUNC, os.ModePerm)
+ if err != nil {
+ log.Fatal(err)
+ }
+ if err := f.Close(); err != nil {
+ log.Fatal(err)
+ }
+ now := time.Now()
+ if err := os.Chtimes(*stampPath, now, now); err != nil {
+ log.Fatal(err)
+ }
+}
diff --git a/meta/go_exec_test.cmx b/meta/go_exec_test.cmx
new file mode 100644
index 0000000..b717012
--- /dev/null
+++ b/meta/go_exec_test.cmx
@@ -0,0 +1,27 @@
+{
+ "include": [
+ "syslog/client.shard.cmx"
+ ],
+ "program": {
+ "args": [
+ "--test.timeout",
+ "2m"
+ ],
+ "binary": "test/go_exec_test"
+ },
+ "sandbox": {
+ "boot": [
+ "bin",
+ "lib"
+ ],
+ "dev": [
+ "null"
+ ],
+ "features": [
+ "isolated-temp"
+ ],
+ "services": [
+ "fuchsia.process.Launcher"
+ ]
+ }
+}
diff --git a/meta/go_extended_fidl_test.cmx b/meta/go_extended_fidl_test.cmx
new file mode 100644
index 0000000..c780119
--- /dev/null
+++ b/meta/go_extended_fidl_test.cmx
@@ -0,0 +1,14 @@
+{
+ "program": {
+ "args": [
+ "--test.timeout",
+ "2m"
+ ],
+ "binary": "test/go_extended_fidl_test"
+ },
+ "sandbox": {
+ "features": [
+ "isolated-persistent-storage"
+ ]
+ }
+}
diff --git a/meta/go_fidl_test.cmx b/meta/go_fidl_test.cmx
new file mode 100644
index 0000000..84c9944
--- /dev/null
+++ b/meta/go_fidl_test.cmx
@@ -0,0 +1,14 @@
+{
+ "program": {
+ "args": [
+ "--test.timeout",
+ "2m"
+ ],
+ "binary": "test/go_fidl_test"
+ },
+ "sandbox": {
+ "features": [
+ "isolated-persistent-storage"
+ ]
+ }
+}
diff --git a/meta/go_net_test.cmx b/meta/go_net_test.cmx
new file mode 100644
index 0000000..954de4f1
--- /dev/null
+++ b/meta/go_net_test.cmx
@@ -0,0 +1,27 @@
+{
+ "facets": {
+ "fuchsia.test": {
+ "injected-services": {
+ "fuchsia.net.stack.Stack": "fuchsia-pkg://fuchsia.com/go-stdlib-tests#meta/netstack-debug.cmx",
+ "fuchsia.posix.socket.Provider": "fuchsia-pkg://fuchsia.com/go-stdlib-tests#meta/netstack-debug.cmx"
+ }
+ }
+ },
+ "program": {
+ "args": [
+ "--test.v",
+ "--test.timeout",
+ "2m"
+ ],
+ "binary": "test/go_net_test"
+ },
+ "sandbox": {
+ "features": [
+ "isolated-temp"
+ ],
+ "services": [
+ "fuchsia.net.stack.Stack",
+ "fuchsia.posix.socket.Provider"
+ ]
+ }
+}
diff --git a/meta/go_os_test.cmx b/meta/go_os_test.cmx
new file mode 100644
index 0000000..2d7be35
--- /dev/null
+++ b/meta/go_os_test.cmx
@@ -0,0 +1,24 @@
+{
+ "program": {
+ "args": [
+ "--test.timeout",
+ "2m"
+ ],
+ "binary": "test/go_os_test"
+ },
+ "sandbox": {
+ "boot": [
+ "bin",
+ "lib"
+ ],
+ "dev": [
+ "null"
+ ],
+ "features": [
+ "isolated-temp"
+ ],
+ "services": [
+ "fuchsia.process.Launcher"
+ ]
+ }
+}
diff --git a/meta/go_pprof_test.cmx b/meta/go_pprof_test.cmx
new file mode 100644
index 0000000..c2a11572
--- /dev/null
+++ b/meta/go_pprof_test.cmx
@@ -0,0 +1,18 @@
+{
+ "program": {
+ "args": [
+ "--test.v",
+ "--test.timeout",
+ "5m"
+ ],
+ "binary": "test/go_pprof_test"
+ },
+ "sandbox": {
+ "features": [
+ "isolated-temp"
+ ],
+ "services": [
+ "fuchsia.process.Launcher"
+ ]
+ }
+}
diff --git a/meta/go_unsafevalue_test.cmx b/meta/go_unsafevalue_test.cmx
new file mode 100644
index 0000000..5255783
--- /dev/null
+++ b/meta/go_unsafevalue_test.cmx
@@ -0,0 +1,9 @@
+{
+ "program": {
+ "args": [
+ "--test.timeout",
+ "2m"
+ ],
+ "binary": "test/go_unsafevalue_test"
+ }
+}
diff --git a/meta/go_zx_test.cmx b/meta/go_zx_test.cmx
new file mode 100644
index 0000000..c2581e8
--- /dev/null
+++ b/meta/go_zx_test.cmx
@@ -0,0 +1,9 @@
+{
+ "program": {
+ "args": [
+ "--test.timeout",
+ "2m"
+ ],
+ "binary": "test/go_zx_test"
+ }
+}
diff --git a/meta/go_zxwait_test.cmx b/meta/go_zxwait_test.cmx
new file mode 100644
index 0000000..d8330fc
--- /dev/null
+++ b/meta/go_zxwait_test.cmx
@@ -0,0 +1,9 @@
+{
+ "program": {
+ "args": [
+ "--test.timeout",
+ "2m"
+ ],
+ "binary": "test/go_zxwait_test"
+ }
+}
diff --git a/regen-api b/regen-api
new file mode 100755
index 0000000..05a6154
--- /dev/null
+++ b/regen-api
@@ -0,0 +1,16 @@
+#!/usr/bin/env bash
+# Copyright 2021 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+set -euxo pipefail
+
+if [ ! -x "$FUCHSIA_BUILD_DIR" ]; then
+ echo "error: did you fx exec? missing \$FUCHSIA_BUILD_DIR" 1>&2
+ exit 1
+fi
+
+fx ninja -C "$FUCHSIA_BUILD_DIR" host_x64/gen/third_party/go/makefuchsia.stamp
+
+"$FUCHSIA_BUILD_DIR"/host-tools/goroot/bin/go tool api | \
+ grep -e '^pkg syscall/zx' > "$FUCHSIA_DIR"/third_party/go/api/fuchsia.txt
diff --git a/regen-fidl b/regen-fidl
new file mode 100755
index 0000000..ba618ca
--- /dev/null
+++ b/regen-fidl
@@ -0,0 +1,127 @@
+#!/usr/bin/env bash
+# Copyright 2021 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# TODO(pascallouis): better automate this.
+
+set -euxo pipefail
+
+if [ ! -x "${FUCHSIA_DIR}" ]; then
+ echo "error: did you fx exec? missing \$FUCHSIA_DIR" 1>&2
+ exit 1
+fi
+
+if [ ! -x "${FUCHSIA_BUILD_DIR}" ]; then
+ echo "error: did you fx exec? missing \$FUCHSIA_BUILD_DIR" 1>&2
+ exit 1
+fi
+
+pushd "$FUCHSIA_DIR"
+
+FIDLC=$( fx list-build-artifacts --expect-one --name fidlc tools )
+FIDLGEN_GO=$( fx list-build-artifacts --expect-one --name fidlgen_go tools )
+
+fx ninja -C "${FUCHSIA_BUILD_DIR}" $FIDLC $FIDLGEN_GO
+
+tmpout=$(mktemp -d 2>/dev/null || mktemp -d -t 'tmpout')
+ir_file="${tmpout}/out.json"
+
+trap 'rm -rf -- "${tmpout}" && popd > /dev/null' EXIT
+
+# Parameters:
+# $1 = directory where fidl file is found.
+# $2 = output of subdirectory of syscall/zx
+# $3..n = additional arguments needed to generate this target.
+function generate_file {
+ local source_dir=$1
+ shift
+ local package_dir=$1
+ shift
+ out_file=third_party/go/src/syscall/zx/"${package_dir}"/impl.go
+ copyright_line=$(grep -E "^// Copyright [0-9]+" "${out_file}" || \
+ echo "// Copyright $(date +%Y) The Fuchsia Authors. All rights reserved.")
+ "${FUCHSIA_BUILD_DIR}"/$FIDLC \
+ --experimental old_syntax_only \
+ --json "${ir_file}" \
+ "$@" \
+ --files "${source_dir}"/*.fidl
+ "${FUCHSIA_BUILD_DIR}"/$FIDLGEN_GO \
+ -json "${ir_file}" \
+ -output-impl "${tmpout}/impl.go"
+
+ tmpfile=$(mktemp "${tmpout}/tmp.XXXXXXXX")
+ echo "${copyright_line}" > "${tmpfile}"
+ cat << EOF >> "${tmpfile}"
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// Code generated by third_party/go/regen-fidl; DO NOT EDIT.
+
+EOF
+ cat "${tmpout}"/impl.go >> "${tmpfile}"
+ perl -pi -e 's|^// Code generated by fidlgen; DO NOT EDIT.\n$||' "${tmpfile}"
+ perl -pi -e 's|fidl/fuchsia/|syscall/zx/|' "${tmpfile}"
+ ./prebuilt/third_party/go/linux-x64/bin/gofmt -s -w "${tmpfile}"
+ mv -- "${tmpfile}" "${out_file}"
+}
+
+generate_file {third_party/go/src/syscall/zx/,}fidl/internal/bindingstest \
+ --files zircon/vdso/zx_common.fidl zircon/vdso/rights.fidl
+
+generate_file sdk/fidl/fuchsia.mem mem \
+ --files zircon/vdso/zx_common.fidl zircon/vdso/rights.fidl
+
+generate_file sdk/fidl/fuchsia.io2 io2 \
+ --files zircon/vdso/zx_common.fidl zircon/vdso/rights.fidl \
+ --files sdk/fidl/fuchsia.mem/*.fidl
+
+generate_file sdk/fidl/fuchsia.io io \
+ --files zircon/vdso/zx_common.fidl zircon/vdso/rights.fidl \
+ --files sdk/fidl/fuchsia.mem/*.fidl \
+ --files sdk/fidl/fuchsia.io2/*.fidl
+
+generate_file sdk/fidl/fuchsia.posix posix
+
+generate_file sdk/fidl/fuchsia.posix.socket posix/socket \
+ --files zircon/vdso/zx_common.fidl zircon/vdso/rights.fidl \
+ --files sdk/fidl/fuchsia.posix/*.fidl \
+ --files sdk/fidl/fuchsia.net/*.fidl \
+ --files sdk/fidl/fuchsia.mem/*.fidl \
+ --files sdk/fidl/fuchsia.io2/*.fidl \
+ --files sdk/fidl/fuchsia.io/*.fidl
+
+generate_file sdk/fidl/fuchsia.hardware.ethernet hardware/ethernet \
+ --files zircon/vdso/zx_common.fidl zircon/vdso/rights.fidl
+
+generate_file sdk/fidl/fuchsia.hardware.network hardware/network \
+ --files zircon/vdso/zx_common.fidl zircon/vdso/rights.fidl \
+ --files sdk/fidl/fuchsia.net/*.fidl
+
+generate_file sdk/fidl/fuchsia.net.name net/name \
+ --files zircon/vdso/zx_common.fidl zircon/vdso/rights.fidl \
+ --files sdk/fidl/fuchsia.net/*.fidl
+
+generate_file sdk/fidl/fuchsia.net net
+
+generate_file sdk/fidl/fuchsia.diagnostics diagnostics \
+ --files zircon/vdso/zx_common.fidl zircon/vdso/rights.fidl \
+ --files sdk/fidl/fuchsia.mem/*.fidl
+
+generate_file sdk/fidl/fuchsia.logger logger \
+ --files zircon/vdso/zx_common.fidl zircon/vdso/rights.fidl \
+ --files sdk/fidl/fuchsia.mem/*.fidl \
+ --files sdk/fidl/fuchsia.diagnostics/*.fidl
+
+generate_file sdk/fidl/fuchsia.net.stack net/stack \
+ --files zircon/vdso/zx_common.fidl zircon/vdso/rights.fidl \
+ --files sdk/fidl/fuchsia.mem/*.fidl \
+ --files sdk/fidl/fuchsia.io2/*.fidl \
+ --files sdk/fidl/fuchsia.io/*.fidl \
+ --files sdk/fidl/fuchsia.net/*.fidl \
+ --files sdk/fidl/fuchsia.net.name/*.fidl \
+ --files sdk/fidl/fuchsia.hardware.ethernet/*.fidl \
+ --files sdk/fidl/fuchsia.hardware.network/*.fidl \
+ --files sdk/fidl/fuchsia.posix/*.fidl \
+ --files sdk/fidl/fuchsia.posix.socket/*.fidl
+
diff --git a/regen-syscalls b/regen-syscalls
new file mode 100755
index 0000000..d169918
--- /dev/null
+++ b/regen-syscalls
@@ -0,0 +1,35 @@
+#!/usr/bin/env bash
+# Copyright 2021 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+set -euxo pipefail
+
+if [ ! -x "$FUCHSIA_BUILD_DIR" ]; then
+ echo "error: did you fx exec? missing \$FUCHSIA_BUILD_DIR" 1>&2
+ exit 1
+fi
+
+FIDLC=$(fx list-build-artifacts --expect-one --name fidlc tools)
+KAZOO=$(fx list-build-artifacts --expect-one --name kazoo tools)
+
+fx ninja -C "$FUCHSIA_BUILD_DIR" "$FIDLC" "$KAZOO"
+
+"$FUCHSIA_BUILD_DIR/$FIDLC" \
+ --experimental allow_new_syntax \
+ --json /tmp/syscalls.json \
+ --files ../../zircon/vdso/*.fidl
+
+readonly syscall_stubs=src/syscall/zx/syscalls_fuchsia.go
+readonly vdso_keys=src/runtime/vdso_keys_fuchsia.go
+
+"$FUCHSIA_BUILD_DIR/$KAZOO" \
+ --go-syscall-arm64-asm=src/syscall/zx/syscalls_fuchsia_arm64.s \
+ --go-syscall-stubs=$syscall_stubs \
+ --go-syscall-x86-asm=src/syscall/zx/syscalls_fuchsia_amd64.s \
+ --go-vdso-arm64-calls=src/runtime/vdsocalls_fuchsia_arm64.s \
+ --go-vdso-keys=$vdso_keys \
+ --go-vdso-x86-calls=src/runtime/vdsocalls_fuchsia_amd64.s \
+ /tmp/syscalls.json
+
+fx format-code --files="$syscall_stubs $vdso_keys"
diff --git a/src/cmd/api/run.go b/src/cmd/api/run.go
index 81979de..f6e52af 100644
--- a/src/cmd/api/run.go
+++ b/src/cmd/api/run.go
@@ -69,7 +69,7 @@
}
var apiFiles []string
for _, fn := range fs {
- if strings.HasPrefix(fn, "go1") {
+ if strings.HasPrefix(fn, "go1") || strings.HasPrefix(fn, "fuchsia") {
apiFiles = append(apiFiles, filepath.Join(apiDir, fn))
}
}
diff --git a/src/cmd/dist/build.go b/src/cmd/dist/build.go
index 1abb03b..8776f31 100644
--- a/src/cmd/dist/build.go
+++ b/src/cmd/dist/build.go
@@ -88,6 +88,7 @@
"android",
"solaris",
"freebsd",
+ "fuchsia",
"nacl", // keep;
"netbsd",
"openbsd",
@@ -1561,6 +1562,8 @@
"freebsd/amd64": true,
"freebsd/arm": true,
"freebsd/arm64": true,
+ "fuchsia/amd64": true,
+ "fuchsia/arm64": true,
"illumos/amd64": true,
"linux/386": true,
"linux/amd64": true,
diff --git a/src/cmd/go/internal/base/signal_notunix.go b/src/cmd/go/internal/base/signal_notunix.go
index 5cc0b0f..0fbc1b2 100644
--- a/src/cmd/go/internal/base/signal_notunix.go
+++ b/src/cmd/go/internal/base/signal_notunix.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build plan9 || windows
-// +build plan9 windows
+//go:build plan9 || fuchsia || windows
+// +build plan9 fuchsia windows
package base
diff --git a/src/cmd/go/internal/load/pkg.go b/src/cmd/go/internal/load/pkg.go
index a83cc9a..ef5b383 100644
--- a/src/cmd/go/internal/load/pkg.go
+++ b/src/cmd/go/internal/load/pkg.go
@@ -2212,6 +2212,11 @@
// LinkerDeps returns the list of linker-induced dependencies for main package p.
func LinkerDeps(p *Package) []string {
+ // Don't add deps to Fuchsia internal syscall stuff.
+ if p != nil && p.ImportPath == "syscall/zx" {
+ return nil
+ }
+
// Everything links runtime.
deps := []string{"runtime"}
@@ -2248,6 +2253,8 @@
if cfg.BuildContext.GOARCH != "arm64" {
return true
}
+ case "fuchsia":
+ return true
case "ios":
return true
}
diff --git a/src/cmd/go/internal/work/exec.go b/src/cmd/go/internal/work/exec.go
index b506b83..981bc13 100644
--- a/src/cmd/go/internal/work/exec.go
+++ b/src/cmd/go/internal/work/exec.go
@@ -2494,6 +2494,7 @@
switch cfg.Goos {
case "windows":
a = append(a, "-mthreads")
+ case "fuchsia":
default:
a = append(a, "-pthread")
}
diff --git a/src/cmd/go/internal/work/gccgo.go b/src/cmd/go/internal/work/gccgo.go
index 1499536..dbc1ffd 100644
--- a/src/cmd/go/internal/work/gccgo.go
+++ b/src/cmd/go/internal/work/gccgo.go
@@ -485,7 +485,12 @@
// split-stack and non-split-stack code in a single -r
// link, and libgo picks up non-split-stack code from
// libffi.
- ldflags = append(ldflags, "-Wl,-r", "-nostdlib")
+ if cfg.Goos == "fuchsia" {
+ ldflags = append(ldflags, "-r")
+ } else {
+ ldflags = append(ldflags, "-Wl,-r")
+ }
+ ldflags = append(ldflags, "-nostdlib")
ldflags = append(ldflags, goLibBegin...)
if nopie := b.gccNoPie([]string{tools.linker()}); nopie != "" {
diff --git a/src/cmd/go/internal/work/init.go b/src/cmd/go/internal/work/init.go
index 37a3e2d..e57e301 100644
--- a/src/cmd/go/internal/work/init.go
+++ b/src/cmd/go/internal/work/init.go
@@ -122,7 +122,7 @@
codegenArg = "-shared"
}
- case "dragonfly", "freebsd", "illumos", "linux", "netbsd", "openbsd", "solaris":
+ case "dragonfly", "freebsd", "fuchsia", "illumos", "linux", "netbsd", "openbsd", "solaris":
// Use -shared so that the result is
// suitable for inclusion in a PIE or
// shared library.
@@ -147,7 +147,7 @@
ldBuildmode = "c-shared"
case "default":
switch cfg.Goos {
- case "android":
+ case "android", "fuchsia":
codegenArg = "-shared"
ldBuildmode = "pie"
case "windows":
diff --git a/src/cmd/internal/moddeps/moddeps_test.go b/src/cmd/internal/moddeps/moddeps_test.go
index 56c3b25..06cf08f 100644
--- a/src/cmd/internal/moddeps/moddeps_test.go
+++ b/src/cmd/internal/moddeps/moddeps_test.go
@@ -75,6 +75,7 @@
cmd.Stderr = new(strings.Builder)
out, err := cmd.Output()
if err != nil {
+ t.Skip("TODO(https://github.com/golang/go/issues/46695): this test fails on ROFS")
t.Fatalf("%s: %v\n%s", strings.Join(cmd.Args, " "), err, cmd.Stderr)
}
if strings.TrimSpace(string(out)) != m.Path {
diff --git a/src/cmd/internal/obj/x86/asm6.go b/src/cmd/internal/obj/x86/asm6.go
index 17fa767..8635c91 100644
--- a/src/cmd/internal/obj/x86/asm6.go
+++ b/src/cmd/internal/obj/x86/asm6.go
@@ -2523,6 +2523,9 @@
return 0x64 // FS
}
+ case objabi.Hfuchsia:
+ log.Fatalf("unknown TLS base register, fuchsia requires PIC code")
+
case objabi.Hdragonfly,
objabi.Hfreebsd,
objabi.Hnetbsd,
@@ -5145,7 +5148,7 @@
default:
log.Fatalf("unknown TLS base location for %v", ctxt.Headtype)
- case objabi.Hlinux, objabi.Hfreebsd:
+ case objabi.Hlinux, objabi.Hfreebsd, objabi.Hfuchsia:
if !ctxt.Flag_shared {
log.Fatalf("unknown TLS base location for linux/freebsd without -shared")
}
diff --git a/src/cmd/internal/obj/x86/obj6.go b/src/cmd/internal/obj/x86/obj6.go
index e2732d5..3075963 100644
--- a/src/cmd/internal/obj/x86/obj6.go
+++ b/src/cmd/internal/obj/x86/obj6.go
@@ -64,6 +64,8 @@
return false
case objabi.Hlinux, objabi.Hfreebsd:
return !ctxt.Flag_shared
+ case objabi.Hfuchsia:
+ return false
}
return true
diff --git a/src/cmd/internal/objabi/head.go b/src/cmd/internal/objabi/head.go
index 48ff292..d4302ab 100644
--- a/src/cmd/internal/objabi/head.go
+++ b/src/cmd/internal/objabi/head.go
@@ -40,6 +40,7 @@
Hdarwin
Hdragonfly
Hfreebsd
+ Hfuchsia
Hjs
Hlinux
Hnetbsd
@@ -60,6 +61,8 @@
*h = Hdragonfly
case "freebsd":
*h = Hfreebsd
+ case "fuchsia":
+ *h = Hfuchsia
case "js":
*h = Hjs
case "linux", "android":
@@ -90,6 +93,8 @@
return "dragonfly"
case Hfreebsd:
return "freebsd"
+ case Hfuchsia:
+ return "fuchsia"
case Hjs:
return "js"
case Hlinux:
diff --git a/src/cmd/link/internal/amd64/asm.go b/src/cmd/link/internal/amd64/asm.go
index fb96049..2c40974 100644
--- a/src/cmd/link/internal/amd64/asm.go
+++ b/src/cmd/link/internal/amd64/asm.go
@@ -38,6 +38,7 @@
"cmd/link/internal/sym"
"debug/elf"
"log"
+ "strings"
)
func PADDR(x uint32) uint32 {
@@ -424,6 +425,8 @@
if siz == 4 {
if ldr.SymType(r.Xsym) == sym.SDYNIMPORT && ldr.SymElfType(r.Xsym) == elf.STT_FUNC {
out.Write64(uint64(elf.R_X86_64_PLT32) | uint64(elfsym)<<32)
+ } else if ldr.SymType(r.Xsym) == sym.SDYNIMPORT && ctxt.HeadType == objabi.Hfuchsia && strings.HasPrefix(ldr.SymName(r.Xsym), "vdso_") {
+ out.Write64(uint64(elf.R_X86_64_GOTPCREL) | uint64(elfsym)<<32)
} else {
out.Write64(uint64(elf.R_X86_64_PC32) | uint64(elfsym)<<32)
}
diff --git a/src/cmd/link/internal/amd64/obj.go b/src/cmd/link/internal/amd64/obj.go
index d09c90e..ffc5839 100644
--- a/src/cmd/link/internal/amd64/obj.go
+++ b/src/cmd/link/internal/amd64/obj.go
@@ -101,6 +101,7 @@
case objabi.Hlinux, /* elf64 executable */
objabi.Hfreebsd, /* freebsd */
+ objabi.Hfuchsia, /* fuchsia */
objabi.Hnetbsd, /* netbsd */
objabi.Hopenbsd, /* openbsd */
objabi.Hdragonfly, /* dragonfly */
diff --git a/src/cmd/link/internal/arm64/obj.go b/src/cmd/link/internal/arm64/obj.go
index 9c74598..ffba067 100644
--- a/src/cmd/link/internal/arm64/obj.go
+++ b/src/cmd/link/internal/arm64/obj.go
@@ -92,6 +92,7 @@
case objabi.Hlinux, /* arm64 elf */
objabi.Hfreebsd,
+ objabi.Hfuchsia,
objabi.Hnetbsd,
objabi.Hopenbsd:
ld.Elfinit(ctxt)
diff --git a/src/cmd/link/internal/ld/asmb.go b/src/cmd/link/internal/ld/asmb.go
index d6ecb28..4e8b908 100644
--- a/src/cmd/link/internal/ld/asmb.go
+++ b/src/cmd/link/internal/ld/asmb.go
@@ -99,6 +99,7 @@
// Elf
case objabi.Hdragonfly,
objabi.Hfreebsd,
+ objabi.Hfuchsia,
objabi.Hlinux,
objabi.Hnetbsd,
objabi.Hopenbsd,
diff --git a/src/cmd/link/internal/ld/config.go b/src/cmd/link/internal/ld/config.go
index 20f1d0b..ae43828 100644
--- a/src/cmd/link/internal/ld/config.go
+++ b/src/cmd/link/internal/ld/config.go
@@ -34,6 +34,9 @@
default:
return fmt.Errorf("invalid buildmode: %q", s)
case "exe":
+ if buildcfg.GOOS == "fuchsia" {
+ return badmode()
+ }
switch buildcfg.GOOS + "/" + buildcfg.GOARCH {
case "darwin/arm64", "windows/arm", "windows/arm64": // On these platforms, everything is PIE
*mode = BuildModePIE
@@ -42,7 +45,7 @@
}
case "pie":
switch buildcfg.GOOS {
- case "aix", "android", "linux", "windows", "darwin", "ios":
+ case "aix", "android", "linux", "fuchsia", "windows", "darwin", "ios":
case "freebsd":
switch buildcfg.GOARCH {
case "amd64":
@@ -55,7 +58,7 @@
*mode = BuildModePIE
case "c-archive":
switch buildcfg.GOOS {
- case "aix", "darwin", "ios", "linux":
+ case "aix", "darwin", "ios", "linux", "fuchsia":
case "freebsd":
switch buildcfg.GOARCH {
case "amd64":
diff --git a/src/cmd/link/internal/ld/data.go b/src/cmd/link/internal/ld/data.go
index 70fbb9d..5efc947 100644
--- a/src/cmd/link/internal/ld/data.go
+++ b/src/cmd/link/internal/ld/data.go
@@ -237,8 +237,8 @@
}
// We need to be able to reference dynimport symbols when linking against
- // shared libraries, and AIX, Darwin, OpenBSD and Solaris always need it.
- if !target.IsAIX() && !target.IsDarwin() && !target.IsSolaris() && !target.IsOpenbsd() && rs != 0 && rst == sym.SDYNIMPORT && !target.IsDynlinkingGo() && !ldr.AttrSubSymbol(rs) {
+ // shared libraries, and Fuchsia, AIX, Darwin, OpenBSD and Solaris always need it.
+ if !target.IsFuchsia() && !target.IsAIX() && !target.IsDarwin() && !target.IsSolaris() && !target.IsOpenbsd() && rs != 0 && rst == sym.SDYNIMPORT && !target.IsDynlinkingGo() && !ldr.AttrSubSymbol(rs) {
if !(target.IsPPC64() && target.IsExternal() && ldr.SymName(rs) == ".TOC.") {
st.err.Errorf(s, "unhandled relocation for %s (type %d (%s) rtype %d (%s))", ldr.SymName(rs), rst, rst, rt, sym.RelocName(target.Arch, rt))
}
diff --git a/src/cmd/link/internal/ld/elf.go b/src/cmd/link/internal/ld/elf.go
index 8101163..e8b025b 100644
--- a/src/cmd/link/internal/ld/elf.go
+++ b/src/cmd/link/internal/ld/elf.go
@@ -1768,6 +1768,9 @@
case objabi.Hfreebsd:
interpreter = thearch.Freebsddynld
+ case objabi.Hfuchsia:
+ interpreter = "lib/ld.so.1"
+
case objabi.Hnetbsd:
interpreter = thearch.Netbsddynld
@@ -2014,7 +2017,7 @@
}
}
- if ctxt.HeadType == objabi.Hlinux {
+ if ctxt.HeadType == objabi.Hlinux || ctxt.HeadType == objabi.Hfuchsia {
ph := newElfPhdr()
ph.Type = elf.PT_GNU_STACK
ph.Flags = elf.PF_W + elf.PF_R
diff --git a/src/cmd/link/internal/ld/lib.go b/src/cmd/link/internal/ld/lib.go
index 644faeb..3a9c4fb 100644
--- a/src/cmd/link/internal/ld/lib.go
+++ b/src/cmd/link/internal/ld/lib.go
@@ -1455,7 +1455,10 @@
}
// Force global symbols to be exported for dlopen, etc.
- if ctxt.IsELF {
+ if ctxt.HeadType == objabi.Hfuchsia && !strings.Contains(argv[0], "clang") {
+ // Find libgcc
+ argv = append(argv, ctxt.findLibPathCmd("--print-libgcc-file-name", "libgcc"))
+ } else if ctxt.IsELF {
argv = append(argv, "-rdynamic")
}
if ctxt.HeadType == objabi.Haix {
@@ -1593,6 +1596,9 @@
argv = append(argv, "-Wl,--start-group", "-lmingwex", "-lmingw32", "-Wl,--end-group")
argv = append(argv, peimporteddlls()...)
}
+ if ctxt.HeadType == objabi.Hfuchsia && strings.Contains(argv[0], "clang") {
+ argv = append(argv, "-lzircon", "-lfdio")
+ }
if ctxt.Debugvlog != 0 {
ctxt.Logf("host link:")
diff --git a/src/cmd/link/internal/ld/sym.go b/src/cmd/link/internal/ld/sym.go
index 7263996..b3218cd 100644
--- a/src/cmd/link/internal/ld/sym.go
+++ b/src/cmd/link/internal/ld/sym.go
@@ -80,6 +80,7 @@
case objabi.Hlinux,
objabi.Hfreebsd,
+ objabi.Hfuchsia,
objabi.Hnetbsd,
objabi.Hopenbsd,
objabi.Hdragonfly,
diff --git a/src/cmd/link/internal/ld/target.go b/src/cmd/link/internal/ld/target.go
index f68de8f..000f301 100644
--- a/src/cmd/link/internal/ld/target.go
+++ b/src/cmd/link/internal/ld/target.go
@@ -142,6 +142,11 @@
return t.HeadType == objabi.Hdarwin
}
+func (t *Target) IsFuchsia() bool {
+ t.mustSetHeadType()
+ return t.HeadType == objabi.Hfuchsia
+}
+
func (t *Target) IsWindows() bool {
t.mustSetHeadType()
return t.HeadType == objabi.Hwindows
diff --git a/src/crypto/rand/rand_fuchsia.go b/src/crypto/rand/rand_fuchsia.go
new file mode 100644
index 0000000..1ce3446
--- /dev/null
+++ b/src/crypto/rand/rand_fuchsia.go
@@ -0,0 +1,23 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package rand
+
+import "syscall/zx"
+
+func init() {
+ Reader = new(cprngReader)
+}
+
+// cprngReader uses the PRNG exposed by zircon syscall.
+//
+// TODO(crawshaw): does it perform as well as /dev/urandom?
+// If not, borrow newReader from rand_unix.go and use this
+// as the entropy source.
+type cprngReader struct{}
+
+func (r *cprngReader) Read(b []byte) (n int, err error) {
+ zx.RandRead(b)
+ return len(b), nil
+}
diff --git a/src/crypto/x509/root_fuchsia.go b/src/crypto/x509/root_fuchsia.go
new file mode 100644
index 0000000..1e60d21
--- /dev/null
+++ b/src/crypto/x509/root_fuchsia.go
@@ -0,0 +1,16 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package x509
+
+// Possible certificate files; stop after finding one.
+var certFiles = []string{
+ "/config/ssl/cert.pem",
+}
+
+// Possible directories with certificate files; stop after successfully
+// reading at least one file from a directory.
+var certDirectories = []string{
+ "/config/ssl",
+}
diff --git a/src/crypto/x509/root_unix.go b/src/crypto/x509/root_unix.go
index dede825..92dcc34 100644
--- a/src/crypto/x509/root_unix.go
+++ b/src/crypto/x509/root_unix.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build aix || dragonfly || freebsd || (js && wasm) || linux || netbsd || openbsd || solaris
-// +build aix dragonfly freebsd js,wasm linux netbsd openbsd solaris
+//go:build aix || dragonfly || freebsd || fuchsia || (js && wasm) || linux || netbsd || openbsd || solaris
+// +build aix dragonfly freebsd fuchsia js,wasm linux netbsd openbsd solaris
package x509
diff --git a/src/go/build/deps_test.go b/src/go/build/deps_test.go
index 45e2f25..df55bab 100644
--- a/src/go/build/deps_test.go
+++ b/src/go/build/deps_test.go
@@ -566,6 +566,7 @@
// provide access to every source file.
t.Skipf("skipping on %s/%s, missing full GOROOT", runtime.GOOS, runtime.GOARCH)
}
+ t.Skip("fuchsia dependencies need reworking")
ctxt := Default
all, err := listStdPkgs(ctxt.GOROOT)
diff --git a/src/go/build/syslist.go b/src/go/build/syslist.go
index 1275f7c..3ccd5df 100644
--- a/src/go/build/syslist.go
+++ b/src/go/build/syslist.go
@@ -7,5 +7,5 @@
// List of past, present, and future known GOOS and GOARCH values.
// Do not remove from this list, as these are used for go/build filename matching.
-const goosList = "aix android darwin dragonfly freebsd hurd illumos ios js linux nacl netbsd openbsd plan9 solaris windows zos "
+const goosList = "aix android darwin dragonfly freebsd fuchsia hurd illumos ios js linux nacl netbsd openbsd plan9 solaris windows zos "
const goarchList = "386 amd64 amd64p32 arm armbe arm64 arm64be ppc64 ppc64le mips mipsle mips64 mips64le mips64p32 mips64p32le ppc riscv riscv64 s390 s390x sparc sparc64 wasm "
diff --git a/src/internal/poll/fd_fsync_posix.go b/src/internal/poll/fd_fsync_posix.go
index 651a5ec..902914e 100644
--- a/src/internal/poll/fd_fsync_posix.go
+++ b/src/internal/poll/fd_fsync_posix.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build aix || dragonfly || freebsd || (js && wasm) || linux || netbsd || openbsd || solaris
-// +build aix dragonfly freebsd js,wasm linux netbsd openbsd solaris
+//go:build aix || dragonfly || freebsd || fuchsia || (js && wasm) || linux || netbsd || openbsd || solaris
+// +build aix dragonfly freebsd fuchsia js,wasm linux netbsd openbsd solaris
package poll
diff --git a/src/internal/poll/fd_fuchsia.go b/src/internal/poll/fd_fuchsia.go
new file mode 100644
index 0000000..b95c57b
--- /dev/null
+++ b/src/internal/poll/fd_fuchsia.go
@@ -0,0 +1,355 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// `go mod` ignores file names for the purpose of resolving
+// dependencies, and zxsocket doesn't build on not-Fuchsia.
+//go:build fuchsia
+// +build fuchsia
+
+package poll
+
+import (
+ "context"
+ "io"
+ "sync/atomic"
+ "syscall"
+ "syscall/zx"
+ "syscall/zx/net"
+ "syscall/zx/zxsocket"
+ "unsafe"
+)
+
+// FD is a file descriptor. The net and os packages embed this type in
+// a larger type representing a network connection or OS file.
+type FD struct {
+ // Lock sysfd and serialize access to Read and Write methods.
+ fdmu fdMutex
+
+ // System file descriptor. Immutable until Close.
+ Sysfd int
+
+ // I/O poller.
+ pd pollDesc
+
+ // Whether this is a streaming descriptor, as opposed to a
+ // packet-based descriptor like a UDP socket.
+ IsStream bool
+
+ // Whether a zero byte read indicates EOF. This is false for a
+ // message based socket connection.
+ ZeroReadIsEOF bool
+
+ // Whether this is a normal file.
+ isFile bool
+
+ // Whether in blocking mode
+ isBlocking uint32
+}
+
+// Init initializes the FD. The Sysfd field should already be set.
+// This can be called multiple times on a single FD.
+// The net argument is a network name from the net package (e.g., "tcp"),
+// or "file".
+// Set pollable to true if fd should be managed by runtime netpoll.
+func (fd *FD) Init(net string, pollable bool) error {
+ // We don't actually care about the various network types.
+ if net == "file" {
+ fd.isFile = true
+ }
+ if !pollable {
+ fd.isBlocking = 1
+ return nil
+ }
+ err := fd.pd.init(fd)
+ if err != nil {
+ fd.isBlocking = 1
+ }
+ return err
+}
+
+// see fd.Close() for reasoning.
+func close(fd *FD) error {
+ sysfd := atomic.SwapInt64((*int64)(unsafe.Pointer(&fd.Sysfd)), -1)
+ if sysfd != -1 {
+ return syscall.Close(int(sysfd))
+ }
+ return nil
+}
+
+// Destroy closes the file descriptor. This is called when there are
+// no remaining references.
+func (fd *FD) destroy() error {
+ // Poller may want to unregister fd in readiness notification mechanism,
+ // so this must be executed before closing the fd.
+ fd.pd.close()
+
+ return close(fd)
+}
+
+// Close closes the FD. The underlying file descriptor is closed by the
+// destroy method when there are no remaining references.
+func (fd *FD) Close() error {
+ if !fd.fdmu.increfAndClose() {
+ return errClosing(fd.isFile)
+ }
+
+ fd.pd.evict()
+ // Note: On other implementations, evict will unblock sibling refs, however,
+ // that can't be done yet here. Instead, we have to forcefully close the
+ // connection, sadly ahead of destroy, in order to unblock others.
+ err := close(fd)
+
+ fd.decref()
+
+ return err
+}
+
+func (fd *FD) Read(p []byte) (int, error) {
+ if err := fd.readLock(); err != nil {
+ return 0, err
+ }
+ defer fd.readUnlock()
+ if len(p) == 0 {
+ // If the caller wanted a zero byte read, return immediately
+ // without trying (but after acquiring the readLock).
+ return 0, nil
+ }
+ if err := fd.pd.prepareRead(fd.isFile); err != nil {
+ return 0, err
+ }
+ // TODO: pollable() read
+ n, err := syscall.Read(fd.Sysfd, p)
+ err = fd.eofError(n, err)
+ return n, err
+}
+
+// Pread wraps the pread system call.
+func (fd *FD) Pread(p []byte, off int64) (int, error) {
+ // Call incref, not readLock, because since pread specifies the
+ // offset it is independent from other reads.
+ // Similarly, using the poller doesn't make sense for pread.
+ if err := fd.incref(); err != nil {
+ return 0, err
+ }
+ n, err := syscall.Pread(fd.Sysfd, p, off)
+ if err != nil {
+ n = 0
+ }
+ fd.decref()
+ err = fd.eofError(n, err)
+ return n, err
+}
+
+// Write implements io.Writer.
+func (fd *FD) Write(p []byte) (int, error) {
+ if err := fd.writeLock(); err != nil {
+ return 0, err
+ }
+ defer fd.writeUnlock()
+ if err := fd.pd.prepareWrite(fd.isFile); err != nil {
+ return 0, err
+ }
+ var nn int
+ for {
+ n, err := syscall.Write(fd.Sysfd, p[nn:])
+ if n > 0 {
+ nn += n
+ }
+ if nn == len(p) {
+ return nn, err
+ }
+ if err != nil {
+ return nn, err
+ }
+ if n == 0 {
+ return nn, io.ErrUnexpectedEOF
+ }
+ }
+}
+
+// Pwrite wraps the pwrite system call.
+func (fd *FD) Pwrite(p []byte, off int64) (int, error) {
+ // Call incref, not writeLock, because since pwrite specifies the
+ // offset it is independent from other writes.
+ // Similarly, using the poller doesn't make sense for pwrite.
+ if err := fd.incref(); err != nil {
+ return 0, err
+ }
+ defer fd.decref()
+ var nn int
+ for {
+ n, err := syscall.Pwrite(fd.Sysfd, p[nn:], off+int64(nn))
+ if n > 0 {
+ nn += n
+ }
+ if nn == len(p) {
+ return nn, err
+ }
+ if err != nil {
+ return nn, err
+ }
+ if n == 0 {
+ return nn, io.ErrUnexpectedEOF
+ }
+ }
+}
+
+// Accept wraps the accept network call.
+func (fd *FD) Accept() (zxsocket.Socket, net.SocketAddress, error) {
+ if err := fd.readLock(); err != nil {
+ return nil, net.SocketAddress{}, err
+ }
+ defer fd.readUnlock()
+
+ if err := fd.pd.prepareRead(fd.isFile); err != nil {
+ return nil, net.SocketAddress{}, err
+ }
+
+ s, ok := syscall.FDIOForFD(fd.Sysfd).(*zxsocket.StreamSocket)
+ if !ok {
+ return nil, net.SocketAddress{}, syscall.EBADF
+ }
+ var (
+ newS zxsocket.Socket
+ addr *net.SocketAddress
+ err error
+ )
+ for i := 0; i < 2; i++ {
+ newS, addr, err = s.Accept(true)
+ if err != syscall.EAGAIN {
+ if err, ok := err.(*zx.Error); ok {
+ switch err.Status {
+ case zx.ErrPeerClosed, zx.ErrBadHandle:
+ return nil, net.SocketAddress{}, errClosing(fd.isFile)
+ }
+ }
+ if addr == nil {
+ return nil, net.SocketAddress{}, errClosing(fd.isFile)
+ }
+ break
+ }
+
+ // TODO: non-blocking support, pass this to the poller
+ obs, err := s.Wait(context.Background(), zxsocket.SignalStreamIncoming|zx.SignalSocketPeerClosed)
+ if err != nil {
+ if err, ok := err.(*zx.Error); ok {
+ switch err.Status {
+ case zx.ErrCanceled, zx.ErrBadHandle:
+ return nil, net.SocketAddress{}, errClosing(fd.isFile)
+ }
+ }
+ return nil, net.SocketAddress{}, err
+ }
+ if obs&zx.SignalSocketPeerClosed != 0 {
+ return nil, net.SocketAddress{}, errClosing(fd.isFile)
+ }
+ if obs&zxsocket.SignalStreamIncoming != 0 {
+ continue
+ }
+ panic("unreachable")
+ }
+ return newS, *addr, err
+}
+
+// Seek wraps syscall.Seek.
+func (fd *FD) Seek(offset int64, whence int) (int64, error) {
+ if err := fd.incref(); err != nil {
+ return 0, err
+ }
+ defer fd.decref()
+ return syscall.Seek(fd.Sysfd, offset, whence)
+}
+
+// ReadDirent wraps syscall.ReadDirent.
+// We treat this like an ordinary system call rather than a call
+// that tries to fill the buffer.
+func (fd *FD) ReadDirent(buf []byte) (int, error) {
+ if err := fd.incref(); err != nil {
+ return 0, err
+ }
+ defer fd.decref()
+ return syscall.ReadDirent(fd.Sysfd, buf)
+}
+
+// Fchmod wraps syscall.Fchmod.
+func (fd *FD) Fchmod(mode uint32) error {
+ if err := fd.incref(); err != nil {
+ return err
+ }
+ defer fd.decref()
+ return syscall.Fchmod(fd.Sysfd, mode)
+}
+
+// Fchdir wraps syscall.Fchdir.
+func (fd *FD) Fchdir() error {
+ if err := fd.incref(); err != nil {
+ return err
+ }
+ defer fd.decref()
+ return syscall.Fchdir(fd.Sysfd)
+}
+
+// Fstat wraps syscall.Fstat
+func (fd *FD) Fstat(s *syscall.Stat_t) error {
+ if err := fd.incref(); err != nil {
+ return err
+ }
+ defer fd.decref()
+ return syscall.Fstat(fd.Sysfd, s)
+}
+
+func IsPollDescriptor(fd uintptr) bool {
+ return false
+}
+
+// RawRead invokes the user-defined function f for a read operation.
+func (fd *FD) RawRead(f func(uintptr) bool) error {
+ if err := fd.readLock(); err != nil {
+ return err
+ }
+ defer fd.readUnlock()
+ if err := fd.pd.prepareRead(fd.isFile); err != nil {
+ return err
+ }
+ for {
+ if f(uintptr(fd.Sysfd)) {
+ return nil
+ }
+ if err := fd.pd.waitRead(fd.isFile); err != nil {
+ return err
+ }
+ }
+}
+
+// RawWrite invokes the user-defined function f for a write operation.
+func (fd *FD) RawWrite(f func(uintptr) bool) error {
+ if err := fd.writeLock(); err != nil {
+ return err
+ }
+ defer fd.writeUnlock()
+ if err := fd.pd.prepareWrite(fd.isFile); err != nil {
+ return err
+ }
+ for {
+ if f(uintptr(fd.Sysfd)) {
+ return nil
+ }
+ if err := fd.pd.waitWrite(fd.isFile); err != nil {
+ return err
+ }
+ }
+}
+
+// SetBlocking puts the file into blocking mode.
+func (fd *FD) SetBlocking() error {
+ if err := fd.incref(); err != nil {
+ return err
+ }
+ defer fd.decref()
+ // Atomic store so that concurrent calls to SetBlocking
+ // do not cause a race condition. isBlocking only ever goes
+ // from 0 to 1 so there is no real race here.
+ atomic.StoreUint32(&fd.isBlocking, 1)
+ return syscall.SetNonblock(fd.Sysfd, false)
+}
diff --git a/src/internal/poll/fd_poll_fuchsia.go b/src/internal/poll/fd_poll_fuchsia.go
new file mode 100644
index 0000000..94188b7
--- /dev/null
+++ b/src/internal/poll/fd_poll_fuchsia.go
@@ -0,0 +1,75 @@
+// Copyright 2013 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.
+
+// TODO: use fd_poll_runtime.go for fuchsia
+
+package poll
+
+import (
+ "time"
+)
+
+type pollDesc struct {
+ fd *FD
+ closing bool
+}
+
+func (pd *pollDesc) init(fd *FD) error { pd.fd = fd; return nil }
+
+func (pd *pollDesc) close() {}
+
+func (pd *pollDesc) evict() {
+ pd.closing = true
+}
+
+func (pd *pollDesc) prepare(mode int, isFile bool) error {
+ if pd.closing {
+ return errClosing(isFile)
+ }
+ return nil
+}
+
+func (pd *pollDesc) prepareRead(isFile bool) error { return pd.prepare('r', isFile) }
+
+func (pd *pollDesc) prepareWrite(isFile bool) error { return pd.prepare('w', isFile) }
+
+func (pd *pollDesc) wait(mode int, isFile bool) error {
+ if pd.closing {
+ return errClosing(isFile)
+ }
+ return ErrDeadlineExceeded
+}
+
+func (pd *pollDesc) waitRead(isFile bool) error { return pd.wait('r', isFile) }
+
+func (pd *pollDesc) waitWrite(isFile bool) error { return pd.wait('w', isFile) }
+
+func (pd *pollDesc) waitCanceled(mode int) {}
+
+func (pd *pollDesc) pollable() bool { return true }
+
+// SetDeadline sets the read and write deadlines associated with fd.
+func (fd *FD) SetDeadline(t time.Time) error {
+ return setDeadlineImpl(fd, t, 'r'+'w')
+}
+
+// SetReadDeadline sets the read deadline associated with fd.
+func (fd *FD) SetReadDeadline(t time.Time) error {
+ return setDeadlineImpl(fd, t, 'r')
+}
+
+// SetWriteDeadline sets the write deadline associated with fd.
+func (fd *FD) SetWriteDeadline(t time.Time) error {
+ return setDeadlineImpl(fd, t, 'w')
+}
+
+func setDeadlineImpl(fd *FD, t time.Time, mode int) error {
+ return ErrNoDeadline // TODO set deadline
+}
+
+// PollDescriptor returns the descriptor being used by the poller,
+// or ^uintptr(0) if there isn't one. This is only used for testing.
+func PollDescriptor() uintptr {
+ return ^uintptr(0)
+}
diff --git a/src/internal/poll/fd_posix.go b/src/internal/poll/fd_posix.go
index 487f328..214141e 100644
--- a/src/internal/poll/fd_posix.go
+++ b/src/internal/poll/fd_posix.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build aix || darwin || dragonfly || freebsd || (js && wasm) || linux || netbsd || openbsd || solaris || windows
-// +build aix darwin dragonfly freebsd js,wasm linux netbsd openbsd solaris windows
+//go:build aix || darwin || dragonfly || freebsd || fuchsia || (js && wasm) || linux || netbsd || openbsd || solaris || windows
+// +build aix darwin dragonfly freebsd fuchsia js,wasm linux netbsd openbsd solaris windows
package poll
diff --git a/src/internal/syscall/unix/nonblocking_fuchsia.go b/src/internal/syscall/unix/nonblocking_fuchsia.go
new file mode 100644
index 0000000..ff67c75
--- /dev/null
+++ b/src/internal/syscall/unix/nonblocking_fuchsia.go
@@ -0,0 +1,9 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package unix
+
+func IsNonblock(fd int) (nonblocking bool, err error) {
+ return false, nil
+}
diff --git a/src/internal/testenv/testenv.go b/src/internal/testenv/testenv.go
index c902b14..b50f2a1 100644
--- a/src/internal/testenv/testenv.go
+++ b/src/internal/testenv/testenv.go
@@ -43,7 +43,7 @@
return false
}
switch runtime.GOOS {
- case "android", "js", "ios":
+ case "android", "fuchsia", "js", "ios":
return false
}
return true
@@ -163,14 +163,14 @@
// HasExternalNetwork reports whether the current system can use
// external (non-localhost) networks.
func HasExternalNetwork() bool {
- return !testing.Short() && runtime.GOOS != "js"
+ return !testing.Short() && runtime.GOOS != "js" && runtime.GOOS != "fuchsia"
}
// MustHaveExternalNetwork checks that the current system can use
// external (non-localhost) networks.
// If not, MustHaveExternalNetwork calls t.Skip with an explanation.
func MustHaveExternalNetwork(t testing.TB) {
- if runtime.GOOS == "js" {
+ if runtime.GOOS == "js" || runtime.GOOS == "fuchsia" {
t.Skipf("skipping test: no external network on %s", runtime.GOOS)
}
if testing.Short() {
diff --git a/src/internal/testenv/testenv_notwin.go b/src/internal/testenv/testenv_notwin.go
index 846ec93..a92fd90 100644
--- a/src/internal/testenv/testenv_notwin.go
+++ b/src/internal/testenv/testenv_notwin.go
@@ -13,7 +13,7 @@
func hasSymlink() (ok bool, reason string) {
switch runtime.GOOS {
- case "android", "plan9":
+ case "android", "fuchsia", "plan9":
return false, ""
}
diff --git a/src/io/io_fuchsia.go b/src/io/io_fuchsia.go
new file mode 100644
index 0000000..f8806d7
--- /dev/null
+++ b/src/io/io_fuchsia.go
@@ -0,0 +1,13 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package io
+
+import (
+ "syscall/zx"
+)
+
+func init() {
+ zx.EOF = EOF
+}
diff --git a/src/mime/type_fuchsia.go b/src/mime/type_fuchsia.go
new file mode 100644
index 0000000..72e5c07
--- /dev/null
+++ b/src/mime/type_fuchsia.go
@@ -0,0 +1,13 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package mime
+
+func init() {
+ osInitMime = initMimeFuchsia
+}
+
+func initMimeFuchsia() {
+ // TODO: find an equivalent to /etc/mime.types.
+}
diff --git a/src/net/addrselect.go b/src/net/addrselect.go
index ae93c59..530eb67 100644
--- a/src/net/addrselect.go
+++ b/src/net/addrselect.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris
-// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
+//go:build aix || darwin || dragonfly || freebsd || fuchsia || linux || netbsd || openbsd || solaris
+// +build aix darwin dragonfly freebsd fuchsia linux netbsd openbsd solaris
// Minimal RFC 6724 address selection.
diff --git a/src/net/cgo_stub.go b/src/net/cgo_stub.go
index 039e4be..962305a 100644
--- a/src/net/cgo_stub.go
+++ b/src/net/cgo_stub.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build !cgo || netgo
-// +build !cgo netgo
+//go:build !cgo || netgo || fuchsia
+// +build !cgo netgo fuchsia
package net
diff --git a/src/net/conf.go b/src/net/conf.go
index 6b9569c..9c29af3 100644
--- a/src/net/conf.go
+++ b/src/net/conf.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris
-// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
+//go:build aix || darwin || dragonfly || freebsd || fuchsia || linux || netbsd || openbsd || solaris
+// +build aix darwin dragonfly freebsd fuchsia linux netbsd openbsd solaris
package net
diff --git a/src/net/dial_test.go b/src/net/dial_test.go
index 723038c..12f47ec 100644
--- a/src/net/dial_test.go
+++ b/src/net/dial_test.go
@@ -420,10 +420,17 @@
}
}
+func requireSetDeadline(t *testing.T) {
+ if runtime.GOOS == "fuchsia" {
+ t.Skip("fuchsia does not yet implement deadlines")
+ }
+}
+
func TestDialParallelSpuriousConnection(t *testing.T) {
if !supportsIPv4() || !supportsIPv6() {
t.Skip("both IPv4 and IPv6 are required")
}
+ requireSetDeadline(t)
var readDeadline time.Time
if td, ok := t.Deadline(); ok {
@@ -810,6 +817,7 @@
}
func TestCancelAfterDial(t *testing.T) {
+ requireSetDeadline(t)
if testing.Short() {
t.Skip("avoiding time.Sleep")
}
diff --git a/src/net/dnsclient_unix.go b/src/net/dnsclient_unix.go
index 50e9bb0..dc5c309 100644
--- a/src/net/dnsclient_unix.go
+++ b/src/net/dnsclient_unix.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris
-// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
+//go:build aix || darwin || dragonfly || freebsd || fuchsia || linux || netbsd || openbsd || solaris
+// +build aix darwin dragonfly freebsd fuchsia linux netbsd openbsd solaris
// DNS client: see RFC 1035.
// Has to be linked into package net for Dial.
diff --git a/src/net/dnsconfig_fuchsia.go b/src/net/dnsconfig_fuchsia.go
new file mode 100644
index 0000000..9d4ca46
--- /dev/null
+++ b/src/net/dnsconfig_fuchsia.go
@@ -0,0 +1,11 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// TODO: replace with fuchsia.net.NameLookup.
+
+package net
+
+func init() {
+ defaultNS = []string{"8.8.8.8:53"}
+}
diff --git a/src/net/dnsconfig_unix.go b/src/net/dnsconfig_unix.go
index db9213a..4c4f592 100644
--- a/src/net/dnsconfig_unix.go
+++ b/src/net/dnsconfig_unix.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris
-// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
+//go:build aix || darwin || dragonfly || freebsd || fuchsia || linux || netbsd || openbsd || solaris
+// +build aix darwin dragonfly freebsd fuchsia linux netbsd openbsd solaris
// Read system DNS config from /etc/resolv.conf
diff --git a/src/net/error_fuchsia.go b/src/net/error_fuchsia.go
new file mode 100644
index 0000000..caad133
--- /dev/null
+++ b/src/net/error_fuchsia.go
@@ -0,0 +1,9 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package net
+
+func isConnError(err error) bool {
+ return false
+}
diff --git a/src/net/error_fuchsia_test.go b/src/net/error_fuchsia_test.go
new file mode 100644
index 0000000..2ab6ff6
--- /dev/null
+++ b/src/net/error_fuchsia_test.go
@@ -0,0 +1,35 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build fuchsia !plan9,!windows,!unix
+
+package net
+
+import (
+ "os"
+ "syscall"
+ "syscall/zx"
+)
+
+var (
+ errTimedout = syscall.ETIMEDOUT
+ errOpNotSupported = syscall.EOPNOTSUPP
+
+ abortedConnRequestErrors = []error{syscall.ECONNABORTED} // see accept in fd_unix.go
+)
+
+func isPlatformError(err error) bool {
+ _, ok := err.(*zx.Error)
+ return ok
+}
+
+func samePlatformError(err, want error) bool {
+ if op, ok := err.(*OpError); ok {
+ err = op.Err
+ }
+ if sys, ok := err.(*os.SyscallError); ok {
+ err = sys.Err
+ }
+ return err == want
+}
diff --git a/src/net/error_posix.go b/src/net/error_posix.go
index 50eb66f..84ab17c 100644
--- a/src/net/error_posix.go
+++ b/src/net/error_posix.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build aix || darwin || dragonfly || freebsd || (js && wasm) || linux || netbsd || openbsd || solaris || windows
-// +build aix darwin dragonfly freebsd js,wasm linux netbsd openbsd solaris windows
+//go:build aix || darwin || dragonfly || freebsd || fuchsia || (js && wasm) || linux || netbsd || openbsd || solaris || windows
+// +build aix darwin dragonfly freebsd fuchsia js,wasm linux netbsd openbsd solaris windows
package net
diff --git a/src/net/error_posix_test.go b/src/net/error_posix_test.go
index ea52a45..f14b701 100644
--- a/src/net/error_posix_test.go
+++ b/src/net/error_posix_test.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build !plan9
-// +build !plan9
+//go:build !fuchsia && !plan9
+// +build !fuchsia,!plan9
package net
diff --git a/src/net/error_test.go b/src/net/error_test.go
index c304390..9639d2d 100644
--- a/src/net/error_test.go
+++ b/src/net/error_test.go
@@ -140,6 +140,8 @@
func TestDialError(t *testing.T) {
switch runtime.GOOS {
+ case "fuchsia":
+ t.Skip("fuchsia does not comply; uses EFUCHSIA")
case "plan9":
t.Skipf("%s does not have full support of socktest", runtime.GOOS)
}
@@ -187,6 +189,8 @@
func TestProtocolDialError(t *testing.T) {
switch runtime.GOOS {
+ case "fuchsia":
+ t.Skip("fuchsia does not comply; uses EFUCHSIA")
case "solaris", "illumos":
t.Skipf("not supported on %s", runtime.GOOS)
}
@@ -289,6 +293,8 @@
func TestListenError(t *testing.T) {
switch runtime.GOOS {
+ case "fuchsia":
+ t.Skip("fuchsia does not comply; uses EFUCHSIA")
case "plan9":
t.Skipf("%s does not have full support of socktest", runtime.GOOS)
}
@@ -378,6 +384,8 @@
func TestProtocolListenError(t *testing.T) {
switch runtime.GOOS {
+ case "fuchsia":
+ t.Skip("fuchsia does not comply; uses EFUCHSIA")
case "plan9":
t.Skipf("not supported on %s", runtime.GOOS)
}
@@ -554,6 +562,9 @@
}
func TestCloseError(t *testing.T) {
+ if runtime.GOOS == "fuchsia" {
+ t.Skip("fuchsia does not comply; uses EFUCHSIA")
+ }
ln, err := newLocalListener("tcp")
if err != nil {
t.Fatal(err)
@@ -726,6 +737,8 @@
func TestFileError(t *testing.T) {
switch runtime.GOOS {
+ case "fuchsia":
+ t.Skip("fuchsia does not comply; uses EFUCHSIA")
case "windows":
t.Skipf("not supported on %s", runtime.GOOS)
}
diff --git a/src/net/error_unix_test.go b/src/net/error_unix_test.go
index 533a45e..5ddd770 100644
--- a/src/net/error_unix_test.go
+++ b/src/net/error_unix_test.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build !plan9 && !windows
-// +build !plan9,!windows
+//go:build !fuchsia && !plan9 && !windows
+// +build !fuchsia,!plan9,!windows
package net
diff --git a/src/net/fd_fuchsia.go b/src/net/fd_fuchsia.go
new file mode 100644
index 0000000..6ec554b
--- /dev/null
+++ b/src/net/fd_fuchsia.go
@@ -0,0 +1,200 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+//+build fuchsia
+
+// TODO: move to using fd_unix for fuchsia?
+
+package net
+
+import (
+ "errors"
+ "fmt"
+ "internal/poll"
+ "os"
+ "runtime"
+ "syscall"
+ "syscall/zx/net"
+ "syscall/zx/posix/socket"
+ "syscall/zx/zxsocket"
+ "time"
+)
+
+// Network file descriptor.
+type netFD struct {
+ pfd poll.FD
+
+ // immutable until Close
+ sock zxsocket.Socket
+ net string
+ family int
+ isConnected bool
+ laddr Addr
+ raddr Addr
+}
+
+func domainToFamily(domain socket.Domain) int {
+ switch domain {
+ case socket.DomainIpv4:
+ return syscall.AF_INET
+ case socket.DomainIpv6:
+ return syscall.AF_INET6
+ default:
+ panic(fmt.Sprintf("unrecognized socket domain %s(%d)", domain, domain))
+ }
+}
+
+func familyToDomain(family int) socket.Domain {
+ switch family {
+ case syscall.AF_INET:
+ return socket.DomainIpv4
+ case syscall.AF_INET6:
+ return socket.DomainIpv6
+ default:
+ panic(fmt.Sprintf("unrecognized socket family %d", family))
+ }
+}
+
+func newFD(sock zxsocket.Socket, domain socket.Domain, net string) *netFD {
+ return &netFD{
+ pfd: poll.FD{
+ Sysfd: syscall.OpenFDIO(sock),
+ },
+ sock: sock,
+ family: domainToFamily(domain),
+ net: net,
+ }
+}
+
+func (fd *netFD) init() error {
+ // TODO: flip to true after implementing netpoller for real
+ return fd.pfd.Init(fd.net, false)
+}
+
+func (fd *netFD) isTCP() bool {
+ return len(fd.net) >= 3 && fd.net[:3] == "tcp"
+}
+
+func (fd *netFD) Read(b []byte) (n int, err error) {
+ n, err = fd.pfd.Read(b)
+ runtime.KeepAlive(fd)
+ return n, err
+}
+
+func (fd *netFD) Write(b []byte) (n int, err error) {
+ n, err = fd.pfd.Write(b)
+ runtime.KeepAlive(fd)
+ return n, err
+}
+
+func (fd *netFD) readMsg(b []byte) (n, flags int, addr net.SocketAddress, err error) {
+ // TODO: move call to pfd
+ data, addr, err := fd.sock.(*zxsocket.DatagramSocket).RecvMsg(len(b))
+ runtime.KeepAlive(fd)
+ n = copy(b, data)
+ return n, 0, addr, err
+}
+
+func (fd *netFD) sendMsg(b []byte, addr net.SocketAddress) (n int, err error) {
+ // TODO: move call to pfd
+ n, err = fd.sock.(*zxsocket.DatagramSocket).SendMsg(b, addr)
+ runtime.KeepAlive(fd)
+ return n, err
+}
+
+func (fd *netFD) closeRead() error {
+ return errors.New("net: closeRead not implemented on fuchsia")
+}
+
+func (fd *netFD) closeWrite() error {
+ return errors.New("net: closeWrite not implemented on fuchsia")
+}
+
+func (fd *netFD) Close() error {
+ return fd.pfd.Close()
+}
+
+func (fd *netFD) dup() (*os.File, error) {
+ fdio, err := fd.sock.Clone()
+ if err != nil {
+ return nil, err
+ }
+ return os.NewFile(uintptr(syscall.OpenFDIO(fdio)), fd.name()), nil
+}
+
+func (fd *netFD) accept() (*netFD, error) {
+ newm, addr, err := fd.pfd.Accept()
+ if err != nil {
+ return nil, err
+ }
+ {
+ fd := newFD(newm, familyToDomain(fd.family), fd.net)
+ if err := fd.init(); err != nil {
+ fd.Close()
+ return nil, err
+ }
+ fd.setAddr(fd.asAddr(addr, nil))
+ return fd, nil
+ }
+}
+
+func socketAddrToIpPort(addr net.SocketAddress) (IP, int) {
+ switch addr.Which() {
+ case net.SocketAddressIpv4:
+ return addr.Ipv4.Address.Addr[:], int(addr.Ipv4.Port)
+ case net.SocketAddressIpv6:
+ return addr.Ipv6.Address.Addr[:], int(addr.Ipv6.Port)
+ default:
+ panic(fmt.Sprintf("unrecognized SocketAddress variant %d", addr.Which()))
+ }
+}
+
+func (fd *netFD) asAddr(addr net.SocketAddress, err error) sockaddr {
+ if err != nil {
+ return nil
+ }
+
+ ip, port := socketAddrToIpPort(addr)
+ if isZeros(ip) && port == 0 {
+ return nil
+ }
+
+ switch fd.sock.(type) {
+ case *zxsocket.DatagramSocket:
+ return &UDPAddr{IP: ip, Port: port}
+ case *zxsocket.StreamSocket:
+ return &TCPAddr{IP: ip, Port: port}
+ default:
+ panic(fmt.Sprintf("unrecognized socket type %T", fd.sock))
+ }
+}
+
+func (fd *netFD) setAddr(peerAddr sockaddr) {
+ fd.laddr = fd.asAddr(fd.sock.GetSockName())
+ fd.raddr = peerAddr
+ runtime.SetFinalizer(fd, (*netFD).Close)
+}
+
+func (fd *netFD) name() string {
+ var ls, rs string
+ if fd.laddr != nil {
+ ls = fd.laddr.String()
+ }
+ if fd.raddr != nil {
+ rs = fd.raddr.String()
+ }
+ return fd.net + ":" + ls + "->" + rs
+}
+
+func (fd *netFD) SetDeadline(t time.Time) error {
+ return fd.pfd.SetDeadline(t)
+}
+
+func (fd *netFD) SetReadDeadline(t time.Time) error {
+ return fd.pfd.SetReadDeadline(t)
+}
+
+func (fd *netFD) SetWriteDeadline(t time.Time) error {
+ return fd.pfd.SetWriteDeadline(t)
+}
diff --git a/src/net/file_stub.go b/src/net/file_stub.go
index 9f988fe..b5aa6d6 100644
--- a/src/net/file_stub.go
+++ b/src/net/file_stub.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build js && wasm
-// +build js,wasm
+//go:build fuchsia || (js && wasm)
+// +build fuchsia js,wasm
package net
diff --git a/src/net/file_test.go b/src/net/file_test.go
index a70ef1b..d0b3bcb 100644
--- a/src/net/file_test.go
+++ b/src/net/file_test.go
@@ -32,7 +32,7 @@
func TestFileConn(t *testing.T) {
switch runtime.GOOS {
- case "plan9", "windows":
+ case "fuchsia", "plan9", "windows":
t.Skipf("not supported on %s", runtime.GOOS)
}
@@ -139,7 +139,7 @@
func TestFileListener(t *testing.T) {
switch runtime.GOOS {
- case "plan9", "windows":
+ case "fuchsia", "plan9", "windows":
t.Skipf("not supported on %s", runtime.GOOS)
}
@@ -231,7 +231,7 @@
func TestFilePacketConn(t *testing.T) {
switch runtime.GOOS {
- case "plan9", "windows":
+ case "fuchsia", "plan9", "windows":
t.Skipf("not supported on %s", runtime.GOOS)
}
@@ -298,7 +298,7 @@
// Issue 24483.
func TestFileCloseRace(t *testing.T) {
switch runtime.GOOS {
- case "plan9", "windows":
+ case "fuchsia", "plan9", "windows":
t.Skipf("not supported on %s", runtime.GOOS)
}
if !testableNetwork("tcp") {
diff --git a/src/net/hook_fuchsia.go b/src/net/hook_fuchsia.go
new file mode 100644
index 0000000..fa25da6
--- /dev/null
+++ b/src/net/hook_fuchsia.go
@@ -0,0 +1,15 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package net
+
+import "syscall"
+
+var (
+ testHookDialChannel = func() {} // for golang.org/issue/5349
+ testHookCanceledDial = func() {} // for golang.org/issue/16523
+
+ // Placeholders for socket system calls.
+ closeFunc func(int) error = syscall.Close
+)
diff --git a/src/net/hosts_test.go b/src/net/hosts_test.go
index 19c4399..e65d893 100644
--- a/src/net/hosts_test.go
+++ b/src/net/hosts_test.go
@@ -6,6 +6,7 @@
import (
"reflect"
+ "runtime"
"strings"
"testing"
)
@@ -58,7 +59,14 @@
},
}
+func requireTestData(t *testing.T) {
+ if runtime.GOOS == "fuchsia" {
+ t.Skip("fuchsia cannot expose testdata; directories can't be resources")
+ }
+}
+
func TestLookupStaticHost(t *testing.T) {
+ requireTestData(t)
defer func(orig string) { testHookHostsPath = orig }(testHookHostsPath)
for _, tt := range lookupStaticHostTests {
@@ -128,6 +136,7 @@
}
func TestLookupStaticAddr(t *testing.T) {
+ requireTestData(t)
defer func(orig string) { testHookHostsPath = orig }(testHookHostsPath)
for _, tt := range lookupStaticAddrTests {
@@ -149,6 +158,7 @@
}
func TestHostCacheModification(t *testing.T) {
+ requireTestData(t)
// Ensure that programs can't modify the internals of the host cache.
// See https://golang.org/issues/14212.
defer func(orig string) { testHookHostsPath = orig }(testHookHostsPath)
diff --git a/src/net/interface_fuchsia.go b/src/net/interface_fuchsia.go
new file mode 100644
index 0000000..de5e6a4
--- /dev/null
+++ b/src/net/interface_fuchsia.go
@@ -0,0 +1,78 @@
+// 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.
+
+// `go mod` ignores file names for the purpose of resolving
+// dependencies, and fdio doesn't build on not-Fuchsia.
+// +build fuchsia
+
+package net
+
+import (
+ "context"
+ "sync"
+ "syscall/zx"
+ "syscall/zx/fdio"
+ "syscall/zx/net/stack"
+)
+
+var stackHandle struct {
+ mu struct {
+ sync.Mutex
+ h zx.Handle
+ }
+}
+
+func stackClient() (stack.StackWithCtxInterface, error) {
+ stackHandle.mu.Lock()
+ defer stackHandle.mu.Unlock()
+
+ if stackHandle.mu.h == zx.HandleInvalid {
+ local, remote, err := zx.NewChannel(0)
+ if err != nil {
+ return stack.StackWithCtxInterface{}, err
+ }
+ if err := fdio.ServiceConnect("/svc/"+stack.StackName, zx.Handle(remote)); err != nil {
+ return stack.StackWithCtxInterface{}, err
+ }
+ stackHandle.mu.h = zx.Handle(local)
+ }
+ return stack.StackWithCtxInterface{Channel: zx.Channel(stackHandle.mu.h)}, nil
+}
+
+// If the ifindex is zero, interfaceTable returns mappings of all
+// network interfaces. Otherwise it returns a mapping of a specific interface.
+func interfaceTable(ifindex int) ([]Interface, error) {
+ c, err := stackClient()
+ if err != nil {
+ return nil, err
+ }
+ ifInfos, err := c.ListInterfaces(context.Background())
+ if err != nil {
+ return nil, err
+ }
+ ifs := make([]Interface, 0, len(ifInfos))
+ for _, info := range ifInfos {
+ ifs = append(ifs, Interface{
+ // TODO(jayzhuang): fill `Flags` when they are all available in stack.InterfaceInfo.
+ Index: int(info.Id),
+ MTU: int(info.Properties.Mtu),
+ Name: info.Properties.Name,
+ HardwareAddr: info.Properties.Mac.Octets[:],
+ })
+ }
+ return ifs, nil
+}
+
+// If the ifi is nil, interfaceAddrTable returns addresses for all
+// network interfaces. Otherwise it returns addresses for a specific interface.
+func interfaceAddrTable(ifi *Interface) ([]Addr, error) {
+ // TODO(44532): implement
+ return nil, nil
+}
+
+// interfaceMulticastAddrTable returns addresses for a specific interface.
+func interfaceMulticastAddrTable(ifi *Interface) ([]Addr, error) {
+ // TODO(44532): implement
+ return nil, nil
+}
diff --git a/src/net/internal/socktest/switch_posix.go b/src/net/internal/socktest/switch_posix.go
index cda74e8..d4e76f7 100644
--- a/src/net/internal/socktest/switch_posix.go
+++ b/src/net/internal/socktest/switch_posix.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build !plan9
-// +build !plan9
+//go:build !fuchsia && !plan9
+// +build !fuchsia,!plan9
package socktest
diff --git a/src/net/internal/socktest/switch_stub.go b/src/net/internal/socktest/switch_stub.go
index 5aa2ece..171d0e6 100644
--- a/src/net/internal/socktest/switch_stub.go
+++ b/src/net/internal/socktest/switch_stub.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build plan9
-// +build plan9
+//go:build fuchsia || plan9
+// +build fuchsia plan9
package socktest
diff --git a/src/net/ip_test.go b/src/net/ip_test.go
index 5bbda60..c111246 100644
--- a/src/net/ip_test.go
+++ b/src/net/ip_test.go
@@ -65,6 +65,7 @@
}
func TestLookupWithIP(t *testing.T) {
+ requireSetDeadline(t)
_, err := LookupIP("")
if err == nil {
t.Errorf(`LookupIP("") succeeded, should fail`)
diff --git a/src/net/iprawsock_fuchsia.go b/src/net/iprawsock_fuchsia.go
new file mode 100644
index 0000000..0bfd133
--- /dev/null
+++ b/src/net/iprawsock_fuchsia.go
@@ -0,0 +1,34 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package net
+
+import (
+ "context"
+ "syscall"
+)
+
+func (c *IPConn) readFrom(b []byte) (int, *IPAddr, error) {
+ return 0, nil, syscall.EFUCHSIA
+}
+
+func (c *IPConn) readMsg(b, oob []byte) (n, oobn, flags int, addr *IPAddr, err error) {
+ return 0, 0, 0, nil, syscall.EFUCHSIA
+}
+
+func (c *IPConn) writeTo(b []byte, addr *IPAddr) (int, error) {
+ return 0, syscall.EFUCHSIA
+}
+
+func (c *IPConn) writeMsg(b, oob []byte, addr *IPAddr) (n, oobn int, err error) {
+ return 0, 0, syscall.EFUCHSIA
+}
+
+func (sd *sysDialer) dialIP(ctx context.Context, laddr, raddr *IPAddr) (*IPConn, error) {
+ return nil, syscall.EFUCHSIA
+}
+
+func (sl *sysListener) listenIP(ctx context.Context, laddr *IPAddr) (*IPConn, error) {
+ return nil, syscall.EFUCHSIA
+}
diff --git a/src/net/ipsock_fuchsia.go b/src/net/ipsock_fuchsia.go
new file mode 100644
index 0000000..177b073
--- /dev/null
+++ b/src/net/ipsock_fuchsia.go
@@ -0,0 +1,229 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// `go mod` ignores file names for the purpose of resolving
+// dependencies, and zxsocket doesn't build on not-Fuchsia.
+//go:build fuchsia
+// +build fuchsia
+
+package net
+
+import (
+ "context"
+ "fmt"
+ "sync"
+ "syscall"
+ "syscall/zx"
+ "syscall/zx/fdio"
+ "syscall/zx/net"
+ "syscall/zx/posix/socket"
+ "syscall/zx/zxsocket"
+)
+
+func (p *ipStackCapabilities) probe() {
+ p.ipv4Enabled = true
+ p.ipv6Enabled = true
+ p.ipv4MappedIPv6Enabled = true
+}
+
+// A sockaddr represents a TCP, UDP, IP or Unix network endpoint
+// address that can be converted into an fdio sockaddr message.
+type sockaddr interface {
+ Addr
+
+ family() int
+ domain() socket.Domain
+ isWildcard() bool
+ sockaddr(domain socket.Domain) (addr net.SocketAddress, err error)
+}
+
+func favoriteAddrDomain(net string, laddr, raddr sockaddr, mode string) socket.Domain {
+ switch net[len(net)-1] {
+ case '4':
+ return socket.DomainIpv4
+ case '6':
+ return socket.DomainIpv6
+ }
+
+ if mode == "listen" && (laddr == nil || laddr.isWildcard()) {
+ if supportsIPv4map() || !supportsIPv4() {
+ return socket.DomainIpv6
+ }
+ if laddr == nil {
+ return socket.DomainIpv4
+ }
+ return laddr.domain()
+ }
+
+ if (laddr == nil || laddr.domain() == socket.DomainIpv4) &&
+ (raddr == nil || raddr.domain() == socket.DomainIpv4) {
+ return socket.DomainIpv4
+ }
+ return socket.DomainIpv6
+}
+
+var socketProvider struct {
+ once sync.Once
+ provider socket.ProviderWithCtxInterface
+ err error
+}
+
+func getProvider() (*socket.ProviderWithCtxInterface, error) {
+ socketProvider.once.Do(func() {
+ socketProvider.err = func() error {
+ c0, c1, err := zx.NewChannel(0)
+ if err != nil {
+ return err
+ }
+ if err := fdio.ServiceConnect("/svc/"+socket.ProviderName, zx.Handle(c0)); err != nil {
+ _ = c1.Close()
+ return err
+ }
+ socketProvider.provider.Channel = c1
+ return nil
+ }()
+ })
+ return &socketProvider.provider, socketProvider.err
+}
+
+func dialFuchsia(_ context.Context, netName string, laddr, raddr sockaddr) (*netFD, error) {
+ domain := favoriteAddrDomain(netName, laddr, raddr, "dial")
+
+ provider, err := getProvider()
+ if err != nil {
+ return nil, err
+ }
+
+ var base *socket.BaseSocketWithCtxInterface
+ if stringsHasPrefix(netName, "udp") {
+ result, err := provider.DatagramSocket(context.Background(), domain, socket.DatagramSocketProtocolUdp)
+ if err != nil {
+ return nil, err
+ }
+ switch result.Which() {
+ case socket.ProviderDatagramSocketResultErr:
+ return nil, syscall.Errno(result.Err)
+ case socket.ProviderDatagramSocketResultResponse:
+ base = &socket.BaseSocketWithCtxInterface{Channel: result.Response.S.Channel}
+ default:
+ panic(fmt.Sprintf("unrecognized fuchsia.posix.socket/Provider.DatagramSocket result %d", result.Which()))
+ }
+ } else {
+ result, err := provider.StreamSocket(context.Background(), domain, socket.StreamSocketProtocolTcp)
+ if err != nil {
+ return nil, err
+ }
+ switch result.Which() {
+ case socket.ProviderStreamSocketResultErr:
+ return nil, syscall.Errno(result.Err)
+ case socket.ProviderStreamSocketResultResponse:
+ base = &socket.BaseSocketWithCtxInterface{Channel: result.Response.S.Channel}
+ default:
+ panic(fmt.Sprintf("unrecognized fuchsia.posix.socket/Provider.StreamSocket result %d", result.Which()))
+ }
+ }
+
+ sock, err := zxsocket.NewSocket(base)
+ if err != nil {
+ return nil, err
+ }
+ fd := newFD(sock, domain, netName)
+ if laddr != nil {
+ addr, err := laddr.sockaddr(domain)
+ if err != nil {
+ return nil, err
+ }
+ var port uint16
+ isSet := false
+ switch addr.Which() {
+ case net.SocketAddressIpv4:
+ port = addr.Ipv4.Port
+ isSet = true
+ case net.SocketAddressIpv6:
+ port = addr.Ipv6.Port
+ isSet = true
+ }
+ if isSet || port != 0 {
+ if err := fd.sock.Bind(addr); err != nil {
+ return nil, err
+ }
+ }
+ if raddr == nil {
+ switch s := fd.sock.(type) {
+ case *zxsocket.DatagramSocket:
+ case *zxsocket.StreamSocket:
+ if err := s.Listen(int16(listenerBacklog())); err != nil {
+ return nil, err
+ }
+ default:
+ panic(fmt.Sprintf("unrecognized socket type %T", fd.sock))
+ }
+ }
+ }
+ if raddr != nil {
+ addr, err := raddr.sockaddr(domain)
+ if err != nil {
+ return nil, err
+ }
+ for i := 0; i < 2; i++ {
+ err = fd.sock.Connect(addr)
+ if sock, ok := fd.sock.(*zxsocket.StreamSocket); ok && err == syscall.EINPROGRESS {
+ obs, err := sock.Wait(context.Background(), zxsocket.SignalStreamConnected|zx.SignalSocketPeerClosed)
+ if err != nil {
+ return nil, err
+ }
+ switch {
+ case obs&zx.SignalSocketPeerClosed != 0:
+ return nil, &zx.Error{Status: zx.ErrPeerClosed, Text: "zxsocket"}
+ case obs&(zxsocket.SignalStreamConnected) != 0:
+ // Call connect again to learn the result.
+ continue
+ default:
+ panic(fmt.Sprintf("unexpected observed signals %08X", obs))
+ }
+ }
+ break
+ }
+ if err != nil {
+ return nil, err
+ }
+ fd.isConnected = true
+ }
+ fd.setAddr(fd.asAddr(fd.sock.GetPeerName()))
+
+ return fd, nil
+}
+
+func ipToSockaddr(domain socket.Domain, ip IP, port int, zone_str string) (address net.SocketAddress, err error) {
+ switch domain {
+ case socket.DomainIpv4:
+ if len(ip) == 0 {
+ ip = IPv4zero
+ }
+ ip4 := ip.To4()
+ if ip4 == nil {
+ return net.SocketAddress{}, &AddrError{Err: "non-IPv4 address", Addr: ip.String()}
+ }
+ addr := net.SocketAddressWithIpv4(net.Ipv4SocketAddress{
+ Port: uint16(port),
+ })
+ copy(addr.Ipv4.Address.Addr[:], ip4)
+ return addr, nil
+ case socket.DomainIpv6:
+ if len(ip) == 0 || ip.Equal(IPv4zero) {
+ ip = IPv6zero
+ }
+ ip6 := ip.To16()
+ if ip6 == nil {
+ return net.SocketAddress{}, &AddrError{Err: "non-IPv6 address", Addr: ip.String()}
+ }
+ addr := net.SocketAddressWithIpv6(net.Ipv6SocketAddress{
+ Port: uint16(port),
+ ZoneIndex: uint64(zoneCache.index(zone_str)),
+ })
+ copy(addr.Ipv6.Address.Addr[:], ip6)
+ return addr, nil
+ }
+ return net.SocketAddress{}, &AddrError{Err: "invalid address family", Addr: ip.String()}
+}
diff --git a/src/net/ipsock_fuchsia_test.go b/src/net/ipsock_fuchsia_test.go
new file mode 100644
index 0000000..c231d7c
--- /dev/null
+++ b/src/net/ipsock_fuchsia_test.go
@@ -0,0 +1,101 @@
+// Copyright 2019 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 net
+
+import (
+ "syscall/zx/net"
+ "syscall/zx/posix/socket"
+ "testing"
+)
+
+func TestIPToSockaddr(t *testing.T) {
+ type inArgs struct {
+ domain socket.Domain
+ ip IP
+ port int
+ zone string
+ }
+
+ type want struct {
+ addr net.SocketAddress
+ err bool
+ }
+
+ makeIpv4 := func(addr [4]byte, port uint16) net.SocketAddress {
+ return net.SocketAddressWithIpv4(net.Ipv4SocketAddress{
+ Address: net.Ipv4Address{
+ Addr: addr,
+ },
+ Port: port,
+ })
+ }
+ makeIpv6 := func(addr [16]byte, port uint16, zone uint64) net.SocketAddress {
+ return net.SocketAddressWithIpv6(net.Ipv6SocketAddress{
+ Address: net.Ipv6Address{
+ Addr: addr,
+ },
+ Port: port,
+ ZoneIndex: zone,
+ })
+ }
+
+ tests := []struct {
+ name string
+ in inArgs
+ want want
+ }{
+ {
+ "v4 non-numeric string zone ignored",
+ inArgs{socket.DomainIpv4, ParseIP("1.2.3.4"), 6667, "zone"},
+ want{makeIpv4([4]byte{1, 2, 3, 4}, 6667), false},
+ },
+ {
+ "v4 numeric string zone ignored",
+ inArgs{socket.DomainIpv4, ParseIP("1.2.3.4"), 6697, "17"},
+ want{makeIpv4([4]byte{1, 2, 3, 4}, 6697), false},
+ },
+ {
+ "v4 invalid IP returns error",
+ inArgs{socket.DomainIpv4, IP([]byte{1}), 6697, ""},
+ want{net.SocketAddress{}, true},
+ },
+ {
+ "v6 with known non-numeric zone converted",
+ // This test runs in a sandbox with interface 'lo' on index 1.
+ inArgs{socket.DomainIpv6, ParseIP("fe80::1"), 443, "lo"},
+ want{makeIpv6([16]byte{0xfe, 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, 443, 1), false},
+ },
+ {
+ "v6 with unknown non-numeric zone ignored",
+ inArgs{socket.DomainIpv6, ParseIP("fe80::1"), 443, "unknownif"},
+ want{makeIpv6([16]byte{0xfe, 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, 443, 0), false},
+ },
+ {
+ "v6 with numeric zone handled properly",
+ inArgs{socket.DomainIpv6, ParseIP("fe80::1"), 80, "42"},
+ want{makeIpv6([16]byte{0xfe, 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, 80, 42), false},
+ },
+ {
+ "v6 invalid IP returns error",
+ inArgs{socket.DomainIpv6, IP([]byte{1}), 1, ""},
+ want{net.SocketAddress{}, true},
+ },
+ }
+
+ for _, test := range tests {
+ addr, err := ipToSockaddr(test.in.domain, test.in.ip, test.in.port, test.in.zone)
+ if test.want.err && err == nil {
+ t.Errorf("test %q returned no error, but an error was expected", test.name)
+ continue
+ } else if !test.want.err && err != nil {
+ t.Errorf("test %q got error %v; no error was expected", test.name, err)
+ continue
+ }
+
+ if addr != test.want.addr {
+ t.Errorf("test %q got addr %v, wanted %v", test.name, addr, test.want.addr)
+ }
+ }
+}
diff --git a/src/net/lookup_unix.go b/src/net/lookup_unix.go
index 8030e3d..bcdd2e9 100644
--- a/src/net/lookup_unix.go
+++ b/src/net/lookup_unix.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris
-// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
+//go:build aix || darwin || dragonfly || freebsd || fuchsia || linux || netbsd || openbsd || solaris
+// +build aix darwin dragonfly freebsd fuchsia linux netbsd openbsd solaris
package net
@@ -11,7 +11,6 @@
"context"
"internal/bytealg"
"sync"
- "syscall"
"golang.org/x/net/dns/dnsmessage"
)
@@ -328,27 +327,3 @@
}
return r.goLookupPTR(ctx, addr)
}
-
-// concurrentThreadsLimit returns the number of threads we permit to
-// run concurrently doing DNS lookups via cgo. A DNS lookup may use a
-// file descriptor so we limit this to less than the number of
-// permitted open files. On some systems, notably Darwin, if
-// getaddrinfo is unable to open a file descriptor it simply returns
-// EAI_NONAME rather than a useful error. Limiting the number of
-// concurrent getaddrinfo calls to less than the permitted number of
-// file descriptors makes that error less likely. We don't bother to
-// apply the same limit to DNS lookups run directly from Go, because
-// there we will return a meaningful "too many open files" error.
-func concurrentThreadsLimit() int {
- var rlim syscall.Rlimit
- if err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &rlim); err != nil {
- return 500
- }
- r := int(rlim.Cur)
- if r > 500 {
- r = 500
- } else if r > 30 {
- r -= 30
- }
- return r
-}
diff --git a/src/net/main_fuchsia_test.go b/src/net/main_fuchsia_test.go
new file mode 100644
index 0000000..f77da1f
--- /dev/null
+++ b/src/net/main_fuchsia_test.go
@@ -0,0 +1,18 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package net
+
+func installTestHooks() {
+}
+
+func uninstallTestHooks() {
+}
+
+// forceCloseSockets must be called only from TestMain.
+func forceCloseSockets() {
+ for s := range sw.Sockets() {
+ closeFunc(s)
+ }
+}
diff --git a/src/net/net_test.go b/src/net/net_test.go
index 6e7be4d..33a7107 100644
--- a/src/net/net_test.go
+++ b/src/net/net_test.go
@@ -21,7 +21,7 @@
func TestCloseRead(t *testing.T) {
switch runtime.GOOS {
- case "plan9":
+ case "fuchsia", "plan9":
t.Skipf("not supported on %s", runtime.GOOS)
}
t.Parallel()
@@ -77,7 +77,7 @@
func TestCloseWrite(t *testing.T) {
switch runtime.GOOS {
- case "plan9":
+ case "fuchsia", "plan9":
t.Skipf("not supported on %s", runtime.GOOS)
}
@@ -346,6 +346,8 @@
// See golang.org/issue/6163, golang.org/issue/6987.
func TestAcceptIgnoreAbortedConnRequest(t *testing.T) {
switch runtime.GOOS {
+ case "fuchsia":
+ t.Skip("hangs on fuchsia")
case "plan9":
t.Skipf("%s does not have full support of socktest", runtime.GOOS)
}
@@ -496,6 +498,7 @@
// See golang.org/cl/30164 which documented this. The net/http package
// depends on this.
func TestReadTimeoutUnblocksRead(t *testing.T) {
+ requireSetDeadline(t)
serverDone := make(chan struct{})
server := func(cs *TCPConn) error {
defer close(serverDone)
@@ -539,6 +542,9 @@
// Issue 17695: verify that a blocked Read is woken up by a Close.
func TestCloseUnblocksRead(t *testing.T) {
+ if runtime.GOOS == "fuchsia" {
+ t.Skip("hangs on fuchsia")
+ }
t.Parallel()
server := func(cs *TCPConn) error {
// Give the client time to get stuck in a Read:
@@ -564,6 +570,9 @@
if runtime.GOOS == "aix" {
testenv.SkipFlaky(t, 29685)
}
+ if runtime.GOOS == "fuchsia" {
+ t.Skip("hangs on fuchsia")
+ }
t.Parallel()
server := func(cs *TCPConn) error {
cs.SetLinger(0)
diff --git a/src/net/nss.go b/src/net/nss.go
index 85177ca..d330639 100644
--- a/src/net/nss.go
+++ b/src/net/nss.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris
-// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
+//go:build aix || darwin || dragonfly || freebsd || fuchsia || linux || netbsd || openbsd || solaris
+// +build aix darwin dragonfly freebsd fuchsia linux netbsd openbsd solaris
package net
diff --git a/src/net/parse_test.go b/src/net/parse_test.go
index c5f8bfd..ffe4d12 100644
--- a/src/net/parse_test.go
+++ b/src/net/parse_test.go
@@ -14,7 +14,7 @@
func TestReadLine(t *testing.T) {
// /etc/services file does not exist on android, plan9, windows.
switch runtime.GOOS {
- case "android", "plan9", "windows":
+ case "android", "plan9", "windows", "fuchsia":
t.Skipf("not supported on %s", runtime.GOOS)
}
filename := "/etc/services" // a nice big file
diff --git a/src/net/platform_test.go b/src/net/platform_test.go
index 2da23de..d33ce4f 100644
--- a/src/net/platform_test.go
+++ b/src/net/platform_test.go
@@ -39,7 +39,7 @@
case "ip+nopriv":
case "ip", "ip4", "ip6":
switch runtime.GOOS {
- case "plan9":
+ case "fuchsia", "plan9":
return false
default:
if os.Getuid() != 0 {
@@ -48,7 +48,7 @@
}
case "unix", "unixgram":
switch runtime.GOOS {
- case "android", "plan9", "windows":
+ case "android", "fuchsia", "plan9", "windows":
return false
case "aix":
return unixEnabledOnAIX
@@ -59,7 +59,7 @@
}
case "unixpacket":
switch runtime.GOOS {
- case "aix", "android", "darwin", "ios", "plan9", "windows":
+ case "aix", "android", "darwin", "fuchsia", "ios", "plan9", "windows":
return false
case "netbsd":
// It passes on amd64 at least. 386 fails (Issue 22927). arm is unknown.
diff --git a/src/net/port_unix.go b/src/net/port_unix.go
index a9a96a2..7f4edab 100644
--- a/src/net/port_unix.go
+++ b/src/net/port_unix.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build aix || darwin || dragonfly || freebsd || (js && wasm) || linux || netbsd || openbsd || solaris
-// +build aix darwin dragonfly freebsd js,wasm linux netbsd openbsd solaris
+//go:build aix || darwin || dragonfly || freebsd || fuchsia || (js && wasm) || linux || netbsd || openbsd || solaris
+// +build aix darwin dragonfly freebsd fuchsia js,wasm linux netbsd openbsd solaris
// Read system port mappings from /etc/services
diff --git a/src/net/protoconn_test.go b/src/net/protoconn_test.go
index fc9b386..f8f885f 100644
--- a/src/net/protoconn_test.go
+++ b/src/net/protoconn_test.go
@@ -24,6 +24,7 @@
// golang.org/x/net/icmp
func TestTCPListenerSpecificMethods(t *testing.T) {
+ requireSetDeadline(t)
switch runtime.GOOS {
case "plan9":
t.Skipf("not supported on %s", runtime.GOOS)
@@ -165,6 +166,9 @@
}
func TestIPConnSpecificMethods(t *testing.T) {
+ if runtime.GOOS == "fuchsia" {
+ t.Skip("iprawsock is unsupported on fuchsia")
+ }
if os.Getuid() != 0 {
t.Skip("must be root")
}
diff --git a/src/net/rawconn_stub_test.go b/src/net/rawconn_stub_test.go
index 975aa8d..0b7a90e 100644
--- a/src/net/rawconn_stub_test.go
+++ b/src/net/rawconn_stub_test.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build (js && wasm) || plan9
-// +build js,wasm plan9
+//go:build fuchsia || (js && wasm) || plan9
+// +build fuchsia js,wasm plan9
package net
diff --git a/src/net/rawconn_test.go b/src/net/rawconn_test.go
index 3ef7af3..a7797ba 100644
--- a/src/net/rawconn_test.go
+++ b/src/net/rawconn_test.go
@@ -16,7 +16,7 @@
func TestRawConnReadWrite(t *testing.T) {
switch runtime.GOOS {
- case "plan9":
+ case "fuchsia", "plan9":
t.Skipf("not supported on %s", runtime.GOOS)
}
@@ -176,7 +176,7 @@
func TestRawConnControl(t *testing.T) {
switch runtime.GOOS {
- case "plan9":
+ case "fuchsia", "plan9":
t.Skipf("not supported on %s", runtime.GOOS)
}
diff --git a/src/net/rlimit_fuchsia.go b/src/net/rlimit_fuchsia.go
new file mode 100644
index 0000000..7a5a113
--- /dev/null
+++ b/src/net/rlimit_fuchsia.go
@@ -0,0 +1,11 @@
+// Copyright 2011 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 net
+
+// concurrentThreadsLimit returns the number of threads we permit to
+// run concurrently doing DNS lookups via cgo.
+func concurrentThreadsLimit() int {
+ return 500
+}
diff --git a/src/net/rlimit_unix.go b/src/net/rlimit_unix.go
new file mode 100644
index 0000000..ff5902f
--- /dev/null
+++ b/src/net/rlimit_unix.go
@@ -0,0 +1,35 @@
+// Copyright 2011 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
+
+package net
+
+import (
+ "syscall"
+)
+
+// concurrentThreadsLimit returns the number of threads we permit to
+// run concurrently doing DNS lookups via cgo. A DNS lookup may use a
+// file descriptor so we limit this to less than the number of
+// permitted open files. On some systems, notably Darwin, if
+// getaddrinfo is unable to open a file descriptor it simply returns
+// EAI_NONAME rather than a useful error. Limiting the number of
+// concurrent getaddrinfo calls to less than the permitted number of
+// file descriptors makes that error less likely. We don't bother to
+// apply the same limit to DNS lookups run directly from Go, because
+// there we will return a meaningful "too many open files" error.
+func concurrentThreadsLimit() int {
+ var rlim syscall.Rlimit
+ if err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &rlim); err != nil {
+ return 500
+ }
+ r := int(rlim.Cur)
+ if r > 500 {
+ r = 500
+ } else if r > 30 {
+ r -= 30
+ }
+ return r
+}
diff --git a/src/net/sendfile_test.go b/src/net/sendfile_test.go
index 54e51fa..0eb31a6 100644
--- a/src/net/sendfile_test.go
+++ b/src/net/sendfile_test.go
@@ -28,6 +28,9 @@
)
func TestSendfile(t *testing.T) {
+ if runtime.GOOS == "fuchsia" {
+ t.Skip("hangs on fuchsia")
+ }
ln, err := newLocalListener("tcp")
if err != nil {
t.Fatal(err)
@@ -98,6 +101,9 @@
}
func TestSendfileParts(t *testing.T) {
+ if runtime.GOOS == "fuchsia" {
+ t.Skip("hangs on fuchsia")
+ }
ln, err := newLocalListener("tcp")
if err != nil {
t.Fatal(err)
@@ -156,6 +162,9 @@
}
func TestSendfileSeeked(t *testing.T) {
+ if runtime.GOOS == "fuchsia" {
+ t.Skip("hangs on fuchsia")
+ }
ln, err := newLocalListener("tcp")
if err != nil {
t.Fatal(err)
@@ -219,6 +228,8 @@
// Test that sendfile doesn't put a pipe into blocking mode.
func TestSendfilePipe(t *testing.T) {
switch runtime.GOOS {
+ case "fuchsia":
+ t.Skip("hangs on fuchsia")
case "plan9", "windows":
// These systems don't support deadlines on pipes.
t.Skipf("skipping on %s", runtime.GOOS)
@@ -318,6 +329,9 @@
// Issue 43822: tests that returns EOF when conn write timeout.
func TestSendfileOnWriteTimeoutExceeded(t *testing.T) {
+ if runtime.GOOS == "fuchsia" {
+ t.Skip("zxsocket does not implement deadlines")
+ }
ln, err := newLocalListener("tcp")
if err != nil {
t.Fatal(err)
diff --git a/src/net/sock_stub.go b/src/net/sock_stub.go
index d804bfa..2894847 100644
--- a/src/net/sock_stub.go
+++ b/src/net/sock_stub.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build aix || (js && wasm) || solaris
-// +build aix js,wasm solaris
+//go:build aix || fuchsia || (js && wasm) || solaris
+// +build aix fuchsia js,wasm solaris
package net
diff --git a/src/net/sockopt_fuchsia.go b/src/net/sockopt_fuchsia.go
new file mode 100644
index 0000000..1c1e1ae
--- /dev/null
+++ b/src/net/sockopt_fuchsia.go
@@ -0,0 +1,41 @@
+// Copyright 2019 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 net
+
+import (
+ "os"
+ "runtime"
+ "syscall"
+)
+
+func setDefaultSockopts(s, family, sotype int, ipv6only bool) error {
+ return nil
+}
+
+func setDefaultListenerSockopts(s int) error {
+ return nil
+}
+
+func setDefaultMulticastSockopts(s int) error {
+ return nil
+}
+
+func setReadBuffer(fd *netFD, bytes int) error {
+ return syscall.ENOPROTOOPT
+}
+
+func setWriteBuffer(fd *netFD, bytes int) error {
+ return syscall.ENOPROTOOPT
+}
+
+func setKeepAlive(fd *netFD, keepalive bool) error {
+ err := fd.sock.SetKeepAlive(keepalive)
+ runtime.KeepAlive(fd)
+ return os.NewSyscallError("setsockopt", err)
+}
+
+func setLinger(fd *netFD, sec int) error {
+ return syscall.ENOPROTOOPT
+}
diff --git a/src/net/tcpsock_fuchsia.go b/src/net/tcpsock_fuchsia.go
new file mode 100644
index 0000000..eb5d2ef
--- /dev/null
+++ b/src/net/tcpsock_fuchsia.go
@@ -0,0 +1,85 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+//+build fuchsia
+
+package net
+
+import (
+ "context"
+ "io"
+ "os"
+ "syscall/zx/net"
+ "syscall/zx/posix/socket"
+)
+
+func (a *TCPAddr) domain() socket.Domain {
+ if a == nil || len(a.IP) <= IPv4len {
+ return socket.DomainIpv4
+ }
+ if a.IP.To4() != nil {
+ return socket.DomainIpv4
+ }
+ return socket.DomainIpv6
+}
+
+func (a *TCPAddr) family() int {
+ return domainToFamily(a.domain())
+}
+
+func (a *TCPAddr) sockaddr(domain socket.Domain) (address net.SocketAddress, err error) {
+ if a == nil {
+ return net.SocketAddressWithIpv4(net.Ipv4SocketAddress{}), nil
+ }
+ return ipToSockaddr(domain, a.IP, a.Port, a.Zone)
+}
+
+func (c *TCPConn) readFrom(r io.Reader) (int64, error) {
+ return genericReadFrom(c, r)
+}
+
+func (sd *sysDialer) dialTCP(ctx context.Context, laddr, raddr *TCPAddr) (*TCPConn, error) {
+ if testHookDialTCP != nil {
+ return testHookDialTCP(ctx, sd.network, laddr, raddr)
+ }
+ return sd.doDialTCP(ctx, laddr, raddr)
+}
+
+func (sd *sysDialer) doDialTCP(ctx context.Context, laddr, raddr *TCPAddr) (*TCPConn, error) {
+ switch sd.network {
+ case "tcp", "tcp4", "tcp6":
+ default:
+ return nil, UnknownNetworkError(sd.network)
+ }
+ if raddr == nil {
+ return nil, errMissingAddress
+ }
+ fd, err := dialFuchsia(ctx, sd.network, laddr, raddr)
+ if err != nil {
+ return nil, err
+ }
+ return newTCPConn(fd), nil
+}
+
+func (ln *TCPListener) ok() bool { return ln != nil && ln.fd != nil }
+
+func (ln *TCPListener) accept() (*TCPConn, error) {
+ fd, err := ln.fd.accept()
+ if err != nil {
+ return nil, err
+ }
+ return newTCPConn(fd), nil
+}
+
+func (ln *TCPListener) close() error { return ln.fd.Close() }
+
+func (ln *TCPListener) file() (*os.File, error) { return ln.fd.dup() }
+
+func (sl *sysListener) listenTCP(ctx context.Context, laddr *TCPAddr) (*TCPListener, error) {
+ fd, err := dialFuchsia(ctx, sl.network, laddr, nil)
+ if err != nil {
+ return nil, err
+ }
+ return &TCPListener{fd: fd, lc: sl.ListenConfig}, nil
+}
diff --git a/src/net/tcpsock_test.go b/src/net/tcpsock_test.go
index 9c9f1ea..7ee8668 100644
--- a/src/net/tcpsock_test.go
+++ b/src/net/tcpsock_test.go
@@ -9,6 +9,7 @@
import (
"fmt"
+ "internal/poll"
"internal/testenv"
"io"
"os"
@@ -442,9 +443,16 @@
for {
c, err := ln.Accept()
if err != nil {
+ if err, ok := err.(*OpError); ok {
+ if err.Err != poll.ErrNetClosing {
+ t.Error(err)
+ }
+ }
break
}
- c.Close()
+ if err := c.Close(); err != nil {
+ t.Error(err)
+ }
}
wg.Done()
}()
@@ -453,20 +461,27 @@
fails := 0
d := &Dialer{Timeout: 200 * time.Millisecond}
for i := 0; i < attempts; i++ {
+ if t.Failed() {
+ break
+ }
c, err := d.Dial("tcp", ln.Addr().String())
if err != nil {
fails++
} else {
- c.Close()
+ if err := c.Close(); err != nil {
+ t.Error(err)
+ }
}
}
- ln.Close()
+ if err := ln.Close(); err != nil {
+ t.Error(err)
+ }
wg.Wait()
if fails > attempts/9 { // see issues 7400 and 7541
- t.Fatalf("too many Dial failed: %v", fails)
+ t.Fatalf("too many Dial failed: %d", fails)
}
if fails > 0 {
- t.Logf("# of failed Dials: %v", fails)
+ t.Logf("# of failed Dials: %d", fails)
}
}
@@ -501,6 +516,12 @@
}
defer server.Close()
+ var want float64
+ // TODO(tamird/dhobsd): reduce allocations.
+ if runtime.GOOS == "fuchsia" {
+ want = 4
+ }
+
var buf [128]byte
allocs := testing.AllocsPerRun(1000, func() {
_, err := server.Write(buf[:])
@@ -512,8 +533,8 @@
t.Fatal(err)
}
})
- if allocs > 0 {
- t.Fatalf("got %v; want 0", allocs)
+ if allocs > want {
+ t.Fatalf("got %v; want %v", allocs, want)
}
var bufwrt [128]byte
@@ -534,8 +555,8 @@
t.Fatal(err)
}
})
- if allocs > 0 {
- t.Fatalf("got %v; want 0", allocs)
+ if allocs > want {
+ t.Fatalf("got %v; want %v", allocs, want)
}
}
@@ -648,7 +669,7 @@
n = 1000
}
switch runtime.GOOS {
- case "darwin", "ios", "dragonfly", "freebsd", "netbsd", "openbsd", "plan9", "illumos", "solaris", "windows":
+ case "darwin", "ios", "dragonfly", "freebsd", "fuchsia", "netbsd", "openbsd", "plan9", "illumos", "solaris", "windows":
// Non-Linux systems take a long time to figure
// out that there is nothing listening on localhost.
n = 100
@@ -724,6 +745,9 @@
}
func TestCopyPipeIntoTCP(t *testing.T) {
+ if runtime.GOOS == "fuchsia" {
+ t.Skip("hangs on fuchsia")
+ }
ln, err := newLocalListener("tcp")
if err != nil {
t.Fatal(err)
diff --git a/src/net/tcpsock_unix_test.go b/src/net/tcpsock_unix_test.go
index 41bd229..a729cdf 100644
--- a/src/net/tcpsock_unix_test.go
+++ b/src/net/tcpsock_unix_test.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build !js && !plan9 && !windows
-// +build !js,!plan9,!windows
+//go:build !fuchsia && !js && !plan9 && !windows
+// +build !fuchsia,!js,!plan9,!windows
package net
diff --git a/src/net/tcpsockopt_fuchsia.go b/src/net/tcpsockopt_fuchsia.go
new file mode 100644
index 0000000..29a94b8
--- /dev/null
+++ b/src/net/tcpsockopt_fuchsia.go
@@ -0,0 +1,33 @@
+// Copyright 2019 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 net
+
+import (
+ "runtime"
+ "syscall"
+ "syscall/zx/zxsocket"
+ "time"
+)
+
+func setNoDelay(fd *netFD, noDelay bool) error {
+ if sock, ok := fd.sock.(*zxsocket.StreamSocket); ok {
+ err := sock.SetNoDelay(noDelay)
+ runtime.KeepAlive(fd)
+ return err
+ }
+ return syscall.ENOPROTOOPT
+}
+
+func setKeepAlivePeriod(fd *netFD, d time.Duration) error {
+ if sock, ok := fd.sock.(*zxsocket.StreamSocket); ok {
+ // The socket option expects seconds so round to next highest second.
+ secs := uint32((d + time.Second - 1) / time.Second)
+
+ err := sock.SetKeepAlivePeriod(secs)
+ runtime.KeepAlive(fd)
+ return wrapSyscallError("setsockopt", err)
+ }
+ return syscall.ENOPROTOOPT
+}
diff --git a/src/net/timeout_test.go b/src/net/timeout_test.go
index e1cf146..e1050cd 100644
--- a/src/net/timeout_test.go
+++ b/src/net/timeout_test.go
@@ -40,6 +40,9 @@
}
func TestDialTimeout(t *testing.T) {
+ if runtime.GOOS == "fuchsia" {
+ t.Skip("dial tcp 127.0.0.1:0: ErrPeerClosed: zxsocket")
+ }
// Cannot use t.Parallel - modifies global hooks.
origTestHookDialChannel := testHookDialChannel
defer func() { testHookDialChannel = origTestHookDialChannel }()
@@ -212,6 +215,9 @@
}
func TestAcceptTimeoutMustReturn(t *testing.T) {
+ if runtime.GOOS == "fuchsia" {
+ t.Skip("zxsocket does not implement deadlines")
+ }
t.Parallel()
switch runtime.GOOS {
@@ -258,6 +264,9 @@
}
func TestAcceptTimeoutMustNotReturn(t *testing.T) {
+ if runtime.GOOS == "fuchsia" {
+ t.Skip("zxsocket does not implement deadlines")
+ }
t.Parallel()
switch runtime.GOOS {
@@ -309,6 +318,9 @@
}
func TestReadTimeout(t *testing.T) {
+ if runtime.GOOS == "fuchsia" {
+ t.Skip("set tcp 127.0.0.1:45785: file type does not support deadline")
+ }
handler := func(ls *localServer, ln Listener) {
c, err := ln.Accept()
if err != nil {
@@ -363,6 +375,9 @@
}
func TestReadTimeoutMustNotReturn(t *testing.T) {
+ if runtime.GOOS == "fuchsia" {
+ t.Skip("zxsocket does not implement deadlines")
+ }
t.Parallel()
switch runtime.GOOS {
@@ -430,6 +445,9 @@
}
func TestReadFromTimeout(t *testing.T) {
+ if runtime.GOOS == "fuchsia" {
+ t.Skip("set udp 127.0.0.1:40297: file type does not support deadline")
+ }
ch := make(chan Addr)
defer close(ch)
handler := func(ls *localPacketServer, c PacketConn) {
@@ -498,6 +516,9 @@
}
func TestWriteTimeout(t *testing.T) {
+ if runtime.GOOS == "fuchsia" {
+ t.Skip("zxsocket does not implement deadlines")
+ }
t.Parallel()
ln, err := newLocalListener("tcp")
@@ -541,6 +562,9 @@
}
func TestWriteTimeoutMustNotReturn(t *testing.T) {
+ if runtime.GOOS == "fuchsia" {
+ t.Skip("zxsocket does not implement deadlines")
+ }
t.Parallel()
switch runtime.GOOS {
@@ -612,6 +636,9 @@
}
func TestWriteToTimeout(t *testing.T) {
+ if runtime.GOOS == "fuchsia" {
+ t.Skip("zxsocket does not implement deadlines")
+ }
t.Parallel()
c1, err := newLocalPacketListener("udp")
@@ -660,6 +687,9 @@
}
func TestReadTimeoutFluctuation(t *testing.T) {
+ if runtime.GOOS == "fuchsia" {
+ t.Skip("zxsocket does not implement deadlines")
+ }
t.Parallel()
ln, err := newLocalListener("tcp")
@@ -693,6 +723,9 @@
}
func TestReadFromTimeoutFluctuation(t *testing.T) {
+ if runtime.GOOS == "fuchsia" {
+ t.Skip("zxsocket does not implement deadlines")
+ }
t.Parallel()
c1, err := newLocalPacketListener("udp")
@@ -726,6 +759,9 @@
}
func TestWriteTimeoutFluctuation(t *testing.T) {
+ if runtime.GOOS == "fuchsia" {
+ t.Skip("zxsocket does not implement deadlines")
+ }
t.Parallel()
switch runtime.GOOS {
@@ -803,6 +839,9 @@
if runtime.GOOS == "plan9" {
t.Skip("skipping test on plan9; see golang.org/issue/26945")
}
+ if runtime.GOOS == "fuchsia" {
+ t.Skip("zxsocket does not implement deadlines")
+ }
type result struct {
n int64
err error
@@ -897,6 +936,9 @@
// TestReadWriteProlongedTimeout tests concurrent deadline
// modification. Known to cause data races in the past.
func TestReadWriteProlongedTimeout(t *testing.T) {
+ if runtime.GOOS == "fuchsia" {
+ t.Skip("zxsocket does not implement deadlines")
+ }
t.Parallel()
switch runtime.GOOS {
@@ -977,6 +1019,9 @@
}
func TestReadWriteDeadlineRace(t *testing.T) {
+ if runtime.GOOS == "fuchsia" {
+ t.Skip("zxsocket does not implement deadlines")
+ }
t.Parallel()
N := 1000
diff --git a/src/net/udpsock_fuchsia.go b/src/net/udpsock_fuchsia.go
new file mode 100644
index 0000000..b101308
--- /dev/null
+++ b/src/net/udpsock_fuchsia.go
@@ -0,0 +1,122 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+//+build fuchsia
+
+package net
+
+import (
+ "context"
+ "syscall"
+ "syscall/zx/net"
+ "syscall/zx/posix/socket"
+)
+
+func (a *UDPAddr) domain() socket.Domain {
+ if a == nil || len(a.IP) <= IPv4len {
+ return socket.DomainIpv4
+ }
+ if a.IP.To4() != nil {
+ return socket.DomainIpv4
+ }
+ return socket.DomainIpv6
+}
+
+func (a *UDPAddr) family() int {
+ return domainToFamily(a.domain())
+}
+
+func (a *UDPAddr) sockaddr(domain socket.Domain) (addr net.SocketAddress, err error) {
+ if a == nil {
+ return net.SocketAddressWithIpv4(net.Ipv4SocketAddress{}), nil
+ }
+ return ipToSockaddr(domain, a.IP, a.Port, a.Zone)
+}
+
+func (c *UDPConn) readFrom(b []byte, addr *UDPAddr) (int, *UDPAddr, error) {
+ n, _, _, addr, err := c.readMsgInner(b, addr, nil)
+ return n, addr, err
+}
+
+func (c *UDPConn) readMsg(b, oob []byte) (n, oobn, flags int, addr *UDPAddr, err error) {
+ return c.readMsgInner(b, &UDPAddr{}, oob)
+}
+
+func (c *UDPConn) readMsgInner(b []byte, addr *UDPAddr, oob []byte) (n, oobn, flags int, _ *UDPAddr, err error) {
+ n, flags, address, err := c.fd.readMsg(b)
+ if err != nil {
+ return 0, 0, 0, nil, err
+ }
+ ip, port := socketAddrToIpPort(address)
+ *addr = UDPAddr{
+ IP: ip,
+ Port: port,
+ }
+ return n, 0, flags, addr, nil
+}
+
+func (c *UDPConn) writeTo(b []byte, addr *UDPAddr) (int, error) {
+ n, _, err := c.writeMsg(b, nil, addr)
+ return n, err
+}
+
+func (c *UDPConn) writeMsg(b, oob []byte, addr *UDPAddr) (n, oobn int, err error) {
+ if c.fd.isConnected && addr != nil {
+ return 0, 0, ErrWriteToConnected
+ }
+ if !c.fd.isConnected && addr == nil {
+ return 0, 0, errMissingAddress
+ }
+ if len(oob) > 0 {
+ return 0, 0, syscall.EFUCHSIA
+ }
+ if addr == nil {
+ n, err = c.fd.Write(b)
+ return n, 0, err
+ }
+ {
+ addr, err := addr.sockaddr(familyToDomain(c.fd.family))
+ if err != nil {
+ return 0, 0, err
+ }
+ n, err = c.fd.sendMsg(b, addr)
+ return n, 0, err
+ }
+}
+
+func (sd *sysDialer) dialUDP(ctx context.Context, laddr, raddr *UDPAddr) (*UDPConn, error) {
+ switch sd.network {
+ case "udp", "udp4", "udp6":
+ default:
+ return nil, UnknownNetworkError(sd.network)
+ }
+ if raddr == nil {
+ return nil, errMissingAddress
+ }
+ var laddrif sockaddr
+ if laddr != nil {
+ laddrif = laddr
+ }
+ fd, err := dialFuchsia(ctx, sd.network, laddrif, raddr)
+ if err != nil {
+ return nil, err
+ }
+ return newUDPConn(fd), nil
+}
+
+func (sl *sysListener) listenUDP(ctx context.Context, laddr *UDPAddr) (*UDPConn, error) {
+ var laddrif sockaddr
+ if laddr != nil {
+ laddrif = laddr
+ }
+ fd, err := dialFuchsia(ctx, sl.network, laddrif, nil)
+ if err != nil {
+ return nil, err
+ }
+ return newUDPConn(fd), nil
+}
+
+func (sl *sysListener) listenMulticastUDP(ctx context.Context, ifi *Interface, gaddr *UDPAddr) (*UDPConn, error) {
+ return nil, syscall.EFUCHSIA
+}
diff --git a/src/net/udpsock_test.go b/src/net/udpsock_test.go
index 0e8c351..6d759ce 100644
--- a/src/net/udpsock_test.go
+++ b/src/net/udpsock_test.go
@@ -451,6 +451,7 @@
// TestUDPReadTimeout verifies that ReadFromUDP with timeout returns an error
// without data or an address.
func TestUDPReadTimeout(t *testing.T) {
+ requireSetDeadline(t)
la, err := ResolveUDPAddr("udp4", "127.0.0.1:0")
if err != nil {
t.Fatal(err)
diff --git a/src/net/unixsock_fuchsia.go b/src/net/unixsock_fuchsia.go
new file mode 100644
index 0000000..1ed9304
--- /dev/null
+++ b/src/net/unixsock_fuchsia.go
@@ -0,0 +1,51 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package net
+
+import (
+ "context"
+ "os"
+ "syscall"
+)
+
+func (c *UnixConn) readFrom(b []byte) (int, *UnixAddr, error) {
+ return 0, nil, syscall.EFUCHSIA
+}
+
+func (c *UnixConn) readMsg(b, oob []byte) (n, oobn, flags int, addr *UnixAddr, err error) {
+ return 0, 0, 0, nil, syscall.EFUCHSIA
+}
+
+func (c *UnixConn) writeTo(b []byte, addr *UnixAddr) (int, error) {
+ return 0, syscall.EFUCHSIA
+}
+
+func (c *UnixConn) writeMsg(b, oob []byte, addr *UnixAddr) (n, oobn int, err error) {
+ return 0, 0, syscall.EFUCHSIA
+}
+
+func (sd *sysDialer) dialUnix(ctx context.Context, laddr, raddr *UnixAddr) (*UnixConn, error) {
+ return nil, syscall.EFUCHSIA
+}
+
+func (ln *UnixListener) accept() (*UnixConn, error) {
+ return nil, syscall.EFUCHSIA
+}
+
+func (ln *UnixListener) close() error {
+ return syscall.EFUCHSIA
+}
+
+func (ln *UnixListener) file() (*os.File, error) {
+ return nil, syscall.EFUCHSIA
+}
+
+func (sl *sysListener) listenUnix(ctx context.Context, laddr *UnixAddr) (*UnixListener, error) {
+ return nil, syscall.EFUCHSIA
+}
+
+func (sl *sysListener) listenUnixgram(ctx context.Context, laddr *UnixAddr) (*UnixConn, error) {
+ return nil, syscall.EFUCHSIA
+}
diff --git a/src/net/unixsock_test.go b/src/net/unixsock_test.go
index 71092e8..b72d1c7 100644
--- a/src/net/unixsock_test.go
+++ b/src/net/unixsock_test.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build !js && !plan9 && !windows
-// +build !js,!plan9,!windows
+//go:build !fuchsia && !js && !plan9 && !windows
+// +build !fuchsia,!js,!plan9,!windows
package net
diff --git a/src/net/writev_test.go b/src/net/writev_test.go
index bf40ca2..38605b5 100644
--- a/src/net/writev_test.go
+++ b/src/net/writev_test.go
@@ -102,6 +102,13 @@
}
func testBuffer_writeTo(t *testing.T, chunks int, useCopy bool) {
+ if runtime.GOOS == "fuchsia" {
+ if useCopy {
+ t.Skip("TODO(26919): fails on Fuchsia with ErrBadState")
+ } else {
+ t.Skip("TODO(26919): hangs on Fuchsia")
+ }
+ }
oldHook := poll.TestHookDidWritev
defer func() { poll.TestHookDidWritev = oldHook }()
var writeLog struct {
diff --git a/src/os/dir_unix.go b/src/os/dir_unix.go
index 5589c9c..5de919a 100644
--- a/src/os/dir_unix.go
+++ b/src/os/dir_unix.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build aix || dragonfly || freebsd || (js && wasm) || linux || netbsd || openbsd || solaris
-// +build aix dragonfly freebsd js,wasm linux netbsd openbsd solaris
+//go:build aix || dragonfly || freebsd || fuchsia || (js && wasm) || linux || netbsd || openbsd || solaris
+// +build aix dragonfly freebsd fuchsia js,wasm linux netbsd openbsd solaris
package os
diff --git a/src/os/dirent_fuchsia.go b/src/os/dirent_fuchsia.go
new file mode 100644
index 0000000..0a26dfa
--- /dev/null
+++ b/src/os/dirent_fuchsia.go
@@ -0,0 +1,55 @@
+// 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.
+
+// `go mod` ignores file names for the purpose of resolving
+// dependencies, and fdio doesn't build on not-Fuchsia.
+// +build fuchsia
+
+package os
+
+import (
+ "syscall"
+ "unsafe"
+)
+
+func direntIno(buf []byte) (uint64, bool) {
+ return readInt(buf, unsafe.Offsetof(syscall.Dirent{}.Ino), unsafe.Sizeof(syscall.Dirent{}.Ino))
+}
+
+func direntReclen(buf []byte) (uint64, bool) {
+ if namelen, ok := direntNamlen(buf); ok {
+ return namelen + uint64(unsafe.Offsetof(syscall.Dirent{}.Name)), true
+ } else {
+ return 0, false
+ }
+}
+
+func direntNamlen(buf []byte) (uint64, bool) {
+ return readInt(buf, unsafe.Offsetof(syscall.Dirent{}.Size), unsafe.Sizeof(syscall.Dirent{}.Size))
+}
+
+func direntType(buf []byte) FileMode {
+ off := unsafe.Offsetof(syscall.Dirent{}.Type)
+ if off >= uintptr(len(buf)) {
+ return ^FileMode(0) // unknown
+ }
+ typ := buf[off]
+ switch typ {
+ case syscall.DT_BLK:
+ return ModeDevice
+ case syscall.DT_CHR:
+ return ModeDevice | ModeCharDevice
+ case syscall.DT_DIR:
+ return ModeDir
+ case syscall.DT_FIFO:
+ return ModeNamedPipe
+ case syscall.DT_LNK:
+ return ModeSymlink
+ case syscall.DT_REG:
+ return 0
+ case syscall.DT_SOCK:
+ return ModeSocket
+ }
+ return ^FileMode(0) // unknown
+}
diff --git a/src/os/error_errno.go b/src/os/error_errno.go
index 580e915b..5bc7ebe 100644
--- a/src/os/error_errno.go
+++ b/src/os/error_errno.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build !plan9
-// +build !plan9
+//go:build !fuchsia && !plan9
+// +build !fuchsia,!plan9
package os
diff --git a/src/os/error_fuchsia.go b/src/os/error_fuchsia.go
new file mode 100644
index 0000000..7220bee
--- /dev/null
+++ b/src/os/error_fuchsia.go
@@ -0,0 +1,22 @@
+// Copyright 2009 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 os
+
+import (
+ "syscall/zx"
+)
+
+type syscallErrorType = *zx.Error
+
+func wrapSyscallError(name string, err error) error {
+ if err, ok := err.(*zx.Error); ok {
+ text := name
+ if err.Text != "" {
+ text += ": " + err.Text
+ }
+ return &zx.Error{Status: err.Status, Text: text}
+ }
+ return err
+}
diff --git a/src/os/example_test.go b/src/os/example_test.go
index e8554b0..b24e63d 100644
--- a/src/os/example_test.go
+++ b/src/os/example_test.go
@@ -224,7 +224,7 @@
}
}
-func ExampleReadFile() {
+func NoExampleReadFile() {
data, err := os.ReadFile("testdata/hello")
if err != nil {
log.Fatal(err)
diff --git a/src/os/exec/exec_test.go b/src/os/exec/exec_test.go
index d854e0d..8cb7dfd 100644
--- a/src/os/exec/exec_test.go
+++ b/src/os/exec/exec_test.go
@@ -42,6 +42,9 @@
if os.Getenv("GO_WANT_HELPER_PROCESS") == "1" {
return
}
+ if runtime.GOOS == "fuchsia" {
+ return
+ }
if runtime.GOOS == "windows" {
return
}
@@ -98,6 +101,9 @@
func TestCommandRelativeName(t *testing.T) {
testenv.MustHaveExec(t)
+ if runtime.GOOS == "fuchsia" {
+ t.Skip("fdio_spawn_etc: -25: failed to load executable from test/go_exec_test: Could not open file")
+ }
// Run our own binary as a relative path
// (e.g. "_test/exec.test") our parent directory.
@@ -161,6 +167,9 @@
}
func TestCatGoodAndBadFile(t *testing.T) {
+ if runtime.GOOS == "fuchsia" {
+ t.Skip("tests don't have access to their own sources on fuchsia")
+ }
// Testing combined output and error values.
bs, err := helperCommand(t, "cat", "/bogus/file.foo", "exec_test.go").CombinedOutput()
if _, ok := err.(*exec.ExitError); !ok {
@@ -608,6 +617,9 @@
// it doesn't work if external linking is required.
testenv.MustInternalLink(t)
+ if runtime.GOOS == "fuchsia" {
+ t.Skip("FileListener is not supported on fuchsia")
+ }
if runtime.GOOS == "windows" {
t.Skipf("skipping test on %q", runtime.GOOS)
}
@@ -712,6 +724,9 @@
}
func TestExtraFilesRace(t *testing.T) {
+ if runtime.GOOS == "fuchsia" {
+ t.Skip("FileListener is not supported on fuchsia")
+ }
if runtime.GOOS == "windows" {
t.Skip("no operating system support; skipping")
}
diff --git a/src/os/exec/lp_unix.go b/src/os/exec/lp_unix.go
index d1d246a..3042601 100644
--- a/src/os/exec/lp_unix.go
+++ b/src/os/exec/lp_unix.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris
-// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
+//go:build aix || darwin || dragonfly || freebsd || fuchsia || linux || netbsd || openbsd || solaris
+// +build aix darwin dragonfly freebsd fuchsia linux netbsd openbsd solaris
package exec
diff --git a/src/os/exec_cgo_fuchsia.go b/src/os/exec_cgo_fuchsia.go
new file mode 100644
index 0000000..6c73958
--- /dev/null
+++ b/src/os/exec_cgo_fuchsia.go
@@ -0,0 +1,200 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// `go mod` ignores file names for the purpose of resolving
+// dependencies, and zxwait doesn't build on not-Fuchsia.
+//go:build fuchsia
+// +build fuchsia
+
+package os
+
+// #cgo fuchsia CFLAGS: -I${SRCDIR}/../../../../../zircon/system/ulib/fdio/include
+// #cgo fuchsia LDFLAGS: -lfdio
+//
+// #include <lib/fdio/fd.h>
+// #include <lib/fdio/spawn.h>
+// #include <stdlib.h>
+// #include <unistd.h>
+// #include <zircon/syscalls/object.h>
+// #include <zircon/types.h>
+//
+// static int fsa_get_local_fd(fdio_spawn_action_t *fsa) { return fsa->fd.local_fd; }
+// static int fsa_get_target_fd(fdio_spawn_action_t *fsa) { return fsa->fd.target_fd; }
+//
+// static void fsa_set_local_fd(fdio_spawn_action_t *fsa, int fd) { fsa->fd.local_fd = fd; }
+// static void fsa_set_target_fd(fdio_spawn_action_t *fsa, int fd) { fsa->fd.target_fd = fd; }
+import "C"
+
+import (
+ "context"
+ "errors"
+ "syscall"
+ "syscall/zx"
+ "syscall/zx/zxwait"
+ "unsafe"
+)
+
+func makeCStringArray(s []string) []*C.char {
+ ret := make([]*C.char, len(s)+1)
+ for i, s := range s {
+ ret[i] = (*C.char)(C.CString(s))
+ }
+ ret[len(ret)-1] = nil
+ return ret
+}
+
+func freeCStringArray(a []*C.char) {
+ for i := range a {
+ if a[i] != nil {
+ C.free(unsafe.Pointer(a[i]))
+ }
+ }
+}
+
+// asLibfdioFD returns a File as a libfdio file descriptor.
+func asLibfdioFD(f *File) (int, error) {
+ m := syscall.FDIOForFD(int(f.Fd()))
+ if m == nil {
+ return -1, ErrInvalid
+ }
+
+ mCopy, err := m.Clone()
+ if err != nil {
+ return -1, err
+ }
+ handles := mCopy.Handles()
+
+ var fd C.int
+ status := zx.Status(C.fdio_fd_create(C.zx_handle_t(handles[0]), &fd))
+ if status != zx.ErrOk {
+ return -1, errors.New("fdio_fd_create failed")
+ }
+ return int(fd), nil
+}
+
+func fdioSpawnActions(attr *ProcAttr) (actions []C.fdio_spawn_action_t, err error) {
+ defer func() {
+ if err != nil {
+ for _, action := range actions {
+ C.close(C.fsa_get_local_fd(&action))
+ }
+ }
+ }()
+
+ for i, f := range attr.Files {
+ if f == nil {
+ continue
+ }
+ fd, err := asLibfdioFD(f)
+ if err != nil {
+ return nil, err
+ }
+ action := C.fdio_spawn_action_t{action: C.FDIO_SPAWN_ACTION_TRANSFER_FD}
+ C.fsa_set_local_fd(&action, C.int(fd))
+ C.fsa_set_target_fd(&action, C.int(i))
+ actions = append(actions, action)
+ }
+
+ return actions, nil
+}
+
+func fdioStartProcess(name string, argv []string, attr *ProcAttr) (zx.Handle, error) {
+ env := attr.Env
+ if env == nil {
+ env = Environ()
+ }
+ if attr.Dir != "" {
+ found := false
+ for i, s := range env {
+ const prefix = "PWD="
+ // strings.HasPrefix
+ if len(s) >= len(prefix) && s[:len(prefix)] == prefix {
+ found = true
+ env[i] = "PWD=" + attr.Dir
+ break
+ }
+ }
+ if !found {
+ env = append(env, "PWD="+attr.Dir)
+ }
+ }
+
+ nameC := C.CString(name)
+ defer C.free(unsafe.Pointer(nameC))
+ argvC := makeCStringArray(argv)
+ defer freeCStringArray(argvC)
+ envC := makeCStringArray(env)
+ defer freeCStringArray(envC)
+
+ actions, err := fdioSpawnActions(attr)
+ if err != nil {
+ return 0, err
+ }
+
+ var actions0 *C.fdio_spawn_action_t
+ if len(actions) > 0 {
+ actions0 = &actions[0]
+ }
+
+ var h C.zx_handle_t
+ var errmsg [C.FDIO_SPAWN_ERR_MSG_MAX_LENGTH]C.char
+ status := zx.Status(C.fdio_spawn_etc(
+ C.ZX_HANDLE_INVALID,
+ // TODO(mdempsky): Flags.
+ C.FDIO_SPAWN_CLONE_JOB|C.FDIO_SPAWN_DEFAULT_LDSVC|C.FDIO_SPAWN_CLONE_NAMESPACE|C.FDIO_SPAWN_CLONE_UTC_CLOCK,
+ nameC,
+ &argvC[0],
+ &envC[0],
+ C.size_t(len(actions)),
+ actions0,
+ &h,
+ &errmsg[0],
+ ))
+ if status != zx.ErrOk {
+ return 0, &zx.Error{
+ Status: status,
+ Text: "fdio_spawn_etc: " + charsAsString(errmsg[:]),
+ }
+ }
+ return zx.Handle(h), nil
+}
+
+func charsAsString(s []C.char) string {
+ var x []byte
+ for _, c := range s {
+ if c == 0 {
+ break
+ }
+ x = append(x, byte(c))
+ }
+ return string(x)
+}
+
+func (p *Process) kill() error {
+ procHandle := zx.Handle(p.handle)
+ status := zx.Sys_task_kill(procHandle)
+ if status != zx.ErrOk {
+ return &zx.Error{
+ Status: status,
+ Text: "kill error",
+ }
+ }
+ return nil
+}
+
+func (p *Process) wait() (*ProcessState, error) {
+ procHandle := zx.Handle(p.handle)
+ if _, err := zxwait.WaitContext(context.Background(), procHandle, zx.SignalTaskTerminated); err != nil {
+ return nil, err
+ }
+ procInfo := C.zx_info_process_t{}
+ status := zx.Sys_object_get_info(procHandle, zx.ObjectInfoProcess, unsafe.Pointer(&procInfo), C.sizeof_zx_info_process_t, nil, nil)
+ if status != zx.ErrOk {
+ return nil, &zx.Error{
+ Status: status,
+ Text: "error retrieving process info",
+ }
+ }
+ return &ProcessState{retCode: int(procInfo.return_code)}, p.Release()
+}
diff --git a/src/os/exec_fuchsia.go b/src/os/exec_fuchsia.go
new file mode 100644
index 0000000..2846d78
--- /dev/null
+++ b/src/os/exec_fuchsia.go
@@ -0,0 +1,100 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package os
+
+import (
+ "errors"
+ "internal/itoa"
+ "runtime"
+ "sync/atomic"
+ "syscall/zx"
+ "time"
+)
+
+type ProcessState struct {
+ retCode int
+}
+
+func (p *ProcessState) exited() bool {
+ panic("TODO os.Exited")
+}
+
+func (p *ProcessState) Pid() int {
+ panic("TODO os.Pid")
+}
+
+func (p *ProcessState) String() string {
+ if p == nil {
+ return "<nil>"
+ }
+ return "exit status " + itoa.Itoa(p.retCode)
+}
+
+func (p *ProcessState) ExitCode() int {
+ // return -1 if the process hasn't started.
+ if p == nil {
+ return -1
+ }
+ return p.retCode
+}
+
+func (p *ProcessState) success() bool {
+ return p.retCode == 0
+}
+
+func (p *ProcessState) sys() interface{} {
+ panic("TODO os.sys")
+}
+
+func (p *ProcessState) sysUsage() interface{} {
+ panic("TODO os.sysUsage")
+}
+
+func (p *ProcessState) systemTime() time.Duration {
+ panic("TODO os.systemTime")
+}
+
+func (p *ProcessState) userTime() time.Duration {
+ panic("TODO os.userTime")
+}
+
+func (p *Process) release() error {
+ h := atomic.SwapUintptr(&p.handle, uintptr(zx.HandleInvalid))
+ procHandle := zx.Handle(h)
+ if err := procHandle.Close(); err != nil {
+ return err
+ }
+ // no need for a finalizer anymore
+ runtime.SetFinalizer(p, nil)
+ return nil
+}
+
+func (p *Process) signal(sig Signal) error {
+ panic("TODO os.Process.signal")
+}
+
+func findProcess(pid int) (p *Process, err error) {
+ panic("TODO os.findProcess")
+}
+
+func startProcess(name string, argv []string, attr *ProcAttr) (p *Process, err error) {
+ h, err := fdioStartProcess(name, argv, attr)
+ if err != nil {
+ return nil, err
+ }
+ pid := 1 // TODO: what does this even mean for us?
+ return newProcess(pid, uintptr(h)), nil
+}
+
+func hostname() (name string, err error) {
+ return "", errors.New("os.hostname unimplemented")
+}
+
+type signal string
+
+func (s signal) String() string { return string(s) }
+func (s signal) Signal() {}
+
+var Interrupt = signal("signal_interrupt")
diff --git a/src/os/exec_stubs_fuchsia.go b/src/os/exec_stubs_fuchsia.go
new file mode 100644
index 0000000..f22f020
--- /dev/null
+++ b/src/os/exec_stubs_fuchsia.go
@@ -0,0 +1,21 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build !cgo
+
+package os
+
+import "syscall/zx"
+
+func fdioStartProcess(name string, argv []string, attr *ProcAttr) (zx.Handle, error) {
+ panic("os.fdioStartProcess unimplemented")
+}
+
+func (p *Process) kill() error {
+ panic("os.Process.kill unimplemented")
+}
+
+func (p *Process) wait() (*ProcessState, error) {
+ panic("os.Process.wait unimplemented")
+}
diff --git a/src/os/executable_procfs.go b/src/os/executable_procfs.go
index 76ba0e6..14b86e9 100644
--- a/src/os/executable_procfs.go
+++ b/src/os/executable_procfs.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build linux || netbsd || (js && wasm)
-// +build linux netbsd js,wasm
+//go:build fuchsia || linux || netbsd || (js && wasm)
+// +build fuchsia linux netbsd js,wasm
package os
diff --git a/src/os/executable_test.go b/src/os/executable_test.go
index 719d6a6..033f8f8 100644
--- a/src/os/executable_test.go
+++ b/src/os/executable_test.go
@@ -20,6 +20,9 @@
testenv.MustHaveExec(t)
ep, err := os.Executable()
if err != nil {
+ if runtime.GOOS == "fuchsia" {
+ t.Skipf("Executable failed on %s: %v, expected", runtime.GOOS, err) // TODO(dhobsd): rebase
+ }
t.Fatalf("Executable failed: %v", err)
}
// we want fn to be of the form "dir/prog"
diff --git a/src/os/file_posix.go b/src/os/file_posix.go
index 211f2a1..fde8ce7 100644
--- a/src/os/file_posix.go
+++ b/src/os/file_posix.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build aix || darwin || dragonfly || freebsd || (js && wasm) || linux || netbsd || openbsd || solaris || windows
-// +build aix darwin dragonfly freebsd js,wasm linux netbsd openbsd solaris windows
+//go:build aix || darwin || dragonfly || freebsd || fuchsia || (js && wasm) || linux || netbsd || openbsd || solaris || windows
+// +build aix darwin dragonfly freebsd fuchsia js,wasm linux netbsd openbsd solaris windows
package os
diff --git a/src/os/file_unix.go b/src/os/file_unix.go
index a2531b9..1ee7577 100644
--- a/src/os/file_unix.go
+++ b/src/os/file_unix.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build aix || darwin || dragonfly || freebsd || (js && wasm) || linux || netbsd || openbsd || solaris
-// +build aix darwin dragonfly freebsd js,wasm linux netbsd openbsd solaris
+//go:build aix || darwin || dragonfly || freebsd || fuchsia || (js && wasm) || linux || netbsd || openbsd || solaris
+// +build aix darwin dragonfly freebsd fuchsia js,wasm linux netbsd openbsd solaris
package os
diff --git a/src/os/getwd.go b/src/os/getwd.go
index 90604cf..cb4038e 100644
--- a/src/os/getwd.go
+++ b/src/os/getwd.go
@@ -20,7 +20,7 @@
// reached via multiple paths (due to symbolic links),
// Getwd may return any one of them.
func Getwd() (dir string, err error) {
- if runtime.GOOS == "windows" || runtime.GOOS == "plan9" {
+ if runtime.GOOS == "windows" || runtime.GOOS == "plan9" || runtime.GOOS == "fuchsia" {
return syscall.Getwd()
}
diff --git a/src/os/os_test.go b/src/os/os_test.go
index 506f1fb..27171e4 100644
--- a/src/os/os_test.go
+++ b/src/os/os_test.go
@@ -12,6 +12,7 @@
"internal/testenv"
"io"
"io/fs"
+ "io/ioutil"
"os"
. "os"
osexec "os/exec"
@@ -28,15 +29,43 @@
"time"
)
-var dot = []string{
- "dir_unix.go",
- "env.go",
- "error.go",
- "file.go",
- "os_test.go",
- "types.go",
- "stat_darwin.go",
- "stat_linux.go",
+var dot = func() []string {
+ switch runtime.GOOS {
+ case "fuchsia":
+ return []string{
+ "go_os_test_foo",
+ "go_os_test_bar",
+ "go_os_test_baz",
+ }
+ default:
+ return []string{
+ "dir_unix.go",
+ "env.go",
+ "error.go",
+ "file.go",
+ "os_test.go",
+ "types.go",
+ "stat_darwin.go",
+ "stat_linux.go",
+ }
+ }
+}()
+
+func tmpInit(t *testing.T) {
+ if runtime.GOOS == "fuchsia" {
+ dir, err := ioutil.TempDir("", "")
+ if err != nil {
+ t.Fatalf("tempdir: %v", err)
+ }
+ for _, fname := range dot {
+ if err := MkdirAll(filepath.Join(dir, fname), ModePerm); err != nil {
+ t.Fatalf("Initializing tmp: %v", err)
+ }
+ }
+ if err := Chdir(dir); err != nil {
+ t.Fatalf("chdir: %v", err)
+ }
+ }
}
type sysDir struct {
@@ -46,6 +75,13 @@
var sysdir = func() *sysDir {
switch runtime.GOOS {
+ case "fuchsia":
+ return &sysDir{
+ "/pkg/test",
+ []string{
+ "go_os_test",
+ },
+ }
case "android":
return &sysDir{
"/system/lib",
@@ -175,6 +211,8 @@
var sfname = sysdir.files[0]
func TestStat(t *testing.T) {
+ t.Parallel()
+
path := sfdir + "/" + sfname
dir, err := Stat(path)
if err != nil {
@@ -190,6 +228,11 @@
}
func TestStatError(t *testing.T) {
+ t.Parallel()
+
+ if runtime.GOOS == "fuchsia" {
+ t.Skip("TODO(dhobsd): fix")
+ }
defer chtmpdir(t)()
path := "no-such-file"
@@ -226,6 +269,8 @@
}
func TestFstat(t *testing.T) {
+ t.Parallel()
+
path := sfdir + "/" + sfname
file, err1 := Open(path)
if err1 != nil {
@@ -246,6 +291,8 @@
}
func TestLstat(t *testing.T) {
+ t.Parallel()
+
path := sfdir + "/" + sfname
dir, err := Lstat(path)
if err != nil {
@@ -262,6 +309,8 @@
// Read with length 0 should not return EOF.
func TestRead0(t *testing.T) {
+ t.Parallel()
+
path := sfdir + "/" + sfname
f, err := Open(path)
if err != nil {
@@ -283,6 +332,8 @@
// Reading a closed file should return ErrClosed error
func TestReadClosed(t *testing.T) {
+ t.Parallel()
+
path := sfdir + "/" + sfname
file, err := Open(path)
if err != nil {
@@ -421,18 +472,21 @@
}
func TestFileReaddirnames(t *testing.T) {
+ tmpInit(t)
testReaddirnames(".", dot, t)
testReaddirnames(sysdir.name, sysdir.files, t)
testReaddirnames(t.TempDir(), nil, t)
}
func TestFileReaddir(t *testing.T) {
+ tmpInit(t)
testReaddir(".", dot, t)
testReaddir(sysdir.name, sysdir.files, t)
testReaddir(t.TempDir(), nil, t)
}
func TestFileReadDir(t *testing.T) {
+ tmpInit(t)
testReadDir(".", dot, t)
testReadDir(sysdir.name, sysdir.files, t)
testReadDir(t.TempDir(), nil, t)
@@ -569,9 +623,13 @@
// Check that reading a directory one entry at a time gives the same result
// as reading it all at once.
func TestReaddirnamesOneAtATime(t *testing.T) {
+ t.Parallel()
+
// big directory that doesn't change often.
dir := "/usr/bin"
switch runtime.GOOS {
+ case "fuchsia":
+ dir = "/boot/bin"
case "android":
dir = "/system/bin"
case "darwin", "ios":
@@ -614,6 +672,8 @@
}
func TestReaddirNValues(t *testing.T) {
+ t.Parallel()
+
if testing.Short() {
t.Skip("test.short; skipping")
}
@@ -1170,6 +1230,8 @@
switch runtime.GOOS {
case "android":
t.Skip("android doesn't have /bin/pwd")
+ case "fuchsia":
+ t.Skip("fuchsia doesn't have /bin/pwd")
case "windows":
cmd = Getenv("COMSPEC")
dir = Getenv("SystemRoot")
@@ -1203,6 +1265,9 @@
}
func TestChmod(t *testing.T) {
+ if runtime.GOOS == "fuchsia" {
+ t.Skip("Chmod is not supported under Fuchsia")
+ }
f := newFile("TestChmod", t)
defer Remove(f.Name())
defer f.Close()
@@ -1283,6 +1348,11 @@
// On NFS, timings can be off due to caching of meta-data on
// NFS servers (Issue 848).
func TestChtimes(t *testing.T) {
+ if runtime.GOOS == "fuchsia" {
+ // It passes sometimes, but seems to be flakey
+ t.Skipf("TODO(smklein): Implement")
+ }
+
f := newFile("TestChtimes", t)
defer Remove(f.Name())
@@ -1297,6 +1367,11 @@
// On NFS, timings can be off due to caching of meta-data on
// NFS servers (Issue 848).
func TestChtimesDir(t *testing.T) {
+ if runtime.GOOS == "fuchsia" {
+ // It passes sometimes, but seems to be flakey
+ t.Skipf("TODO(smklein): Implement")
+ }
+
name := newDir("TestChtimes", t)
defer RemoveAll(name)
@@ -1328,7 +1403,7 @@
pmt := postStat.ModTime()
if !pat.Before(at) {
switch runtime.GOOS {
- case "plan9":
+ case "plan9", "fuchsia":
// Mtime is the time of the last change of
// content. Similarly, atime is set whenever
// the contents are accessed; also, it is set
@@ -1352,7 +1427,7 @@
func TestFileChdir(t *testing.T) {
// TODO(brainman): file.Chdir() is not implemented on windows.
- if runtime.GOOS == "windows" {
+ if runtime.GOOS == "windows" || runtime.GOOS == "fuchsia" {
return
}
@@ -1387,7 +1462,7 @@
func TestChdirAndGetwd(t *testing.T) {
// TODO(brainman): file.Chdir() is not implemented on windows.
- if runtime.GOOS == "windows" {
+ if runtime.GOOS == "windows" || runtime.GOOS == "fuchsia" {
return
}
fd, err := Open(".")
@@ -1581,6 +1656,8 @@
}
func TestSeekError(t *testing.T) {
+ t.Parallel()
+
switch runtime.GOOS {
case "js", "plan9":
t.Skipf("skipping test on %v", runtime.GOOS)
@@ -1631,6 +1708,12 @@
}
func TestOpenError(t *testing.T) {
+ t.Parallel()
+
+ if runtime.GOOS == "fuchsia" {
+ t.Skipf("TODO(smklein): Implement")
+ }
+
for _, tt := range openErrorTests {
f, err := OpenFile(tt.path, tt.mode, 0)
if err == nil {
@@ -1670,6 +1753,8 @@
}
func TestOpenNoName(t *testing.T) {
+ t.Parallel()
+
f, err := Open("")
if err == nil {
f.Close()
@@ -1732,6 +1817,12 @@
}
func TestHostname(t *testing.T) {
+ t.Parallel()
+
+ if runtime.GOOS == "fuchsia" {
+ t.Skipf("TODO(dho): Implement")
+ }
+
hostname, err := Hostname()
if err != nil {
t.Fatal(err)
@@ -1964,6 +2055,10 @@
}
func TestSameFile(t *testing.T) {
+ if runtime.GOOS == "fuchsia" {
+ t.Skipf("TODO(smklein): Implement")
+ }
+
defer chtmpdir(t)()
fa, err := Create("a")
if err != nil {
@@ -2012,13 +2107,13 @@
if fi.Size() != 0 {
t.Errorf(pre+"wrong file size have %d want 0", fi.Size())
}
- if fi.Mode()&ModeDevice == 0 {
+ if fi.Mode()&ModeDevice == 0 && runtime.GOOS != "fuchsia" {
t.Errorf(pre+"wrong file mode %q: ModeDevice is not set", fi.Mode())
}
if fi.Mode()&ModeCharDevice == 0 {
t.Errorf(pre+"wrong file mode %q: ModeCharDevice is not set", fi.Mode())
}
- if fi.Mode().IsRegular() {
+ if fi.Mode().IsRegular() && runtime.GOOS != "fuchsia" {
t.Errorf(pre+"wrong file mode %q: IsRegular returns true", fi.Mode())
}
}
@@ -2075,6 +2170,10 @@
}
func TestStatDirModeExec(t *testing.T) {
+ if runtime.GOOS == "fuchsia" {
+ t.Skipf("TODO(smklein): Implement")
+ }
+
const mode = 0111
path := t.TempDir()
@@ -2093,7 +2192,8 @@
func TestStatStdin(t *testing.T) {
switch runtime.GOOS {
- case "android", "plan9":
+ case "android", "plan9", "fuchsia":
+ // TODO(smklein): Implement on Fuchsia
t.Skipf("%s doesn't have /bin/sh", runtime.GOOS)
}
@@ -2204,6 +2304,10 @@
}
func TestLongPath(t *testing.T) {
+ if runtime.GOOS == "fuchsia" {
+ t.Skipf("no chmod support on fuchsia")
+ }
+
tmpdir := newDir("TestLongPath", t)
defer func(d string) {
if err := RemoveAll(d); err != nil {
@@ -2297,6 +2401,8 @@
// TestSleep emulates "sleep 1". It is a helper for testKillProcess, so we
// don't have to rely on an external "sleep" command being available.
func TestSleep(t *testing.T) {
+ t.Parallel()
+
if testing.Short() {
t.Skip("Skipping in short mode")
}
@@ -2313,10 +2419,15 @@
}
func TestGetppid(t *testing.T) {
+ t.Parallel()
+
if runtime.GOOS == "plan9" {
// TODO: golang.org/issue/8206
t.Skipf("skipping test on plan9; see issue 8206")
}
+ if runtime.GOOS == "fuchsia" {
+ t.Skipf("TODO(smklein): Implement")
+ }
testenv.MustHaveExec(t)
@@ -2342,6 +2453,10 @@
}
func TestKillFindProcess(t *testing.T) {
+ if runtime.GOOS == "fuchsia" {
+ t.Skipf("TODO(smklein): Implement")
+ }
+
testKillProcess(t, func(p *Process) {
p2, err := FindProcess(p.Pid)
if err != nil {
@@ -2377,6 +2492,10 @@
// Test that all File methods give ErrInvalid if the receiver is nil.
func TestNilFileMethods(t *testing.T) {
+ if runtime.GOOS == "fuchsia" {
+ t.Skipf("TODO(smklein): Implement")
+ }
+
for _, tt := range nilFileMethodTests {
var file *File
got := tt.f(file)
@@ -2448,6 +2567,8 @@
t.Skip("skipping on Plan 9; does not support runtime poller")
case "js":
t.Skip("skipping on js; no support for os.Pipe")
+ case "fuchsia":
+ t.Skip("skipping on fuchsia; TODO")
}
threads := 100
@@ -2533,6 +2654,8 @@
}
func TestUserHomeDir(t *testing.T) {
+ t.Parallel()
+
dir, err := UserHomeDir()
if dir == "" && err == nil {
t.Fatal("UserHomeDir returned an empty string but no error")
@@ -2598,6 +2721,9 @@
if runtime.GOOS == "windows" {
testenv.SkipFlaky(t, 36019)
}
+ if runtime.GOOS == "fuchsia" {
+ t.Skip("fuchsia cannot expose testdata; directories can't be resources")
+ }
wd, err := Getwd()
if err != nil {
t.Fatal(err)
@@ -2666,6 +2792,9 @@
}
func TestDirFS(t *testing.T) {
+ if runtime.GOOS == "fuchsia" {
+ t.Skip("TODO(dhobsd): fix")
+ }
// On Windows, we force the MFT to update by reading the actual metadata from GetFileInformationByHandle and then
// explicitly setting that. Otherwise it might get out of sync with FindFirstFile. See golang.org/issues/42637.
if runtime.GOOS == "windows" {
@@ -2698,8 +2827,7 @@
// Test that Open does not accept backslash as separator.
d := DirFS(".")
- _, err := d.Open(`testdata\dirfs`)
- if err == nil {
+ if _, err := d.Open(`testdata\dirfs`); err == nil {
t.Fatalf(`Open testdata\dirfs succeeded`)
}
}
@@ -2732,6 +2860,8 @@
}
func TestReadFileProc(t *testing.T) {
+ t.Parallel()
+
// Linux files in /proc report 0 size,
// but then if ReadFile reads just a single byte at offset 0,
// the read at offset 1 returns EOF instead of more data.
@@ -2754,6 +2884,9 @@
if runtime.GOOS == "js" {
t.Skip("js allocates a lot during File.WriteString")
}
+ if runtime.GOOS == "fuchsia" {
+ t.Skip("fuchsia allocates a lot during File.WriteString")
+ }
d := t.TempDir()
f, err := Create(filepath.Join(d, "whiteboard.txt"))
if err != nil {
diff --git a/src/os/path_test.go b/src/os/path_test.go
index 4535abb..677f34a 100644
--- a/src/os/path_test.go
+++ b/src/os/path_test.go
@@ -96,7 +96,7 @@
func TestMkdirAllAtSlash(t *testing.T) {
switch runtime.GOOS {
- case "android", "plan9", "windows":
+ case "android", "fuchsia", "plan9", "windows":
t.Skipf("skipping on %s", runtime.GOOS)
case "darwin", "ios":
switch runtime.GOARCH {
diff --git a/src/os/path_unix.go b/src/os/path_unix.go
index db38359..d4919cc 100644
--- a/src/os/path_unix.go
+++ b/src/os/path_unix.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build aix || darwin || dragonfly || freebsd || (js && wasm) || linux || netbsd || openbsd || solaris
-// +build aix darwin dragonfly freebsd js,wasm linux netbsd openbsd solaris
+//go:build aix || darwin || dragonfly || freebsd || fuchsia || (js && wasm) || linux || netbsd || openbsd || solaris
+// +build aix darwin dragonfly freebsd fuchsia js,wasm linux netbsd openbsd solaris
package os
diff --git a/src/os/pipe_fuchsia.go b/src/os/pipe_fuchsia.go
new file mode 100644
index 0000000..5c2e933
--- /dev/null
+++ b/src/os/pipe_fuchsia.go
@@ -0,0 +1,25 @@
+// Copyright 2013 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.
+
+// `go mod` ignores file names for the purpose of resolving
+// dependencies, and fdio doesn't build on not-Fuchsia.
+// +build fuchsia
+
+package os
+
+import (
+ "syscall"
+ "syscall/zx/fdio"
+)
+
+func Pipe() (r *File, w *File, err error) {
+ p0, p1, err := fdio.NewPipes()
+ if err != nil {
+ return nil, nil, err
+ }
+ r = NewFile(uintptr(syscall.OpenFDIO(p0)), "|0")
+ w = NewFile(uintptr(syscall.OpenFDIO(p1)), "|1")
+ // TODO CloseOnExec equivalent
+ return r, w, nil
+}
diff --git a/src/os/pipe_test.go b/src/os/pipe_test.go
index 41a1e9c..9c8144c 100644
--- a/src/os/pipe_test.go
+++ b/src/os/pipe_test.go
@@ -3,8 +3,8 @@
// license that can be found in the LICENSE file.
// Test broken pipes on Unix systems.
-//go:build !plan9 && !js
-// +build !plan9,!js
+//go:build !fuchsia && !plan9 && !js
+// +build !fuchsia,!plan9,!js
package os_test
diff --git a/src/os/rawconn_test.go b/src/os/rawconn_test.go
index 8aebaf8..bcc788c 100644
--- a/src/os/rawconn_test.go
+++ b/src/os/rawconn_test.go
@@ -3,8 +3,8 @@
// license that can be found in the LICENSE file.
// Test use of raw connections.
-//go:build !plan9 && !js
-// +build !plan9,!js
+//go:build !fuchsia && !plan9 && !js
+// +build !fuchsia,!plan9,!js
package os_test
diff --git a/src/os/read_test.go b/src/os/read_test.go
index 5c58d7d..0b3fdbe 100644
--- a/src/os/read_test.go
+++ b/src/os/read_test.go
@@ -8,6 +8,7 @@
"bytes"
. "os"
"path/filepath"
+ "runtime"
"testing"
)
@@ -22,6 +23,9 @@
}
func TestReadFile(t *testing.T) {
+ if runtime.GOOS == "fuchsia" {
+ t.Skip("TODO(dhobsd): fix")
+ }
filename := "rumpelstilzchen"
contents, err := ReadFile(filename)
if err == nil {
@@ -96,6 +100,9 @@
}
func TestReadDir(t *testing.T) {
+ if runtime.GOOS == "fuchsia" {
+ t.Skip("TODO(dhobsd): fix")
+ }
dirname := "rumpelstilzchen"
_, err := ReadDir(dirname)
if err == nil {
diff --git a/src/os/removeall_test.go b/src/os/removeall_test.go
index 08dfdd8..76d4b3c 100644
--- a/src/os/removeall_test.go
+++ b/src/os/removeall_test.go
@@ -421,6 +421,8 @@
return
}
t.Fatal("RemoveAll(<read-only directory>) = nil; want error")
+ } else if runtime.GOOS == "fuchsia" {
+ t.Fatal(err)
}
dir, err := Open(path)
diff --git a/src/os/signal/signal_fuchsia.go b/src/os/signal/signal_fuchsia.go
new file mode 100644
index 0000000..0d4e736
--- /dev/null
+++ b/src/os/signal/signal_fuchsia.go
@@ -0,0 +1,29 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package signal
+
+import "os"
+
+const numSig = 65
+
+func signum(sig os.Signal) int {
+ panic("TODO")
+}
+
+func enableSignal(sig int) {
+ panic("TODO")
+}
+
+func disableSignal(sig int) {
+ panic("TODO")
+}
+
+func ignoreSignal(sig int) {
+ panic("TODO")
+}
+
+func signalIgnored(sig int) bool {
+ panic("TODO")
+}
diff --git a/src/os/stat_fuchsia.go b/src/os/stat_fuchsia.go
new file mode 100644
index 0000000..fb67df3
--- /dev/null
+++ b/src/os/stat_fuchsia.go
@@ -0,0 +1,36 @@
+// Copyright 2009 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 os
+
+import (
+ "time"
+)
+
+func fillFileStatFromSys(fs *fileStat, name string) {
+ fs.name = basename(name)
+ fs.size = int64(fs.sys.Size)
+ // For now, pretend files have all bits. This should really be:
+ // fs.mode = FileMode(fs.sys.Dev & 0777)
+ // but we don't really set file modes properly and testing for executables
+ // in $PATH fails without the x bit set.
+ fs.mode = FileMode(0766)
+
+ switch fs.sys.Dev & 0xf000 {
+ case 0x4000:
+ fs.mode = fs.mode | ModeDir
+ case 0x2000:
+ fs.mode = fs.mode | ModeCharDevice
+ case 0xa000:
+ fs.mode = fs.mode | ModeSymlink
+ case 0xc000:
+ fs.mode = fs.mode | ModeSocket
+ }
+ fs.modTime = time.Unix(int64(fs.sys.ModifyTime), 0)
+}
+
+func atime(fi FileInfo) time.Time {
+ // TODO: fdio doesn't have atime yet
+ return time.Time{}
+}
diff --git a/src/os/stat_unix.go b/src/os/stat_unix.go
index 8c17805..45101dd 100644
--- a/src/os/stat_unix.go
+++ b/src/os/stat_unix.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build aix || darwin || dragonfly || freebsd || (js && wasm) || linux || netbsd || openbsd || solaris
-// +build aix darwin dragonfly freebsd js,wasm linux netbsd openbsd solaris
+//go:build aix || darwin || dragonfly || freebsd || fuchsia || (js && wasm) || linux || netbsd || openbsd || solaris
+// +build aix darwin dragonfly freebsd fuchsia js,wasm linux netbsd openbsd solaris
package os
diff --git a/src/os/sys_unix.go b/src/os/sys_unix.go
index e316eaf..823e700 100644
--- a/src/os/sys_unix.go
+++ b/src/os/sys_unix.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris
-// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
+//go:build aix || darwin || dragonfly || freebsd || fuchsia || linux || netbsd || openbsd || solaris
+// +build aix darwin dragonfly freebsd fuchsia linux netbsd openbsd solaris
package os
diff --git a/src/os/timeout_test.go b/src/os/timeout_test.go
index 6d65e42..8b44f4a 100644
--- a/src/os/timeout_test.go
+++ b/src/os/timeout_test.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build !js && !plan9 && !windows
-// +build !js,!plan9,!windows
+//go:build !fuchsia && !js && !plan9 && !windows
+// +build !fuchsia,!js,!plan9,!windows
package os_test
diff --git a/src/os/user/lookup_fuchsia.go b/src/os/user/lookup_fuchsia.go
new file mode 100644
index 0000000..87ee40a
--- /dev/null
+++ b/src/os/user/lookup_fuchsia.go
@@ -0,0 +1,36 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package user
+
+import "errors"
+
+func init() {
+ userImplemented = false
+ groupImplemented = false
+}
+
+func current() (*User, error) {
+ return nil, errors.New("user: Current not implemented on fuchsia")
+}
+
+func lookupUser(string) (*User, error) {
+ return nil, errors.New("user: Lookup not implemented on fuchsia")
+}
+
+func lookupUserId(string) (*User, error) {
+ return nil, errors.New("user: LookupId not implemented on fuchsia")
+}
+
+func lookupGroup(string) (*Group, error) {
+ return nil, errors.New("user: LookupGroup not implemented on fuchsia")
+}
+
+func lookupGroupId(string) (*Group, error) {
+ return nil, errors.New("user: LookupGroupId not implemented on fuchsia")
+}
+
+func listGroups(*User) ([]string, error) {
+ return nil, errors.New("user: GroupIds not implemented on fuchsia")
+}
diff --git a/src/os/user/lookup_stubs.go b/src/os/user/lookup_stubs.go
index c975a11..1e2b9e7 100644
--- a/src/os/user/lookup_stubs.go
+++ b/src/os/user/lookup_stubs.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build (!cgo && !windows && !plan9) || android || (osusergo && !windows && !plan9)
-// +build !cgo,!windows,!plan9 android osusergo,!windows,!plan9
+//go:build (!cgo && !fuchsia && !windows && !plan9) || android || (osusergo && !fuchsia && !windows && !plan9)
+// +build !cgo,!fuchsia,!windows,!plan9 android osusergo,!fuchsia,!windows,!plan9
package user
diff --git a/src/path/filepath/path_unix.go b/src/path/filepath/path_unix.go
index d4b6f96..8ad9edd 100644
--- a/src/path/filepath/path_unix.go
+++ b/src/path/filepath/path_unix.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build aix || darwin || dragonfly || freebsd || (js && wasm) || linux || netbsd || openbsd || solaris
-// +build aix darwin dragonfly freebsd js,wasm linux netbsd openbsd solaris
+//go:build aix || darwin || dragonfly || freebsd || fuchsia || (js && wasm) || linux || netbsd || openbsd || solaris
+// +build aix darwin dragonfly freebsd fuchsia js,wasm linux netbsd openbsd solaris
package filepath
diff --git a/src/runtime/asm_amd64.s b/src/runtime/asm_amd64.s
index 14f29e1..8e47075 100644
--- a/src/runtime/asm_amd64.s
+++ b/src/runtime/asm_amd64.s
@@ -173,6 +173,9 @@
// skip TLS setup on Darwin
JMP ok
#endif
+#ifdef GOOS_fuchsia
+ // TODO(dhobsd): Fuchsia needs thread handle.
+#endif
#ifdef GOOS_openbsd
// skip TLS setup on OpenBSD
JMP ok
@@ -991,6 +994,7 @@
CALL runtime·abort(SB)
RET
+#ifndef GOOS_fuchsia
// func cputicks() int64
TEXT runtime·cputicks(SB),NOSPLIT,$0-0
CMPB runtime·lfenceBeforeRdtsc(SB), $1
@@ -1005,6 +1009,7 @@
ADDQ DX, AX
MOVQ AX, ret+0(FP)
RET
+#endif
// func memhash(p unsafe.Pointer, h, s uintptr) uintptr
// hash function using AES hardware instructions
diff --git a/src/runtime/cgo/cgo.go b/src/runtime/cgo/cgo.go
index 4d2caf6..c09f6eb 100644
--- a/src/runtime/cgo/cgo.go
+++ b/src/runtime/cgo/cgo.go
@@ -15,6 +15,7 @@
#cgo darwin,arm64 LDFLAGS: -framework CoreFoundation
#cgo dragonfly LDFLAGS: -lpthread
#cgo freebsd LDFLAGS: -lpthread
+#cgo fuchsia LDFLAGS: -lpthread -lfdio
#cgo android LDFLAGS: -llog
#cgo !android,linux LDFLAGS: -lpthread
#cgo netbsd LDFLAGS: -lpthread
@@ -26,7 +27,9 @@
// Issue 35247.
#cgo darwin CFLAGS: -Wno-nullability-completeness
-#cgo CFLAGS: -Wall -Werror
+// TODO(fxbug.dev/27052): Remove darwin CFLAGS hack when we figure out the cause of these failures on Mac
+#cgo !darwin CFLAGS: -Wall -Werror
+#cgo darwin CFLAGS: -Wall -Wno-unused-command-line-argument -Werror
#cgo solaris CPPFLAGS: -D_POSIX_PTHREAD_SEMANTICS
diff --git a/src/runtime/cgo/fuchsia.go b/src/runtime/cgo/fuchsia.go
new file mode 100644
index 0000000..b6e8f0f
--- /dev/null
+++ b/src/runtime/cgo/fuchsia.go
@@ -0,0 +1,33 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build fuchsia
+
+package cgo
+
+import _ "unsafe" // for go:linkname
+
+//go:cgo_import_static x_cgo_get_initial_handles
+//go:linkname x_cgo_get_initial_handles x_cgo_get_initial_handles
+//go:linkname _cgo_get_initial_handles runtime._cgo_get_initial_handles
+var x_cgo_get_initial_handles byte
+var _cgo_get_initial_handles = &x_cgo_get_initial_handles
+
+//go:cgo_import_static x_cgo_get_thread_self_handle
+//go:linkname x_cgo_get_thread_self_handle x_cgo_get_thread_self_handle
+//go:linkname _cgo_get_thread_self_handle runtime._cgo_get_thread_self_handle
+var x_cgo_get_thread_self_handle byte
+var _cgo_get_thread_self_handle = &x_cgo_get_thread_self_handle
+
+//go:cgo_import_static x_cgo_timespec_get
+//go:linkname x_cgo_timespec_get x_cgo_timespec_get
+//go:linkname _cgo_timespec_get runtime._cgo_timespec_get
+var x_cgo_timespec_get byte
+var _cgo_timespec_get = &x_cgo_timespec_get
+
+//go:cgo_import_static x_cgo_write1
+//go:linkname x_cgo_write1 x_cgo_write1
+//go:linkname _cgo_write1 runtime._cgo_write1
+var x_cgo_write1 byte
+var _cgo_write1 = &x_cgo_write1
diff --git a/src/runtime/cgo/gcc_context.c b/src/runtime/cgo/gcc_context.c
index 5fc0abb..e9797bd 100644
--- a/src/runtime/cgo/gcc_context.c
+++ b/src/runtime/cgo/gcc_context.c
@@ -3,7 +3,7 @@
// license that can be found in the LICENSE file.
// +build cgo
-// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris windows
+// +build aix darwin dragonfly freebsd fuchsia linux netbsd openbsd solaris windows
#include "libcgo.h"
diff --git a/src/runtime/cgo/gcc_fatalf.c b/src/runtime/cgo/gcc_fatalf.c
index 597e750..fa75fe8 100644
--- a/src/runtime/cgo/gcc_fatalf.c
+++ b/src/runtime/cgo/gcc_fatalf.c
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build aix !android,linux freebsd
+// +build aix !android,linux freebsd fuchsia
#include <stdarg.h>
#include <stdio.h>
diff --git a/src/runtime/cgo/gcc_fuchsia.c b/src/runtime/cgo/gcc_fuchsia.c
new file mode 100644
index 0000000..af729f6
--- /dev/null
+++ b/src/runtime/cgo/gcc_fuchsia.c
@@ -0,0 +1,100 @@
+// Copyright 2011 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build cgo
+
+#include <lib/fdio/fd.h>
+#include <lib/fdio/namespace.h>
+#include <pthread.h>
+#include <stdlib.h>
+#include <time.h>
+#include <unistd.h>
+#include <zircon/process.h>
+#include <zircon/processargs.h>
+#include <zircon/threads.h>
+#include <zircon/types.h>
+
+#include "libcgo.h"
+
+extern char** environ;
+
+// fdio_init matches a Go struct of the same name in os_fuchsia.go.
+struct fdio_init {
+ zx_handle_t stdioClones[3];
+ uint32_t stdioCloneNumHandles[3];
+ uint32_t stdioCloneTypes[3];
+ zx_handle_t processSelf;
+ zx_handle_t vmarRootSelf;
+ int32_t envlen;
+ char** environ;
+ uint8_t padding[4];
+ int32_t rootNSNumHandles;
+ zx_handle_t* rootNSHandles;
+ char** rootNSPaths;
+};
+
+void x_cgo_get_initial_handles(struct fdio_init* handles) {
+ // When running with cgo support, there are two FDIO libraries in the
+ // same process. We let the C FDIO start first, then clone its namespace
+ // and use that for Go.
+ // TODO: there is some small amount of fdio library state we
+ // have to share between Go and C, in particular, cwd.
+ // Work out how.
+
+ // fdio may have initialized std{in,out,err} with a single fd if the FDIO_FLAG_USE_FOR_STDIO
+ // flag was set, or have separate in/out/err fds. We clone fds {0,1,2} to separate fds for use
+ // in the Go runtime. The cloned fds aren't installed into fdio's fd table so they are only
+ // usable from Go's table.
+ for (int i = 0; i < 3; ++i) {
+ zx_status_t status = fdio_fd_clone(i, &handles->stdioClones[i]);
+ if (status != ZX_OK) {
+ printf("runtime/cgo: fdio_fd_clone of stdio[%d] failed: %d\n", i, status);
+ handles->stdioCloneNumHandles[i] = 0;
+ } else {
+ handles->stdioCloneNumHandles[i] = 1;
+ handles->stdioCloneTypes[i] = PA_FD;
+ }
+ }
+
+ handles->processSelf = zx_process_self();
+ handles->vmarRootSelf = zx_vmar_root_self();
+
+ for (char** env = environ; *env; env++) {
+ handles->envlen++;
+ }
+ handles->environ = environ;
+
+ fdio_flat_namespace_t* root_ns = NULL;
+ zx_status_t status = fdio_ns_export_root(&root_ns);
+ if (status != ZX_OK) {
+ handles->rootNSNumHandles = 0;
+ handles->rootNSHandles = NULL;
+ handles->rootNSPaths = NULL;
+ } else {
+ handles->rootNSNumHandles = (int32_t)root_ns->count;
+ handles->rootNSHandles = root_ns->handle;
+ handles->rootNSPaths = (char**)root_ns->path;
+ }
+}
+
+void x_cgo_get_thread_self_handle(zx_handle_t* h) {
+ // N.B.: libc currently (and probably always will) share the same type for
+ // C11 threads and pthreads.
+ *h = thrd_get_zx_handle(pthread_self());
+}
+
+int x_cgo_timespec_get(struct timespec* ts) {
+ if (timespec_get(ts, TIME_UTC) != TIME_UTC) {
+ return 1;
+ }
+ return 0;
+}
+
+struct writeargs {
+ uint32_t fd;
+ const void* buf;
+ uint32_t count;
+};
+
+int x_cgo_write1(struct writeargs* args) { return write(args->fd, args->buf, args->count); }
diff --git a/src/runtime/cgo/gcc_fuchsia_amd64.c b/src/runtime/cgo/gcc_fuchsia_amd64.c
new file mode 100644
index 0000000..91fa03c
--- /dev/null
+++ b/src/runtime/cgo/gcc_fuchsia_amd64.c
@@ -0,0 +1,52 @@
+// Copyright 2010 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.
+
+#include <pthread.h>
+#include <errno.h>
+#include <string.h> // strerror
+#include <signal.h>
+#include <stdlib.h>
+#include "libcgo.h"
+
+static void* threadentry(void*);
+static void (*setg_gcc)(void*);
+
+void
+x_cgo_init(G* g, void (*setg)(void*))
+{
+ setg_gcc = setg;
+}
+
+void
+_cgo_sys_thread_start(ThreadStart *ts)
+{
+ // TODO: switch to threads.h.
+ pthread_attr_t attr;
+ pthread_t p;
+ size_t size;
+ int err;
+
+ pthread_attr_init(&attr);
+ pthread_attr_getstacksize(&attr, &size);
+ // leave stacklo=0 and set stackhi=size; mstack will do the rest.
+ ts->g->stackhi = size;
+ err = pthread_create(&p, &attr, threadentry, ts);
+
+ if (err != 0) {
+ fatalf("pthread_create failed: %s", strerror(err));
+ }
+}
+
+static void*
+threadentry(void *v)
+{
+ ThreadStart ts;
+
+ ts = *(ThreadStart*)v;
+ free(v);
+ setg_gcc((void*)ts.g);
+
+ crosscall_amd64(ts.fn, setg_gcc, (void*)ts.g);
+ return 0;
+}
diff --git a/src/runtime/cgo/gcc_fuchsia_arm64.c b/src/runtime/cgo/gcc_fuchsia_arm64.c
new file mode 100644
index 0000000..e79d192
--- /dev/null
+++ b/src/runtime/cgo/gcc_fuchsia_arm64.c
@@ -0,0 +1,53 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+#include <pthread.h>
+#include <errno.h>
+#include <string.h> // strerror
+#include <signal.h>
+#include <stdlib.h>
+#include "libcgo.h"
+
+#include <stdio.h>
+
+static void* threadentry(void*);
+static void (*setg_gcc)(void*);
+
+void
+x_cgo_init(G* g, void (*setg)(void*))
+{
+ setg_gcc = setg;
+}
+
+void
+_cgo_sys_thread_start(ThreadStart *ts)
+{
+ pthread_attr_t attr;
+ pthread_t p;
+ size_t size;
+ int err;
+
+ pthread_attr_init(&attr);
+ pthread_attr_getstacksize(&attr, &size);
+ // leave stacklo=0 and set stackhi=size; mstack will do the rest.
+ ts->g->stackhi = size;
+ err = pthread_create(&p, &attr, threadentry, ts);
+
+ if (err != 0) {
+ fatalf("pthread_create failed: %s", strerror(err));
+ }
+}
+
+extern void crosscall1(void (*fn)(void), void (*setg_gcc)(void*), void *g);
+static void*
+threadentry(void *v)
+{
+ ThreadStart ts;
+
+ ts = *(ThreadStart*)v;
+ free(v);
+
+ crosscall1(ts.fn, setg_gcc, (void*)ts.g);
+ return 0;
+}
diff --git a/src/runtime/cgo/gcc_libinit.c b/src/runtime/cgo/gcc_libinit.c
index 3304d95..ad9e040 100644
--- a/src/runtime/cgo/gcc_libinit.c
+++ b/src/runtime/cgo/gcc_libinit.c
@@ -3,7 +3,7 @@
// license that can be found in the LICENSE file.
// +build cgo
-// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
+// +build aix darwin dragonfly freebsd fuchsia linux netbsd openbsd solaris
#include <pthread.h>
#include <errno.h>
diff --git a/src/runtime/cgo/gcc_setenv.c b/src/runtime/cgo/gcc_setenv.c
index d4f7983..81e2080 100644
--- a/src/runtime/cgo/gcc_setenv.c
+++ b/src/runtime/cgo/gcc_setenv.c
@@ -3,7 +3,7 @@
// license that can be found in the LICENSE file.
// +build cgo
-// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
+// +build aix darwin dragonfly freebsd fuchsia linux netbsd openbsd solaris
#include "libcgo.h"
diff --git a/src/runtime/cgo/setenv.go b/src/runtime/cgo/setenv.go
index e6e8040..19eb265 100644
--- a/src/runtime/cgo/setenv.go
+++ b/src/runtime/cgo/setenv.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris
-// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
+//go:build aix || darwin || dragonfly || freebsd || fuchsia || linux || netbsd || openbsd || solaris
+// +build aix darwin dragonfly freebsd fuchsia linux netbsd openbsd solaris
package cgo
diff --git a/src/runtime/cputicks.go b/src/runtime/cputicks.go
index 7c926f4..df34635 100644
--- a/src/runtime/cputicks.go
+++ b/src/runtime/cputicks.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build !arm && !arm64 && !mips64 && !mips64le && !mips && !mipsle && !wasm
-// +build !arm,!arm64,!mips64,!mips64le,!mips,!mipsle,!wasm
+//go:build !arm && !arm64 && !mips64 && !mips64le && !mips && !mipsle && !wasm && !fuchsia
+// +build !arm,!arm64,!mips64,!mips64le,!mips,!mipsle,!wasm,!fuchsia
package runtime
diff --git a/src/runtime/defs_fuchsia_amd64.go b/src/runtime/defs_fuchsia_amd64.go
new file mode 100644
index 0000000..7c5b9ac
--- /dev/null
+++ b/src/runtime/defs_fuchsia_amd64.go
@@ -0,0 +1,32 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package runtime
+
+type generalRegs struct {
+ rax uint64
+ rbx uint64
+ rcx uint64
+ rdx uint64
+ rsi uint64
+ rdi uint64
+ rbp uint64
+ rsp uint64
+ r8 uint64
+ r9 uint64
+ r10 uint64
+ r11 uint64
+ r12 uint64
+ r13 uint64
+ r14 uint64
+ r15 uint64
+ rip uint64
+ rflags uint64
+ fs_base uint64
+ gs_base uint64
+}
+
+func (r *generalRegs) rPC() uintptr { return uintptr(r.rip) }
+func (r *generalRegs) rSP() uintptr { return uintptr(r.rsp) }
+func (r *generalRegs) rLR() uintptr { return 0 }
diff --git a/src/runtime/defs_fuchsia_arm64.go b/src/runtime/defs_fuchsia_arm64.go
new file mode 100644
index 0000000..0daffac
--- /dev/null
+++ b/src/runtime/defs_fuchsia_arm64.go
@@ -0,0 +1,18 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package runtime
+
+type generalRegs struct {
+ r [30]uint64
+ lr uint64
+ sp uint64
+ pc uint64
+ cpsr uint64
+ tpidr uint64
+}
+
+func (r *generalRegs) rPC() uintptr { return uintptr(r.pc) }
+func (r *generalRegs) rSP() uintptr { return uintptr(r.sp) }
+func (r *generalRegs) rLR() uintptr { return uintptr(r.lr) }
diff --git a/src/runtime/env_posix.go b/src/runtime/env_posix.go
index 95517b2..be475bf 100644
--- a/src/runtime/env_posix.go
+++ b/src/runtime/env_posix.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build aix || darwin || dragonfly || freebsd || (js && wasm) || linux || netbsd || openbsd || solaris || windows || plan9
-// +build aix darwin dragonfly freebsd js,wasm linux netbsd openbsd solaris windows plan9
+//go:build aix || darwin || dragonfly || freebsd || fuchsia || (js && wasm) || linux || netbsd || openbsd || solaris || windows || plan9
+// +build aix darwin dragonfly freebsd fuchsia js,wasm linux netbsd openbsd solaris windows plan9
package runtime
diff --git a/src/runtime/gc_test.go b/src/runtime/gc_test.go
index 5e7c6c5..661c8d6 100644
--- a/src/runtime/gc_test.go
+++ b/src/runtime/gc_test.go
@@ -21,6 +21,8 @@
)
func TestGcSys(t *testing.T) {
+ t.Skip("flaky test; https://github.com/golang/go/issues/37331")
+
if os.Getenv("GOGC") == "off" {
t.Skip("skipping test; GOGC=off in environment")
}
diff --git a/src/runtime/internal/sys/zgoos_aix.go b/src/runtime/internal/sys/zgoos_aix.go
index f3b9074..ac19b63 100644
--- a/src/runtime/internal/sys/zgoos_aix.go
+++ b/src/runtime/internal/sys/zgoos_aix.go
@@ -12,6 +12,7 @@
const GoosDarwin = 0
const GoosDragonfly = 0
const GoosFreebsd = 0
+const GoosFuchsia = 0
const GoosHurd = 0
const GoosIllumos = 0
const GoosIos = 0
diff --git a/src/runtime/internal/sys/zgoos_android.go b/src/runtime/internal/sys/zgoos_android.go
index e28baf7..5ed0f7b 100644
--- a/src/runtime/internal/sys/zgoos_android.go
+++ b/src/runtime/internal/sys/zgoos_android.go
@@ -12,6 +12,7 @@
const GoosDarwin = 0
const GoosDragonfly = 0
const GoosFreebsd = 0
+const GoosFuchsia = 0
const GoosHurd = 0
const GoosIllumos = 0
const GoosIos = 0
diff --git a/src/runtime/internal/sys/zgoos_darwin.go b/src/runtime/internal/sys/zgoos_darwin.go
index 3c7f7b5..a939410 100644
--- a/src/runtime/internal/sys/zgoos_darwin.go
+++ b/src/runtime/internal/sys/zgoos_darwin.go
@@ -12,6 +12,7 @@
const GoosDarwin = 1
const GoosDragonfly = 0
const GoosFreebsd = 0
+const GoosFuchsia = 0
const GoosHurd = 0
const GoosIllumos = 0
const GoosIos = 0
diff --git a/src/runtime/internal/sys/zgoos_dragonfly.go b/src/runtime/internal/sys/zgoos_dragonfly.go
index f844d29..18b211c 100644
--- a/src/runtime/internal/sys/zgoos_dragonfly.go
+++ b/src/runtime/internal/sys/zgoos_dragonfly.go
@@ -12,6 +12,7 @@
const GoosDarwin = 0
const GoosDragonfly = 1
const GoosFreebsd = 0
+const GoosFuchsia = 0
const GoosHurd = 0
const GoosIllumos = 0
const GoosIos = 0
diff --git a/src/runtime/internal/sys/zgoos_freebsd.go b/src/runtime/internal/sys/zgoos_freebsd.go
index 8999a27..d3eed2b 100644
--- a/src/runtime/internal/sys/zgoos_freebsd.go
+++ b/src/runtime/internal/sys/zgoos_freebsd.go
@@ -12,6 +12,7 @@
const GoosDarwin = 0
const GoosDragonfly = 0
const GoosFreebsd = 1
+const GoosFuchsia = 0
const GoosHurd = 0
const GoosIllumos = 0
const GoosIos = 0
diff --git a/src/runtime/internal/sys/zgoos_fuchsia.go b/src/runtime/internal/sys/zgoos_fuchsia.go
new file mode 100644
index 0000000..8582e2d
--- /dev/null
+++ b/src/runtime/internal/sys/zgoos_fuchsia.go
@@ -0,0 +1,24 @@
+// Code generated by gengoos.go using 'go generate'. DO NOT EDIT.
+
+package sys
+
+const GOOS = `fuchsia`
+
+const GoosAix = 0
+const GoosAndroid = 0
+const GoosDarwin = 0
+const GoosDragonfly = 0
+const GoosFreebsd = 0
+const GoosFuchsia = 1
+const GoosHurd = 0
+const GoosIllumos = 0
+const GoosIos = 0
+const GoosJs = 0
+const GoosLinux = 0
+const GoosNacl = 0
+const GoosNetbsd = 0
+const GoosOpenbsd = 0
+const GoosPlan9 = 0
+const GoosSolaris = 0
+const GoosWindows = 0
+const GoosZos = 0
diff --git a/src/runtime/internal/sys/zgoos_hurd.go b/src/runtime/internal/sys/zgoos_hurd.go
index a546488..19a23a4 100644
--- a/src/runtime/internal/sys/zgoos_hurd.go
+++ b/src/runtime/internal/sys/zgoos_hurd.go
@@ -12,6 +12,7 @@
const GoosDarwin = 0
const GoosDragonfly = 0
const GoosFreebsd = 0
+const GoosFuchsia = 0
const GoosHurd = 1
const GoosIllumos = 0
const GoosIos = 0
diff --git a/src/runtime/internal/sys/zgoos_illumos.go b/src/runtime/internal/sys/zgoos_illumos.go
index 02a4ca0..e25df0d 100644
--- a/src/runtime/internal/sys/zgoos_illumos.go
+++ b/src/runtime/internal/sys/zgoos_illumos.go
@@ -12,6 +12,7 @@
const GoosDarwin = 0
const GoosDragonfly = 0
const GoosFreebsd = 0
+const GoosFuchsia = 0
const GoosHurd = 0
const GoosIllumos = 1
const GoosIos = 0
diff --git a/src/runtime/internal/sys/zgoos_js.go b/src/runtime/internal/sys/zgoos_js.go
index 28226ad..dd6f5d7 100644
--- a/src/runtime/internal/sys/zgoos_js.go
+++ b/src/runtime/internal/sys/zgoos_js.go
@@ -12,6 +12,7 @@
const GoosDarwin = 0
const GoosDragonfly = 0
const GoosFreebsd = 0
+const GoosFuchsia = 0
const GoosHurd = 0
const GoosIllumos = 0
const GoosIos = 0
diff --git a/src/runtime/internal/sys/zgoos_linux.go b/src/runtime/internal/sys/zgoos_linux.go
index 01546e4..e13a70c 100644
--- a/src/runtime/internal/sys/zgoos_linux.go
+++ b/src/runtime/internal/sys/zgoos_linux.go
@@ -12,6 +12,7 @@
const GoosDarwin = 0
const GoosDragonfly = 0
const GoosFreebsd = 0
+const GoosFuchsia = 0
const GoosHurd = 0
const GoosIllumos = 0
const GoosIos = 0
diff --git a/src/runtime/internal/sys/zgoos_netbsd.go b/src/runtime/internal/sys/zgoos_netbsd.go
index 9d658b2..215b5b0 100644
--- a/src/runtime/internal/sys/zgoos_netbsd.go
+++ b/src/runtime/internal/sys/zgoos_netbsd.go
@@ -12,6 +12,7 @@
const GoosDarwin = 0
const GoosDragonfly = 0
const GoosFreebsd = 0
+const GoosFuchsia = 0
const GoosHurd = 0
const GoosIllumos = 0
const GoosIos = 0
diff --git a/src/runtime/internal/sys/zgoos_openbsd.go b/src/runtime/internal/sys/zgoos_openbsd.go
index 0f55454..27d3cd2 100644
--- a/src/runtime/internal/sys/zgoos_openbsd.go
+++ b/src/runtime/internal/sys/zgoos_openbsd.go
@@ -12,6 +12,7 @@
const GoosDarwin = 0
const GoosDragonfly = 0
const GoosFreebsd = 0
+const GoosFuchsia = 0
const GoosHurd = 0
const GoosIllumos = 0
const GoosIos = 0
diff --git a/src/runtime/internal/sys/zgoos_plan9.go b/src/runtime/internal/sys/zgoos_plan9.go
index d034746..8e2c9fc 100644
--- a/src/runtime/internal/sys/zgoos_plan9.go
+++ b/src/runtime/internal/sys/zgoos_plan9.go
@@ -12,6 +12,7 @@
const GoosDarwin = 0
const GoosDragonfly = 0
const GoosFreebsd = 0
+const GoosFuchsia = 0
const GoosHurd = 0
const GoosIllumos = 0
const GoosIos = 0
diff --git a/src/runtime/internal/sys/zgoos_solaris.go b/src/runtime/internal/sys/zgoos_solaris.go
index 05c3007..9baa0fa 100644
--- a/src/runtime/internal/sys/zgoos_solaris.go
+++ b/src/runtime/internal/sys/zgoos_solaris.go
@@ -12,6 +12,7 @@
const GoosDarwin = 0
const GoosDragonfly = 0
const GoosFreebsd = 0
+const GoosFuchsia = 0
const GoosHurd = 0
const GoosIllumos = 0
const GoosIos = 0
diff --git a/src/runtime/internal/sys/zgoos_windows.go b/src/runtime/internal/sys/zgoos_windows.go
index 7d07fa3..9ac2102 100644
--- a/src/runtime/internal/sys/zgoos_windows.go
+++ b/src/runtime/internal/sys/zgoos_windows.go
@@ -12,6 +12,7 @@
const GoosDarwin = 0
const GoosDragonfly = 0
const GoosFreebsd = 0
+const GoosFuchsia = 0
const GoosHurd = 0
const GoosIllumos = 0
const GoosIos = 0
diff --git a/src/runtime/internal/sys/zgoos_zos.go b/src/runtime/internal/sys/zgoos_zos.go
index d6e5b9b..fc33a31 100644
--- a/src/runtime/internal/sys/zgoos_zos.go
+++ b/src/runtime/internal/sys/zgoos_zos.go
@@ -12,6 +12,7 @@
const GoosDarwin = 0
const GoosDragonfly = 0
const GoosFreebsd = 0
+const GoosFuchsia = 0
const GoosHurd = 0
const GoosIllumos = 0
const GoosIos = 0
diff --git a/src/runtime/lock_futex.go b/src/runtime/lock_futex.go
index e4c8d01..6c9ed09 100644
--- a/src/runtime/lock_futex.go
+++ b/src/runtime/lock_futex.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build dragonfly || freebsd || linux
-// +build dragonfly freebsd linux
+//go:build dragonfly || freebsd || fuchsia || linux
+// +build dragonfly freebsd fuchsia linux
package runtime
diff --git a/src/runtime/mem_fuchsia.go b/src/runtime/mem_fuchsia.go
new file mode 100644
index 0000000..b0c55c2
--- /dev/null
+++ b/src/runtime/mem_fuchsia.go
@@ -0,0 +1,131 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package runtime
+
+import (
+ "unsafe"
+)
+
+const (
+ permRead = 1 << 0
+ permWrite = 1 << 1
+
+ propName = 3
+
+ // The VMO opcode to decommit pages (ZX_VMO_OP_DECOMMIT).
+ vmoOpDecommit = 2
+
+ // The name assigned to VMOs.
+ vmoNameProp = "go-runtime-heap-vmo"
+)
+
+//go:linkname sys_vmar_unmap syscall/zx.Sys_vmar_unmap
+func sys_vmar_unmap(h uint32, addr unsafe.Pointer, l uint64) int32
+
+//go:linkname sys_vmo_create syscall/zx.Sys_vmo_create
+//go:noescape
+func sys_vmo_create(size uint64, options uint32, out *uint32) int32
+
+//go:linkname sys_object_set_property syscall/zx.Sys_object_set_property
+//go:noescape
+func sys_object_set_property(handle uint32, property uint32, value unsafe.Pointer, value_size uint) int32
+
+//go:linkname sys_vmar_map syscall/zx.Sys_vmar_map
+//go:noescape
+func sys_vmar_map(handle uint32, options uint32, vmar_offset uint64, vmo uint32, vmo_offset uint64, len uint64, mapped_addr *unsafe.Pointer) int32
+
+//go:linkname sys_vmar_op_range syscall/zx.Sys_vmar_op_range
+//go:noescape
+func sys_vmar_op_range(handle uint32, op uint32, addr uint64, size uint64, buffer unsafe.Pointer, buffer_size uint64) int32
+
+//go:linkname sys_handle_close syscall/zx.Sys_handle_close
+//go:noescape
+func sys_handle_close(handle uint32) int32
+
+//go:linkname sys_vmar_protect syscall/zx.Sys_vmar_protect
+func sys_vmar_protect(handle uint32, options uint32, addr unsafe.Pointer, len uint64) int32
+
+//go:nosplit
+func sysAlloc(n uintptr, sysStat *sysMemStat) unsafe.Pointer {
+ var p unsafe.Pointer
+ sysMmap(unsafe.Pointer(&p), n, permRead|permWrite)
+ if uintptr(p) < 4096 {
+ println("runtime: sysMmap failed n=", n)
+ exit(2)
+ }
+ sysStat.add(int64(n))
+ return p
+}
+
+func sysUnused(v unsafe.Pointer, n uintptr) {
+ if status := sys_vmar_op_range(fdioHandles.vmarRootSelf, vmoOpDecommit, uint64(uintptr(v)), uint64(n), nil, 0); status != 0 {
+ println("runtime: sys_vmar_op_range failed: ", status)
+ exit(2)
+ }
+}
+
+func sysUsed(v unsafe.Pointer, n uintptr) {
+ // TODO(dho): Maybe implement this based on ZX_VMO_OP_COMMIT
+ //
+ // Note, pages are committed (allocated) for VMOs on demand, as per
+ // https://fuchsia.dev/fuchsia-src/reference/kernel_objects/vm_object#description.
+ // Also, note that sys_vmar_op_range does not yet support ZX_VMO_OP_COMMIT, as
+ // per https://fuchsia.dev/fuchsia-src/reference/syscalls/vmar_op_range.
+}
+
+func sysHugePage(v unsafe.Pointer, n uintptr) {
+}
+
+//go:nosplit
+func sysFree(v unsafe.Pointer, n uintptr, sysStat *sysMemStat) {
+ sysStat.add(-int64(n))
+ if status := sys_vmar_unmap(fdioHandles.vmarRootSelf, v, uint64(n)); status != 0 {
+ println("runtime: sys_vmar_unmap failed: ", status)
+ exit(2)
+ }
+}
+
+func sysMmap(ptr unsafe.Pointer, sz uintptr, flags uint32) {
+ var h uint32
+ if status := sys_vmo_create(uint64(sz), 0, &h); status != 0 {
+ println("runtime: sys_vmo_create failed: ", status)
+ exit(2)
+ }
+
+ prop := []byte(vmoNameProp)
+ if status := sys_object_set_property(h, propName, unsafe.Pointer(&prop[0]), uint(len(prop))); status != 0 {
+ println("runtime: sys_object_set_property failed: ", status)
+ exit(2)
+ }
+
+ if status := sys_vmar_map(fdioHandles.vmarRootSelf, flags, 0, h, 0, uint64(sz), (*unsafe.Pointer)(ptr)); status != 0 {
+ println("runtime: sys_vmar_map failed: ", status)
+ exit(2)
+ }
+
+ if status := sys_handle_close(h); status != 0 {
+ println("runtime: sys_handle_close failed: ", status)
+ exit(2)
+ }
+}
+
+func sysReserve(v unsafe.Pointer, n uintptr) unsafe.Pointer {
+ p := v
+ sysMmap(unsafe.Pointer(&p), n, 0)
+ return p
+}
+
+func sysFault(v unsafe.Pointer, n uintptr) {
+ println("TODO sysFault")
+}
+
+func sysMap(v unsafe.Pointer, n uintptr, sysStat *sysMemStat) {
+ sysStat.add(int64(n))
+
+ if status := sys_vmar_protect(fdioHandles.vmarRootSelf, permRead|permWrite, v, uint64(n)); status != 0 {
+ println("runtime: sys_vmar_protect failed: ", status)
+ exit(2)
+ }
+}
diff --git a/src/runtime/netpoll_stub.go b/src/runtime/netpoll_stub.go
index 33ab8eb..deeb9ff 100644
--- a/src/runtime/netpoll_stub.go
+++ b/src/runtime/netpoll_stub.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build plan9
-// +build plan9
+//go:build fuchsia || plan9
+// +build fuchsia plan9
package runtime
diff --git a/src/runtime/os_fuchsia.go b/src/runtime/os_fuchsia.go
new file mode 100644
index 0000000..9ac2de4
--- /dev/null
+++ b/src/runtime/os_fuchsia.go
@@ -0,0 +1,707 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package runtime
+
+import (
+ "runtime/internal/atomic"
+ "unsafe"
+)
+
+const nsecInf = int64(0x7FFFFFFFFFFFFFFF)
+
+func osyield()
+
+//go:nosplit
+func osyield_no_g() {
+ osyield()
+}
+
+//go:linkname cputicks syscall/zx.Sys_ticks_get
+func cputicks() int64
+
+//go:linkname sys_cprng_draw syscall/zx.Sys_cprng_draw
+//go:noescape
+func sys_cprng_draw(buffer unsafe.Pointer, size uint)
+
+//go:linkname sys_system_get_num_cpus syscall/zx.Sys_system_get_num_cpus
+func sys_system_get_num_cpus() uint32
+
+//go:linkname sys_deadline_after syscall/zx.Sys_deadline_after
+func sys_deadline_after(ns int64) int64
+
+//go:linkname sys_futex_wait syscall/zx.Sys_futex_wait
+//go:noescape
+func sys_futex_wait(v *int32, cv int32, newOwner uint32, deadline int64) int32
+
+//go:linkname sys_futex_wake syscall/zx.Sys_futex_wake
+//go:noescape
+func sys_futex_wake(v *int32, count uint32) int32
+
+//go:linkname sys_thread_create syscall/zx.Sys_thread_create
+//go:noescape
+func sys_thread_create(p uint32, name *byte, nlen uint, opts int, out *uint32) int32
+
+//go:linkname sys_thread_start syscall/zx.Sys_thread_start
+//go:noescape
+func sys_thread_start(h uint32, pc unsafe.Pointer, stk unsafe.Pointer, mp uintptr, arg2 uintptr) int32
+
+//go:linkname sys_clock_get_monotonic syscall/zx.Sys_clock_get_monotonic
+func sys_clock_get_monotonic() int64
+
+//go:linkname sys_nanosleep syscall/zx.Sys_nanosleep
+func sys_nanosleep(deadline int64) int32
+
+//go:linkname sys_process_exit syscall/zx.Sys_process_exit
+func sys_process_exit(retcode int64)
+
+//go:linkname zx_set_stdio_handle syscall/zx.set_stdio_handle
+func zx_set_stdio_handle(n int, h uint32, t uint32)
+
+//go:linkname zx_set_proc_handle syscall/zx.set_proc_handle
+func zx_set_proc_handle(h uint32)
+
+//go:linkname zx_get_proc_handle syscall/zx.get_proc_handle
+func zx_get_proc_handle() uint32
+
+//go:linkname zx_set_vmar_root syscall/zx.set_vmar_root
+func zx_set_vmar_root(h uint32)
+
+//go:linkname zx_set_namespace syscall/zx.set_namespace
+func zx_set_namespace(m map[string]uint32)
+
+type mOS struct {
+ thread uintptr
+}
+
+type sigset struct{}
+
+//go:nosplit
+func getRandomData(r []byte) {
+ if len(r) == 0 {
+ return
+ }
+ sys_cprng_draw(unsafe.Pointer(&r[0]), uint(len(r)))
+}
+
+//go:nosplit
+func futexsleep(addr *uint32, val uint32, ns int64) {
+ deadline := sys_deadline_after(ns)
+ if ns < 0 {
+ deadline = nsecInf
+ }
+ sys_futex_wait((*int32)(unsafe.Pointer(addr)), int32(val), 0, deadline)
+}
+
+//go:nosplit
+func futexwakeup(addr *uint32, cnt uint32) {
+ sys_futex_wake((*int32)(unsafe.Pointer(addr)), cnt)
+}
+
+// cgocallm0 calls a C function on the current stack.
+//
+// It is intended for use inside functions like osinit that run
+// before mstart directly on an OS thread stack.
+//
+// If in doubt, do not use.
+func cgocallm0(fn, arg unsafe.Pointer)
+
+// exceptionInfo is defined in zircon/syscalls/exception.h.
+type exceptionInfo struct {
+ pid uint64
+ tid uint64
+ exceptionType uint32
+ padding [4]uint8
+}
+
+// watchexceptions is called when pprof CPU tracing is enabled. It runs without
+// a p, hence nowritebarrierrec.
+//
+//go:nosplit
+//go:nowritebarrierrec
+func watchexceptions() {
+ procHandle := zx_get_proc_handle()
+ var exceptionChannel uint32
+ if status := vdsoCall_zx_task_create_exception_channel(procHandle, 0, unsafe.Pointer(&exceptionChannel)); status != ZX_OK {
+ println("failed to create exception channel", status)
+ exit(2)
+ }
+ for {
+
+ var observed uint32
+ if status := fake_m_object_wait_one(exceptionChannel, ZX_CHANNEL_READABLE, ZX_TIME_INFINITE, &observed); status != ZX_OK {
+ println("failed to wait on exception channel", status)
+ exit(2)
+ }
+
+ var info exceptionInfo
+ var exceptionHandle uint32
+ var actualBytes, actualHandles uint32
+ if status := vdsoCall_zx_channel_read(
+ exceptionChannel,
+ 0,
+ unsafe.Pointer(&info),
+ unsafe.Pointer(&exceptionHandle),
+ uint32(unsafe.Sizeof(info)),
+ 1,
+ unsafe.Pointer(&actualBytes),
+ unsafe.Pointer(&actualHandles),
+ ); status != ZX_OK {
+ println("failed to read from exception channel", status)
+ exit(2)
+ }
+
+ switch info.exceptionType {
+ // A fatal exception occurred, attempt to push a panic into the
+ // offending thread.
+ case ZX_EXCP_FATAL_PAGE_FAULT, ZX_EXCP_UNALIGNED_ACCESS, ZX_EXCP_UNDEFINED_INSTRUCTION:
+ var thread uint32
+ if status := vdsoCall_zx_exception_get_thread(exceptionHandle, unsafe.Pointer(&thread)); status != ZX_OK {
+ println("failed to get exception thread", status)
+ exit(2)
+ }
+
+ var ctx sigctxt
+ if status := vdsoCall_zx_thread_read_state(
+ thread,
+ ZX_THREAD_STATE_GENERAL_REGS,
+ unsafe.Pointer(&ctx.regs),
+ uint(unsafe.Sizeof(ctx.regs)),
+ ); status != ZX_OK {
+ println("failed to read thread state", status)
+ exit(2)
+ }
+
+ // Prepare a panic, we'll call sigpanic on the dead thread.
+ ctx.prepareExceptionPanic()
+ if status := vdsoCall_zx_thread_write_state(
+ thread,
+ ZX_THREAD_STATE_GENERAL_REGS,
+ unsafe.Pointer(&ctx.regs),
+ uint(unsafe.Sizeof(ctx.regs)),
+ ); status != ZX_OK {
+ println("failed to recover thread state on OS exception")
+ ctx.traceback()
+ exit(2)
+ }
+ handled := ZX_EXCEPTION_STATE_HANDLED
+ if status := vdsoCall_zx_object_set_property(
+ exceptionHandle,
+ ZX_PROP_EXCEPTION_STATE,
+ unsafe.Pointer(&handled),
+ uint(unsafe.Sizeof(handled)),
+ ); status != ZX_OK {
+ println("failed to mark OS exception as handled")
+ ctx.traceback()
+ exit(2)
+ }
+
+ // Close the thread handle, we don't need it anymore, and we don't really
+ // care if it succeeds.
+ _ = vdsoCall_zx_handle_close(thread)
+ if status := vdsoCall_zx_handle_close(exceptionHandle); status != ZX_OK {
+ println("failed to close exception handle")
+ ctx.traceback()
+ exit(2)
+ }
+ default:
+ // We're not handling this exception, just close the handle.
+ vdsoCall_zx_handle_close(exceptionHandle)
+ }
+ }
+}
+
+func osinit() {
+ if _cgo_get_initial_handles != nil {
+ cgocallm0(_cgo_get_initial_handles, unsafe.Pointer(&fdioHandles))
+ for i := 0; i < 3; i = i + 1 {
+ zx_set_stdio_handle(i, fdioHandles.stdioClones[i], fdioHandles.stdioCloneTypes[i])
+ }
+ zx_set_proc_handle(fdioHandles.processSelf)
+ zx_set_vmar_root(fdioHandles.vmarRootSelf)
+ } else {
+ println("runtime: fuchsia requires cgo")
+ exit(2)
+ }
+
+ ncpu = int32(sys_system_get_num_cpus())
+ physPageSize = 4096
+}
+
+func parseRootNS() {
+ if fdioHandles.rootNSNumHandles > 0 {
+ const maxHandleCount = 1 << 20 // arbitrary
+ paths := (*(*[maxHandleCount]*byte)(unsafe.Pointer(fdioHandles.rootNSPaths)))[:fdioHandles.rootNSNumHandles]
+ handles := (*(*[maxHandleCount]uint32)(unsafe.Pointer(fdioHandles.rootNSHandles)))[:fdioHandles.rootNSNumHandles]
+ m := make(map[string]uint32)
+ for i, p := range paths {
+ m[gostring(p)] = handles[i]
+ }
+
+ zx_set_namespace(m)
+ }
+}
+
+// Filled in by runtime/cgo when linked into binary.
+var (
+ _cgo_get_initial_handles unsafe.Pointer
+ _cgo_get_thread_self_handle unsafe.Pointer
+ _cgo_timespec_get unsafe.Pointer
+ _cgo_write1 unsafe.Pointer
+)
+
+//go:nosplit
+func minit() {
+ var h uint32
+ asmcgocall(_cgo_get_thread_self_handle, unsafe.Pointer(&h))
+ atomic.Storeuintptr(&getg().m.thread, uintptr(h))
+}
+
+//go:nosplit
+func unminit() {
+ // TODO
+}
+
+func mdestroy(mp *m) {
+ // TODO
+}
+
+var exceptionError = error(errorString("OS exception"))
+
+func (c *sigctxt) traceback() {
+ traceback(c.regs.rPC(), c.regs.rSP(), c.regs.rLR(), getg())
+}
+
+func sigpanic() {
+ g := getg()
+ if !canpanic(g) {
+ throw("encountered OS exception")
+ }
+ panicCheck2(exceptionError.Error())
+ panic(exceptionError)
+}
+
+func mpreinit(mp *m) {
+ // TODO
+}
+
+//go:nosplit
+func sigsave(p *sigset) {
+ // TODO
+}
+
+//go:nosplit
+func msigrestore(sigmask sigset) {
+ // TODO
+}
+
+func initsig(preinit bool) {
+ // We can't call newm if this is preinit.
+ if !preinit {
+ newm(watchexceptions, nil, -1)
+ }
+}
+
+//go:nosplit
+//go:nowritebarrierrec
+func libpreinit() {
+ initsig(true)
+}
+
+//go:nosplit
+func sigblock(exiting bool) {
+ // TODO
+}
+
+func sigenable(sig uint32) {
+ // TODO
+}
+
+func sigdisable(sig uint32) {
+ // TODO
+}
+
+func sigignore(sig uint32) {
+ // TODO
+}
+
+func crash() {
+ *(*int32)(nil) = 0
+}
+
+func threadinit(mp *m)
+
+var gothreadname = []byte("gothread")
+
+//go:nowritebarrier
+func newosproc(mp *m) {
+ stk := unsafe.Pointer(mp.g0.stack.hi)
+ p := uint32(0) // TODO: only works due to temporary hack in zircon
+ var h uint32
+ status := sys_thread_create(p, &gothreadname[0], uint(len(gothreadname)), 0, &h)
+ if status < 0 {
+ println("runtime: newosproc sys_thread_create failed:", h)
+ exit(2)
+ }
+
+ mp.thread = uintptr(h)
+
+ status = sys_thread_start(h, unsafe.Pointer(funcPC(threadinit)), stk, uintptr(unsafe.Pointer(mp)), 0)
+ if status < 0 {
+ println("runtime: newosproc sys_thread_start failed:", h)
+ exit(2)
+ }
+}
+
+//go:nosplit
+func newosproc0(stacksize uintptr, fn unsafe.Pointer) {
+ stack := sysAlloc(stacksize, &memstats.stacks_sys)
+ if stack == nil {
+ write(2, unsafe.Pointer(&failallocatestack[0]), int32(len(failallocatestack)))
+ exit(1)
+ }
+
+ p := uint32(0) // TODO: only works due to temporary hack in zircon
+ var h uint32
+ status := sys_thread_create(p, &gothreadname[0], uint(len(gothreadname)), 0, &h)
+ if status < 0 {
+ write(2, unsafe.Pointer(&failthreadcreate[0]), int32(len(failthreadcreate)))
+ exit(1)
+
+ }
+
+ status = sys_thread_start(h, fn, unsafe.Pointer(uintptr(stack)+stacksize), 0, 0)
+ if status < 0 {
+ write(2, unsafe.Pointer(&failthreadstart[0]), int32(len(failthreadstart)))
+ exit(1)
+ }
+}
+
+var failallocatestack = []byte("runtime: failed to allocate stack for the new OS thread\n")
+var failthreadcreate = []byte("runtime: failed to create new OS thread\n")
+var failthreadstart = []byte("runtime: failed to start new OS thread\n")
+
+type zx_proc_args struct {
+ protocol uint32
+ version uint32
+ handle_info_off uint32
+ args_off uint32
+ args_num uint32
+}
+
+type zx_proc_info struct {
+ magic uint32
+ version uint32
+ next_tls_slot uint32
+ proc_args *zx_proc_args
+ handle *uint32
+ handle_info *uint32
+ handle_count int32
+ argv **byte
+ argc int32
+}
+
+type zx_tls_root struct {
+ self *zx_tls_root
+ proc *zx_proc_info
+ magic uint32
+ flags uint16
+ maxslots uint16
+ slots [8]uintptr // has length maxslots
+}
+
+func resetcpuprofiler(hz int32) {
+ // TODO
+}
+
+// fdio_init matches a Go struct of the same name in gcc_fdio.c.
+type fdio_init struct {
+ stdioClones [3]uint32
+ stdioCloneNumHandles [3]uint32
+ stdioCloneTypes [3]uint32
+ processSelf uint32
+ vmarRootSelf uint32
+ envlen int32
+ environ **byte
+ _ [4]byte
+ rootNSNumHandles int32
+ rootNSHandles *uint32
+ rootNSPaths **byte
+}
+
+var fdioHandles fdio_init
+
+func goenvs() {
+ if _cgo_get_initial_handles != nil {
+ const maxEnvSize = 1 << 20 // arbitrary
+ envp := (*(*[maxEnvSize]*byte)(unsafe.Pointer(fdioHandles.environ)))[:fdioHandles.envlen]
+ envs = make([]string, len(envp))
+ for i, e := range envp {
+ envs[i] = gostring(e)
+ }
+ // TODO: find a better place to call this
+ parseRootNS()
+ } else {
+ // TODO: implement cgo-less init
+ println("runtime: no fuchsia process handle without cgo yet")
+ exit(2)
+ }
+}
+
+const _NSIG = 65 // TODO
+
+const (
+ ZX_CLOCK_MONOTONIC = 0
+ ZX_HANDLE_INVALID = 0
+ ZX_INFO_THREAD = uint32(10)
+ ZX_OK = int32(0)
+ ZX_THREAD_STATE_GENERAL_REGS = uint32(0)
+ ZX_THREAD_STATE_NEW = uint32(0)
+ ZX_THREAD_SUSPENDED = uint32(1 << 5)
+ ZX_THREAD_TERMINATED = uint32(1 << 3)
+ ZX_TIME_INFINITE = int64(^uint64(1 << 63))
+ ZX_TIMER_SIGNALED = uint32(1 << 3)
+ ZX_TIMER_SLACK_EARLY = 1
+ ZX_CHANNEL_READABLE = uint32(1 << 0)
+ ZX_EXCEPTION_STATE_HANDLED = uint32(1)
+ ZX_PROP_EXCEPTION_STATE = uint32(16)
+ // Exception types that are handled by the runtime. Defined in
+ // zircon/syscall/exception.h
+ ZX_EXCP_FATAL_PAGE_FAULT = uint32(0x108)
+ ZX_EXCP_UNDEFINED_INSTRUCTION = uint32(0x208)
+ ZX_EXCP_UNALIGNED_ACCESS = uint32(0x508)
+)
+
+//go:nosplit
+func nanotime1() int64 {
+ return sys_clock_get_monotonic()
+}
+
+// Should match timespec struct definition from libc time.h
+type timespec struct {
+ tv_sec int64
+ tv_nsec int64
+}
+
+//go:linkname time_now time.now
+//go:nosplit
+func time_now() (sec int64, nsec int32, mono int64) {
+ var ts timespec
+ if asmcgocall(_cgo_timespec_get, unsafe.Pointer(&ts)) != 0 {
+ panic("failed to get UTC time")
+ }
+ return ts.tv_sec, int32(ts.tv_nsec), nanotime()
+}
+
+func unixnanotime() int64 {
+ return nanotime()
+}
+
+type writeargs struct {
+ fd uint32
+ buf uintptr
+ count uint32
+}
+
+//go:nosplit
+func write1(fd uintptr, buf unsafe.Pointer, n int32) int32 {
+ w := writeargs{
+ fd: uint32(fd),
+ buf: uintptr(buf),
+ count: uint32(n),
+ }
+ return asmcgocall(_cgo_write1, unsafe.Pointer(&w))
+}
+
+//go:nosplit
+func exit(code int32) {
+ sys_process_exit(int64(code))
+}
+
+//go:nosplit
+func usleep(usec uint32) {
+ sys_nanosleep(sys_deadline_after(int64(usec * 1000)))
+}
+
+//go:nosplit
+func usleep_no_g(usec uint32) {
+ usleep(usec)
+}
+
+func signame(sig uint32) string {
+ return "unknown_sig" // TODO
+}
+
+// zircon_mktls
+//go:nosplit
+func zircon_mktls() {
+ // TODO
+}
+
+//go:nosplit
+func zircon_settls(val uintptr) {
+ // TODO: should call zx_set_object_property with property ZX_PROP_REGISTER_FS in amd64 or
+ // ZX_PROP_REGISTER_CP15 on arm.
+}
+
+//go:linkname os_sigpipe os.sigpipe
+func os_sigpipe() {
+ // TODO
+}
+
+// gsignalStack is unused on fuchsia
+type gsignalStack struct{}
+
+const preemptMSupported = false
+
+func preemptM(mp *m) {
+ // No threads, so nothing to do.
+}
+
+var (
+ profTimer uint32 // timer handle
+ profHz = ZX_TIME_INFINITE
+)
+
+type zxCpuSet struct {
+ mask [16]uint32
+}
+
+type zxInfoThread struct {
+ state uint32
+ waitExceptionPortType uint32
+ affinityMask zxCpuSet
+}
+
+//go:noescape
+//go:nosplit
+func fake_m_object_wait_one(handle uint32, signals uint32, deadline int64, observed *uint32) int32
+
+func profilem(mp *m, thread uint32) {
+ // Ignore nascent threads.
+ var observed uint32
+ var info zxInfoThread
+ var actualSize uint64
+ var availSize uint64
+ if status := vdsoCall_zx_object_get_info(thread, ZX_INFO_THREAD, unsafe.Pointer(&info), uint(unsafe.Sizeof(info)), unsafe.Pointer(&actualSize), unsafe.Pointer(&availSize)); status != ZX_OK {
+ return
+ }
+ if info.state == ZX_THREAD_STATE_NEW {
+ return
+ }
+
+ // Wait for the thread to be suspended.
+ if status := fake_m_object_wait_one(thread, ZX_THREAD_SUSPENDED|ZX_THREAD_TERMINATED, ZX_TIME_INFINITE, &observed); status != ZX_OK {
+ return
+ }
+
+ // Ignore threads that were terminated as a result of suspension.
+ if observed&ZX_THREAD_TERMINATED == ZX_THREAD_TERMINATED {
+ return
+ }
+
+ var r generalRegs
+ if status := vdsoCall_zx_thread_read_state(thread, ZX_THREAD_STATE_GENERAL_REGS, unsafe.Pointer(&r), uint(unsafe.Sizeof(r))); status != ZX_OK {
+ return
+ }
+
+ if mp.curg != nil && mp.curg.m != nil {
+ sigprof(r.rPC(), r.rSP(), r.rLR(), mp.curg, mp)
+ } else {
+ sigprofNonGoPC(r.rPC())
+ }
+}
+
+// profileLoop is called when pprof CPU tracing is enabled. It runs without a p, hence nowritebarrierrec.
+//
+//go:nosplit
+//go:nowritebarrierrec
+func profileLoop() {
+ me := getg().m
+ for {
+ var observed uint32
+ if status := fake_m_object_wait_one(profTimer, ZX_TIMER_SIGNALED, ZX_TIME_INFINITE, &observed); status != ZX_OK {
+ continue
+ }
+
+ // Scan over all threads and suspend them, then trace. Ideally, we'd scan over
+ // all of them and give them a chance to suspend before this, but I don't want
+ // to deal with allocation here.
+ first := (*m)(atomic.Loadp(unsafe.Pointer(&allm)))
+ for mp := first; mp != nil; mp = mp.alllink {
+ thread := uint32(atomic.Loaduintptr(&mp.thread))
+ // Do not profile threads blocked on Notes (this includes idle worker threads, idle timer thread,
+ // idle heap scavenger, etc.). Do not profile this thread.
+ if thread == ZX_HANDLE_INVALID || mp.profilehz == 0 || mp.blocked || mp == me {
+ continue
+ }
+
+ var token uint32
+ if status := vdsoCall_zx_task_suspend_token(thread, unsafe.Pointer(&token)); status == ZX_OK {
+ profilem(mp, thread)
+ }
+ vdsoCall_zx_handle_close(token)
+
+ }
+
+ due := vdsoCall_zx_deadline_after(profHz)
+ if status := vdsoCall_zx_timer_set(profTimer, due, ZX_TIMER_SLACK_EARLY); status != ZX_OK {
+ // TODO: what do?
+ return
+ }
+ }
+}
+
+// profileloop is defined in sys_fuchsia_{amd,arm}64.s
+func profileloop()
+
+func setProcessCPUProfiler(hz int32) {
+ // This function is entered in the critical section guarded by
+ // prof.signalLock in proc.go and is thus safe to assume the profiler's
+ // timer is created atomically.
+ if profTimer == ZX_HANDLE_INVALID {
+ if status := vdsoCall_zx_timer_create(ZX_TIMER_SLACK_EARLY, ZX_CLOCK_MONOTONIC, unsafe.Pointer(&profTimer)); status != ZX_OK {
+ // TODO: what do?
+ return
+ }
+
+ newm(profileLoop, nil, -1)
+ }
+}
+
+func setThreadCPUProfiler(hz int32) {
+ // Don't do anything if we don't have a timer yet.
+ if profTimer == ZX_HANDLE_INVALID {
+ return
+ }
+
+ atomic.Store((*uint32)(unsafe.Pointer(&getg().m.profilehz)), uint32(hz))
+
+ if hz > 0 {
+ ns := int64(int64(1000000000) / int64(hz))
+ // Bound tracing frequency to microseconds. This is likely
+ // already well above the granularity traces can actually
+ // provide.
+ if ns < 1000 {
+ ns = 1000
+ }
+
+ profHz = ns
+ due := vdsoCall_zx_deadline_after(ns)
+ if status := vdsoCall_zx_timer_set(profTimer, due, ZX_TIMER_SLACK_EARLY); status != ZX_OK {
+ // TODO: what do?
+ return
+ }
+ } else {
+ if status := vdsoCall_zx_timer_cancel(profTimer); status != ZX_OK {
+ return
+ }
+ }
+}
+
+func exitThread(wait *uint32) {}
+
+//go:nosplit
+//go:nowritebarrierrec
+func clearSignalHandlers() {}
diff --git a/src/runtime/os_fuchsia_arm64.go b/src/runtime/os_fuchsia_arm64.go
new file mode 100644
index 0000000..e5b021a
--- /dev/null
+++ b/src/runtime/os_fuchsia_arm64.go
@@ -0,0 +1,5 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package runtime
diff --git a/src/runtime/pprof/pprof_test.go b/src/runtime/pprof/pprof_test.go
index 7c71d82..cba6faf 100644
--- a/src/runtime/pprof/pprof_test.go
+++ b/src/runtime/pprof/pprof_test.go
@@ -94,6 +94,10 @@
}
func TestCPUProfileMultithreaded(t *testing.T) {
+ if runtime.GOOS == "fuchsia" && runtime.GOARCH == "arm64" {
+ t.Skip("TODO(golang.org/issues/40823): skipping on Fuchsia")
+ }
+
defer runtime.GOMAXPROCS(runtime.GOMAXPROCS(2))
testCPUProfile(t, stackContains, []string{"runtime/pprof.cpuHog1", "runtime/pprof.cpuHog2"}, avoidFunctions(), func(dur time.Duration) {
c := make(chan int)
@@ -466,6 +470,10 @@
// Use smaller size for Android to avoid crash.
heap = 100 << 20
}
+ if runtime.GOOS == "fuchsia" {
+ // Use smaller heap for Fuchsia to avoid crash.
+ heap = 100 << 20
+ }
if runtime.GOOS == "windows" && runtime.GOARCH == "arm" {
// Use smaller heap for Windows/ARM to avoid crash.
heap = 100 << 20
@@ -599,6 +607,10 @@
}
func TestMorestack(t *testing.T) {
+ if runtime.GOOS == "fuchsia" {
+ t.Skip("skipping on fuchsia")
+ }
+
testCPUProfile(t, stackContainsAll, []string{"runtime.newstack,runtime/pprof.growstack"}, avoidFunctions(), func(duration time.Duration) {
t := time.After(duration)
c := make(chan bool)
diff --git a/src/runtime/pprof/proto.go b/src/runtime/pprof/proto.go
index bdb4454..ea4a87a 100644
--- a/src/runtime/pprof/proto.go
+++ b/src/runtime/pprof/proto.go
@@ -407,6 +407,10 @@
// Even if stk was truncated due to the stack depth
// limit, expandFinalInlineFrame above has already
// fixed the truncation, ensuring it is long enough.
+ if len(l.pcs) > len(stk) {
+ // Temporary logging for golang.org/issues/40823
+ dumpState(l, stk)
+ }
stk = stk[len(l.pcs):]
continue
}
@@ -446,6 +450,16 @@
return locs
}
+func dumpState(l locInfo, stk []uintptr) {
+ buf := new(bytes.Buffer)
+ buf.WriteString("stk:")
+ printStackRecord(buf, stk, true)
+ buf.WriteString("\n")
+ buf.WriteString("l.pcs:")
+ printStackRecord(buf, l.pcs, true)
+ fmt.Fprintln(os.Stderr, buf.String())
+}
+
// pcDeck is a helper to detect a sequence of inlined functions from
// a stack trace returned by the runtime.
//
diff --git a/src/runtime/proc.go b/src/runtime/proc.go
index 4c92588..81758ac 100644
--- a/src/runtime/proc.go
+++ b/src/runtime/proc.go
@@ -5410,7 +5410,13 @@
}
}
mDoFixup()
- if GOOS == "netbsd" {
+ switch GOOS {
+ case "fuchsia", "netbsd":
+ // Something broke in go1.17beta1. We don't know what, but this seems to
+ // work around the problem. Probably netpoll_stub is broken. Without
+ // this, we seem `time.AfterFunc(time.Second, f)` call `f` after 10
+ // seconds in rare cases.
+ //
// netpoll is responsible for waiting for timer
// expiration, so we typically don't have to worry
// about starting an M to service timers. (Note that
diff --git a/src/runtime/rt0_fuchsia_amd64.s b/src/runtime/rt0_fuchsia_amd64.s
new file mode 100644
index 0000000..8947cfe
--- /dev/null
+++ b/src/runtime/rt0_fuchsia_amd64.s
@@ -0,0 +1,14 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+#include "textflag.h"
+
+TEXT _rt0_amd64_fuchsia(SB),NOSPLIT,$-8
+ JMP _rt0_amd64(SB)
+
+TEXT _rt0_amd64_fuchsia_lib(SB),NOSPLIT,$0
+ // musl doesn't provide argc/argv; see golang.org/issue/13492
+ MOVQ $0, DI // argc
+ MOVQ $0, SI // argv
+ JMP _rt0_amd64_lib(SB)
diff --git a/src/runtime/rt0_fuchsia_arm64.s b/src/runtime/rt0_fuchsia_arm64.s
new file mode 100644
index 0000000..2df5fa1
--- /dev/null
+++ b/src/runtime/rt0_fuchsia_arm64.s
@@ -0,0 +1,92 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+#include "textflag.h"
+
+TEXT _rt0_arm64_fuchsia(SB),NOSPLIT,$-8
+ MOVD 0(RSP), R0 // argc
+ ADD $8, RSP, R1 // argv
+ BL main(SB)
+
+TEXT main(SB),NOSPLIT,$-8
+ MOVD $runtime·rt0_go(SB), R2
+ BL R2
+
+// When building with -buildmode=c-shared, this symbol is called when the shared
+// library is loaded.
+TEXT _rt0_arm64_fuchsia_lib(SB),NOSPLIT,$184
+ // Preserve callee-save registers.
+ MOVD R19, 24(RSP)
+ MOVD R20, 32(RSP)
+ MOVD R21, 40(RSP)
+ MOVD R22, 48(RSP)
+ MOVD R23, 56(RSP)
+ MOVD R24, 64(RSP)
+ MOVD R25, 72(RSP)
+ MOVD R26, 80(RSP)
+ MOVD R27, 88(RSP)
+ FMOVD F8, 96(RSP)
+ FMOVD F9, 104(RSP)
+ FMOVD F10, 112(RSP)
+ FMOVD F11, 120(RSP)
+ FMOVD F12, 128(RSP)
+ FMOVD F13, 136(RSP)
+ FMOVD F14, 144(RSP)
+ FMOVD F15, 152(RSP)
+ MOVD g, 160(RSP)
+
+ // Initialize g as null in case of using g later e.g. sigaction in cgo_sigaction.go
+ MOVD ZR, g
+
+ // Synchronous initialization.
+ MOVD $runtime·libpreinit(SB), R4
+ BL (R4)
+
+ // Create a new thread to do the runtime initialization and return.
+ MOVD _cgo_sys_thread_create(SB), R4
+ CMP $0, R4
+ BEQ nocgo
+ MOVD $_rt0_arm64_fuchsia_lib_go(SB), R0
+ MOVD $0, R1
+ SUB $16, RSP // reserve 16 bytes for sp-8 where fp may be saved.
+ BL (R4)
+ ADD $16, RSP
+ B restore
+
+nocgo:
+ MOVD $0x800000, R0 // stacksize = 8192KB
+ MOVD $_rt0_arm64_fuchsia_lib_go(SB), R1
+ MOVD R0, 8(RSP)
+ MOVD R1, 16(RSP)
+ MOVD $runtime·newosproc0(SB),R4
+ BL (R4)
+
+restore:
+ // Restore callee-save registers.
+ MOVD 24(RSP), R19
+ MOVD 32(RSP), R20
+ MOVD 40(RSP), R21
+ MOVD 48(RSP), R22
+ MOVD 56(RSP), R23
+ MOVD 64(RSP), R24
+ MOVD 72(RSP), R25
+ MOVD 80(RSP), R26
+ MOVD 88(RSP), R27
+ FMOVD 96(RSP), F8
+ FMOVD 104(RSP), F9
+ FMOVD 112(RSP), F10
+ FMOVD 120(RSP), F11
+ FMOVD 128(RSP), F12
+ FMOVD 136(RSP), F13
+ FMOVD 144(RSP), F14
+ FMOVD 152(RSP), F15
+ MOVD 160(RSP), g
+ RET
+
+TEXT _rt0_arm64_fuchsia_lib_go(SB),NOSPLIT,$0
+ // musl doesn't provide argc/argv; see golang.org/issue/13492
+ MOVD $0, R0 // argc
+ MOVD $0, R1 // argv
+ MOVD $runtime·rt0_go(SB),R4
+ B (R4)
diff --git a/src/runtime/signal_amd64.go b/src/runtime/signal_amd64.go
index e45fbb4..02a5484 100644
--- a/src/runtime/signal_amd64.go
+++ b/src/runtime/signal_amd64.go
@@ -2,9 +2,9 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build amd64 && (darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris)
+//go:build amd64 && (darwin || dragonfly || freebsd || fuchsia || linux || netbsd || openbsd || solaris)
// +build amd64
-// +build darwin dragonfly freebsd linux netbsd openbsd solaris
+// +build darwin dragonfly freebsd fuchsia linux netbsd openbsd solaris
package runtime
diff --git a/src/runtime/signal_arm64.go b/src/runtime/signal_arm64.go
index f047500..92a73d8 100644
--- a/src/runtime/signal_arm64.go
+++ b/src/runtime/signal_arm64.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build darwin || freebsd || linux || netbsd || openbsd
-// +build darwin freebsd linux netbsd openbsd
+//go:build darwin || freebsd || fuchsia || linux || netbsd || openbsd
+// +build darwin freebsd fuchsia linux netbsd openbsd
package runtime
diff --git a/src/runtime/signal_fuchsia_amd64.go b/src/runtime/signal_fuchsia_amd64.go
new file mode 100644
index 0000000..fbec7f1
--- /dev/null
+++ b/src/runtime/signal_fuchsia_amd64.go
@@ -0,0 +1,57 @@
+// 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 runtime
+
+const (
+ // Bogus definitions to allow signal_amd64 to build.
+ _SIGFPE = 0x1
+ _FPE_INTDIV = 0x01
+)
+
+type sigctxt struct {
+ regs generalRegs
+}
+
+func (c *sigctxt) rax() uint64 { return c.regs.rax }
+func (c *sigctxt) rbx() uint64 { return c.regs.rbx }
+func (c *sigctxt) rcx() uint64 { return c.regs.rcx }
+func (c *sigctxt) rdx() uint64 { return c.regs.rdx }
+func (c *sigctxt) rdi() uint64 { return c.regs.rdi }
+func (c *sigctxt) rsi() uint64 { return c.regs.rsi }
+func (c *sigctxt) rbp() uint64 { return c.regs.rbp }
+func (c *sigctxt) rsp() uint64 { return c.regs.rsp }
+func (c *sigctxt) r8() uint64 { return c.regs.r8 }
+func (c *sigctxt) r9() uint64 { return c.regs.r9 }
+func (c *sigctxt) r10() uint64 { return c.regs.r10 }
+func (c *sigctxt) r11() uint64 { return c.regs.r11 }
+func (c *sigctxt) r12() uint64 { return c.regs.r12 }
+func (c *sigctxt) r13() uint64 { return c.regs.r13 }
+func (c *sigctxt) r14() uint64 { return c.regs.r14 }
+func (c *sigctxt) r15() uint64 { return c.regs.r15 }
+
+//go:nosplit
+//go:nowritebarrierrec
+func (c *sigctxt) rip() uint64 { return c.regs.rip }
+
+func (c *sigctxt) rflags() uint64 { return c.regs.rflags }
+
+// TODO brunodalbo these only seem to be used to dump regs, what's the right
+// value here?
+func (c *sigctxt) cs() uint64 { return c.regs.fs_base }
+func (c *sigctxt) fs() uint64 { return c.regs.fs_base }
+func (c *sigctxt) gs() uint64 { return c.regs.fs_base }
+func (c *sigctxt) sigaddr() uint64 { return 0 }
+
+func (c *sigctxt) set_rip(x uint64) { c.regs.rip = x }
+func (c *sigctxt) set_rsp(x uint64) { c.regs.rsp = x }
+
+func (c *sigctxt) prepareExceptionPanic() {
+ // NOTE(brunodalbo) we're passing the wrong g into preparePanic here for
+ // simplicity. This is not entirely correct, as prepare panic wants the g
+ // from the panicking thread. It should be fine for amd64 though, as g is
+ // only used in preparePanic to improve the traceback in case we're in a cgo
+ // call.
+ c.preparePanic(0, getg())
+}
diff --git a/src/runtime/signal_fuchsia_arm64.go b/src/runtime/signal_fuchsia_arm64.go
new file mode 100644
index 0000000..e799cd9
--- /dev/null
+++ b/src/runtime/signal_fuchsia_arm64.go
@@ -0,0 +1,82 @@
+// 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 runtime
+
+// Needed for go:linkname.
+import _ "unsafe"
+
+type sigctxt struct {
+ regs generalRegs
+}
+
+func (c *sigctxt) r0() uint64 { return c.regs.r[0] }
+func (c *sigctxt) r1() uint64 { return c.regs.r[1] }
+func (c *sigctxt) r2() uint64 { return c.regs.r[2] }
+func (c *sigctxt) r3() uint64 { return c.regs.r[3] }
+func (c *sigctxt) r4() uint64 { return c.regs.r[4] }
+func (c *sigctxt) r5() uint64 { return c.regs.r[5] }
+func (c *sigctxt) r6() uint64 { return c.regs.r[6] }
+func (c *sigctxt) r7() uint64 { return c.regs.r[7] }
+func (c *sigctxt) r8() uint64 { return c.regs.r[8] }
+func (c *sigctxt) r9() uint64 { return c.regs.r[9] }
+func (c *sigctxt) r10() uint64 { return c.regs.r[10] }
+func (c *sigctxt) r11() uint64 { return c.regs.r[11] }
+func (c *sigctxt) r12() uint64 { return c.regs.r[12] }
+func (c *sigctxt) r13() uint64 { return c.regs.r[13] }
+func (c *sigctxt) r14() uint64 { return c.regs.r[14] }
+func (c *sigctxt) r15() uint64 { return c.regs.r[15] }
+func (c *sigctxt) r16() uint64 { return c.regs.r[16] }
+func (c *sigctxt) r17() uint64 { return c.regs.r[17] }
+func (c *sigctxt) r18() uint64 { return c.regs.r[18] }
+func (c *sigctxt) r19() uint64 { return c.regs.r[19] }
+func (c *sigctxt) r20() uint64 { return c.regs.r[20] }
+func (c *sigctxt) r21() uint64 { return c.regs.r[21] }
+func (c *sigctxt) r22() uint64 { return c.regs.r[22] }
+func (c *sigctxt) r23() uint64 { return c.regs.r[23] }
+func (c *sigctxt) r24() uint64 { return c.regs.r[24] }
+func (c *sigctxt) r25() uint64 { return c.regs.r[25] }
+func (c *sigctxt) r26() uint64 { return c.regs.r[26] }
+func (c *sigctxt) r27() uint64 { return c.regs.r[27] }
+func (c *sigctxt) r28() uint64 { return c.regs.r[28] }
+func (c *sigctxt) r29() uint64 { return c.regs.r[29] }
+func (c *sigctxt) lr() uint64 { return c.regs.lr }
+func (c *sigctxt) sp() uint64 { return c.regs.sp }
+
+//go:nosplit
+//go:nowritebarrierrec
+func (c *sigctxt) pc() uint64 { return c.regs.pc }
+
+// TODO brunodalbo these only seem to be used to dump regs, what's the right
+// value here?
+func (c *sigctxt) pstate() uint64 { return 0 }
+func (c *sigctxt) fault() uintptr { return 0 }
+func (c *sigctxt) sigcode() uint64 { return 0 }
+func (c *sigctxt) sigaddr() uint64 { return 0 }
+
+func (c *sigctxt) set_pc(x uint64) { c.regs.pc = x }
+func (c *sigctxt) set_sp(x uint64) { c.regs.sp = x }
+func (c *sigctxt) set_lr(x uint64) { c.regs.lr = x }
+func (c *sigctxt) set_r28(x uint64) { c.regs.r[28] = x }
+
+//go:linkname xx_panicmem xx_panicmem
+func xx_panicmem()
+
+func (c *sigctxt) prepareExceptionPanic() {
+ // R1 - LR at moment of fault
+ // R2 - PC at moment of fault
+ c.regs.r[1] = c.lr()
+ c.regs.r[2] = c.pc()
+ c.pushCall(funcPC(xx_panicmem), uintptr(c.pc()))
+}
+
+//go:nosplit
+//go:linkname setsigsegv
+func setsigsegv(pc uintptr) {
+ g := getg()
+ g.sig = 0
+ g.sigpc = pc
+ g.sigcode0 = 0
+ g.sigcode1 = 0 // TODO: emulate si_addr
+}
diff --git a/src/runtime/signal_fuchsia_arm64.s b/src/runtime/signal_fuchsia_arm64.s
new file mode 100644
index 0000000..8d88dbd
--- /dev/null
+++ b/src/runtime/signal_fuchsia_arm64.s
@@ -0,0 +1,59 @@
+// 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.
+
+#include "textflag.h"
+
+// NOTE(brunodalbo): this is copied from cgo/signal_darwin_arm64 since the
+// SIGSEV handling is similar to what needs to happen in Fuchsia.
+
+// xx_panicmem is the entrypoint for SIGSEGV as intercepted via a
+// mach thread port as EXC_BAD_ACCESS. As the segfault may have happened
+// in C code, we first need to load_g then call xx_panicmem.
+//
+// R1 - LR at moment of fault
+// R2 - PC at moment of fault
+TEXT xx_panicmem(SB),NOSPLIT|NOFRAME,$0
+ // If in external C code, we need to load the g register.
+ BL runtime·load_g(SB)
+ CMP $0, g
+ BNE ongothread
+
+ // On a foreign thread.
+ // TODO(crawshaw): call badsignal
+ MOVD.W $0, -16(RSP)
+ MOVW $139, R1
+ MOVW R1, 8(RSP)
+ B runtime·exit(SB)
+
+ongothread:
+ // Trigger a SIGSEGV panic.
+ //
+ // The goal is to arrange the stack so it looks like the runtime
+ // function sigpanic was called from the PC that faulted. It has
+ // to be sigpanic, as the stack unwinding code in traceback.go
+ // looks explicitly for it.
+ //
+ // To do this we call into runtime·setsigsegv, which sets the
+ // appropriate state inside the g object. We give it the faulting
+ // PC on the stack, then put it in the LR before calling sigpanic.
+
+ // Build a 32-byte stack frame for us for this call.
+ // Saved LR (none available) is at the bottom,
+ // then the PC argument for setsigsegv,
+ // then a copy of the LR for us to restore.
+ MOVD.W $0, -16(RSP)
+ MOVD R1, 8(RSP)
+ MOVD R2, 16(RSP)
+ BL runtime·setsigsegv(SB)
+ MOVD 8(RSP), R1
+ MOVD 16(RSP), R2
+
+ // Build a 16-byte stack frame for the simulated
+ // call to sigpanic, by taking 16 bytes away from the
+ // 32-byte stack frame above.
+ // The saved LR in this frame is the LR at time of fault,
+ // and the LR on entry to sigpanic is the PC at time of fault.
+ MOVD.W R1, 16(RSP)
+ MOVD R2, R30
+ B runtime·sigpanic(SB)
diff --git a/src/runtime/stubs2.go b/src/runtime/stubs2.go
index 525b324..dadc5ff 100644
--- a/src/runtime/stubs2.go
+++ b/src/runtime/stubs2.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build !aix && !darwin && !js && !openbsd && !plan9 && !solaris && !windows
-// +build !aix,!darwin,!js,!openbsd,!plan9,!solaris,!windows
+//go:build !aix && !darwin && !fuchsia && !js && !openbsd && !plan9 && !solaris && !windows
+// +build !aix,!darwin,!fuchsia,!js,!openbsd,!plan9,!solaris,!windows
package runtime
diff --git a/src/runtime/stubs3.go b/src/runtime/stubs3.go
index b895be4..b23521a 100644
--- a/src/runtime/stubs3.go
+++ b/src/runtime/stubs3.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build !aix && !darwin && !freebsd && !openbsd && !plan9 && !solaris
-// +build !aix,!darwin,!freebsd,!openbsd,!plan9,!solaris
+//go:build !aix && !darwin && !freebsd && !fuchsia && !openbsd && !plan9 && !solaris
+// +build !aix,!darwin,!freebsd,!fuchsia,!openbsd,!plan9,!solaris
package runtime
diff --git a/src/runtime/sys_fuchsia_amd64.s b/src/runtime/sys_fuchsia_amd64.s
new file mode 100644
index 0000000..285d079
--- /dev/null
+++ b/src/runtime/sys_fuchsia_amd64.s
@@ -0,0 +1,94 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+#include "go_asm.h"
+#include "go_tls.h"
+#include "textflag.h"
+
+TEXT runtime·threadinit(SB),NOSPLIT,$0
+ MOVQ DI, R8
+
+ MOVQ m_g0(R8), DX // g
+ MOVQ R8, g_m(DX)
+
+ // Layout new m scheduler stack on os stack.
+ // TODO: which os stack? do we need to make a new vmo?
+ LEAQ (-8*1024+104)(SP), BX
+ MOVQ BX, g_stackguard0(DX)
+ MOVQ BX, g_stackguard1(DX)
+ MOVQ BX, (g_stack+stack_lo)(DX)
+ MOVQ SP, (g_stack+stack_hi)(DX)
+
+ PUSHQ R8
+
+ // Set up tls.
+ LEAQ m_tls(R8), DI
+ CALL runtime·settls(SB)
+
+ get_tls(CX)
+
+ POPQ R8
+ MOVQ m_g0(R8), DX
+ MOVQ DX, g(CX)
+
+ CLD // convention is D is always left cleared
+ CALL runtime·stackcheck(SB) // clobbers AX,CX
+ CALL runtime·mstart(SB)
+ // TODO CALL syscall/zx·Sys_zircon_thread_exit(SB)
+ RET
+
+// Set TLS base to DI for the thread handle supplied in SI.
+TEXT runtime·settls(SB),NOSPLIT,$0
+ ADDQ $8, DI // ELF wants to use -8(FS)
+ PUSHQ DI
+ LEAQ 0(SP), DX // object_set_property takes a pointer to the base
+
+ SUBQ $28, SP
+
+ MOVL SI, 0(SP) // thread handle
+ MOVL $4, 4(SP) // ZX_PROP_REGISTER_FS
+ MOVQ DX, 8(SP) // pointer to fs base
+ MOVQ $8, 16(SP) // size
+ CALL runtime·vdsoCall_zx_object_set_property(SB)
+
+ // Stash return and restore SP
+ MOVL 24(SP), AX
+ ADDQ $28, SP
+ TESTL $0, AX
+ JZ 2(PC)
+ MOVL $0xf1, 0xf1 // crash
+ POPQ DI
+ RET
+
+TEXT ·cgocallm0(SB),NOSPLIT,$0-20
+ MOVQ fn+0(FP), AX
+ MOVQ arg+8(FP), DI
+
+ MOVQ SP, BP // BP is callee-save in the x86-64 ABI
+
+ ANDQ $~15, SP
+ CALL AX
+
+ MOVQ BP, SP
+ get_tls(CX)
+ RET
+
+// This implementation lives separately because the m/g for the profiler and
+// exception watcher are faked, and this causes issues with runtime.exitsyscall
+// not returning.
+TEXT runtime·fake_m_object_wait_one(SB),NOSPLIT,$0-28
+ MOVL handle+0(FP), DI
+ MOVL signals+4(FP), SI
+ MOVQ deadline+8(FP), DX
+ MOVQ observed+16(FP), CX
+ MOVQ vdso_zx_object_wait_one(SB), AX
+ CALL AX
+ MOVL AX, ret+24(FP)
+ RET
+
+TEXT runtime·osyield(SB),NOSPLIT,$0
+ MOVQ $0, DI
+ MOVQ vdso_zx_nanosleep(SB), AX
+ CALL AX
+ RET
diff --git a/src/runtime/sys_fuchsia_arm64.s b/src/runtime/sys_fuchsia_arm64.s
new file mode 100644
index 0000000..ce89ebe
--- /dev/null
+++ b/src/runtime/sys_fuchsia_arm64.s
@@ -0,0 +1,59 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+#include "go_asm.h"
+#include "funcdata.h"
+#include "textflag.h"
+
+TEXT runtime·threadinit(SB),NOSPLIT,$0
+ // Layout new m scheduler stack on os stack.
+ // TODO: which os stack? do we need to make a new vmo?
+
+ MOVD m_g0(R0), g
+ MOVD R0, g_m(g)
+
+ MOVD RSP, R7
+ MOVD $(-64*1024)(R7), R0
+ MOVD R0, g_stackguard0(g)
+ MOVD R0, g_stackguard1(g)
+ MOVD R0, (g_stack+stack_lo)(g)
+ MOVD R7, (g_stack+stack_hi)(g)
+
+ BL runtime·mstart(SB)
+ MOVD $0, R0
+ MOVD R0, (R0) // boom
+ UNDEF
+
+TEXT ·cgocallm0(SB),NOSPLIT,$0-20
+ MOVD fn+0(FP), R1
+ MOVD arg+8(FP), R0
+
+ MOVD RSP, R19 // R19 is callee-save by C
+ MOVD g, R21 // R21 is callee-save by C
+ MOVD RSP, R7
+ ADD $-32, R7, R7
+ AND $~15, R7
+ MOVD R7, RSP // align stack for C
+ BL R1
+
+ MOVD R19, RSP // restore SP
+ MOVD R21, g // restore g
+ RET
+
+// This implementation lives separately because the m/g for the profiler and
+// exception watcher are faked, and this causes issues with runtime.exitsyscall
+// not returning.
+TEXT runtime·fake_m_object_wait_one(SB),NOSPLIT,$0-28
+ MOVW handle+0(FP), R0
+ MOVW signals+4(FP), R1
+ MOVD deadline+8(FP), R2
+ MOVD observed+16(FP), R3
+ BL vdso_zx_object_wait_one(SB)
+ MOVW R0, ret+24(FP)
+ RET
+
+TEXT runtime·osyield(SB),NOSPLIT,$0
+ MOVD $0, R0
+ BL vdso_zx_nanosleep(SB)
+ RET
diff --git a/src/runtime/timestub.go b/src/runtime/timestub.go
index 6f16c70..817b530 100644
--- a/src/runtime/timestub.go
+++ b/src/runtime/timestub.go
@@ -5,8 +5,9 @@
// Declarations for operating systems implementing time.now
// indirectly, in terms of walltime and nanotime assembly.
-//go:build !faketime && !windows && !(linux && amd64)
+//go:build !faketime && !fuchsia && !windows && !(linux && amd64)
// +build !faketime
+// +build !fuchsia
// +build !windows
// +build !linux !amd64
diff --git a/src/runtime/tls_arm64.h b/src/runtime/tls_arm64.h
index fe5e4ce..7130567 100644
--- a/src/runtime/tls_arm64.h
+++ b/src/runtime/tls_arm64.h
@@ -9,6 +9,9 @@
#ifdef GOOS_linux
#define TLS_linux
#endif
+#ifdef GOOS_fuchsia
+#define TLS_linux
+#endif
#ifdef TLS_linux
#define TPIDR TPIDR_EL0
#define MRS_TPIDR_R0 WORD $0xd53bd040 // MRS TPIDR_EL0, R0
diff --git a/src/runtime/vdso_elf.go b/src/runtime/vdso_elf.go
new file mode 100644
index 0000000..84af79d
--- /dev/null
+++ b/src/runtime/vdso_elf.go
@@ -0,0 +1,58 @@
+// Copyright 2012 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+//
+// +build fuchsia linux
+// +build 386 amd64 arm arm64 ppc64 ppc64le
+
+package runtime
+
+import "unsafe"
+
+const (
+ _AT_SYSINFO_EHDR = 33
+
+ _PT_LOAD = 1 /* Loadable program segment */
+ _PT_DYNAMIC = 2 /* Dynamic linking information */
+
+ _PF_X = 1 /* Executable PH segment */
+
+ _DT_NULL = 0 /* Marks end of dynamic section */
+ _DT_HASH = 4 /* Dynamic symbol hash table */
+ _DT_STRTAB = 5 /* Address of string table */
+ _DT_SYMTAB = 6 /* Address of symbol table */
+ _DT_GNU_HASH = 0x6ffffef5 /* GNU-style dynamic symbol hash table */
+ _DT_VERSYM = 0x6ffffff0
+ _DT_VERDEF = 0x6ffffffc
+
+ _VER_FLG_BASE = 0x1 /* Version definition of file itself */
+
+ _SHN_UNDEF = 0 /* Undefined section */
+
+ _SHT_DYNSYM = 11 /* Dynamic linker symbol table */
+
+ _STT_FUNC = 2 /* Symbol is a code object */
+
+ _STT_NOTYPE = 0 /* Symbol type is not specified */
+
+ _STB_GLOBAL = 1 /* Global symbol */
+ _STB_WEAK = 2 /* Weak symbol */
+
+ _EI_NIDENT = 16
+
+ // Maximum indices for the array types used when traversing the vDSO ELF structures.
+ // Computed from architecture-specific max provided by vdso_linux_*.go
+ vdsoSymTabSize = vdsoArrayMax / unsafe.Sizeof(elfSym{})
+ vdsoDynSize = vdsoArrayMax / unsafe.Sizeof(elfDyn{})
+ vdsoSymStringsSize = vdsoArrayMax // byte
+ vdsoVerSymSize = vdsoArrayMax / 2 // uint16
+ vdsoHashSize = vdsoArrayMax / 4 // uint32
+
+ // vdsoBloomSizeScale is a scaling factor for gnuhash tables which are uint32 indexed,
+ // but contain uintptrs
+ vdsoBloomSizeScale = unsafe.Sizeof(uintptr(0)) / 4 // uint32
+)
+
+/* How to extract and insert information held in the st_info field. */
+func _ELF_ST_BIND(val byte) byte { return val >> 4 }
+func _ELF_ST_TYPE(val byte) byte { return val & 0xf }
diff --git a/src/runtime/vdso_elf64.go b/src/runtime/vdso_elf64.go
index 9923bd4..25eab43 100644
--- a/src/runtime/vdso_elf64.go
+++ b/src/runtime/vdso_elf64.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build linux && (amd64 || arm64 || mips64 || mips64le || ppc64 || ppc64le)
-// +build linux
+//go:build (fuchsia || linux) && (amd64 || arm64 || mips64 || mips64le || ppc64 || ppc64le)
+// +build fuchsia linux
// +build amd64 arm64 mips64 mips64le ppc64 ppc64le
package runtime
diff --git a/src/runtime/vdso_fuchsia.go b/src/runtime/vdso_fuchsia.go
new file mode 100644
index 0000000..9e4c7f3
--- /dev/null
+++ b/src/runtime/vdso_fuchsia.go
@@ -0,0 +1,160 @@
+// Copyright 2012 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 runtime
+
+import "unsafe"
+
+// Look up symbols in the Fuchsia vDSO.
+//
+// When processes are spawned in Fuchsia, they are provided with a handle to a channel
+// and a pointer to where the vDSO is loaded. Syscalls may never be called directly;
+// on syscall entry, the kernel checks to see that the syscall was entered from the
+// vDSO. Because reading from the channel requires performing a syscall, we must
+// resolve symbols from the vDSO first.
+//
+// This is only performed when not using cgo. When a Go binary is built with cgo, libc
+// handles all of this.
+
+type vdsoSymbolKey struct {
+ name string
+ gnuHash uint32
+ ptr *uintptr
+}
+
+type vdsoInfo struct {
+ /* Load information */
+ loadAddr uintptr
+ loadBase uintptr /* loadAddr + p_vaddr */
+
+ /* Symbol table */
+ symtab *[vdsoSymTabSize]elfSym
+ symstrings *[vdsoSymStringsSize]byte
+ chain []uint32
+ bucket []uint32
+ symOff uint32
+ nBuckets uint32
+}
+
+var (
+ vdsoLoadBase uintptr
+ vdsoMemSize uintptr
+)
+
+// see vdso_keys_fuchsia.go for vdsoSymbolKeys[] and vdso*Sym vars
+
+func vdsoInit(info *vdsoInfo, hdr *elfEhdr) {
+ info.loadAddr = uintptr(unsafe.Pointer(hdr))
+
+ pt := unsafe.Pointer(info.loadAddr + uintptr(hdr.e_phoff))
+
+ // We need two things from the segment table: the load offset
+ // and the dynamic table.
+ var foundVaddr bool
+ var dyn *[vdsoDynSize]elfDyn
+ for i := uint16(0); i < hdr.e_phnum; i++ {
+ pt := (*elfPhdr)(add(pt, uintptr(i)*unsafe.Sizeof(elfPhdr{})))
+ switch pt.p_type {
+ case _PT_LOAD:
+ if !foundVaddr && pt.p_flags&_PF_X == _PF_X {
+ foundVaddr = true
+ info.loadBase = info.loadAddr + uintptr(pt.p_vaddr)
+ vdsoLoadBase = info.loadBase
+ vdsoMemSize = uintptr(pt.p_memsz)
+ }
+
+ case _PT_DYNAMIC:
+ dyn = (*[vdsoDynSize]elfDyn)(unsafe.Pointer(info.loadAddr + uintptr(pt.p_vaddr)))
+ }
+ }
+
+ if !foundVaddr || dyn == nil {
+ crash()
+ }
+
+ // Fish out the useful bits of the dynamic table.
+ var gnuhash *[vdsoHashSize]uint32
+ info.symstrings = nil
+ info.symtab = nil
+ for i := 0; dyn[i].d_tag != _DT_NULL; i++ {
+ dt := &dyn[i]
+ p := info.loadAddr + uintptr(dt.d_val)
+ switch dt.d_tag {
+ case _DT_STRTAB:
+ info.symstrings = (*[vdsoSymStringsSize]byte)(unsafe.Pointer(p))
+ case _DT_SYMTAB:
+ info.symtab = (*[vdsoSymTabSize]elfSym)(unsafe.Pointer(p))
+ case _DT_GNU_HASH:
+ gnuhash = (*[vdsoHashSize]uint32)(unsafe.Pointer(p))
+ }
+ }
+
+ if info.symstrings == nil || info.symtab == nil || gnuhash == nil {
+ crash()
+ }
+
+ // Parse the GNU hash table header.
+ info.nBuckets = gnuhash[0]
+ info.symOff = gnuhash[1]
+ bloomSize := gnuhash[2]
+ info.bucket = gnuhash[4+bloomSize*uint32(vdsoBloomSizeScale):][:info.nBuckets]
+ info.chain = gnuhash[4+bloomSize*uint32(vdsoBloomSizeScale)+info.nBuckets:]
+}
+
+func vdsoResolveSymbols(info *vdsoInfo) {
+ // Loop over the keys we wish to resolve and assign the symbol's offset to the
+ // pointer in the key table. We assume that all symbols we want to resolve
+ // exist, and crash if we are unable to resolve any of them.
+ for _, k := range vdsoSymbolKeys {
+ symIndex := info.bucket[k.gnuHash%info.nBuckets]
+
+ // Anything less than info.symOff is e.g. STN_UNDEF and will not be
+ // resolvable. Since that means we wouldn't be able to resolve this
+ // symbol we definitely need, crash.
+ if symIndex < info.symOff {
+ crash()
+ }
+
+ // For each symbol in this bucket, compare hashes and the name. If the
+ // symbol is not found, crash.
+ for ; ; symIndex++ {
+ hash := info.chain[symIndex-info.symOff]
+ sym := &info.symtab[symIndex]
+ if hash|1 == k.gnuHash|1 && k.name == gostringnocopy(&info.symstrings[sym.st_name]) {
+ typ := _ELF_ST_TYPE(sym.st_info)
+ bind := _ELF_ST_BIND(sym.st_info)
+ // If this isn't a function, doesn't have the appropriate binding, or
+ // has an undefined index, crash.
+ if typ != _STT_FUNC || (bind != _STB_GLOBAL && bind != _STB_WEAK) || sym.st_shndx == _SHN_UNDEF {
+ crash()
+ }
+
+ // We've found our symbol, assign its address and continue on to the
+ // next symbol.
+ *k.ptr = info.loadAddr + uintptr(sym.st_value)
+ break
+ }
+
+ if hash&1 != 0 {
+ // We made it to the end of this chain without finding
+ // our symbol. We won't find it. Crash.
+ crash()
+ }
+ }
+ }
+}
+
+func loadVDSO(val uintptr) {
+ var info vdsoInfo
+ // TODO(dhobsd): rsc says in vdso_linux.go that the compiler thinks info
+ // escapes. Remove/fix/investigate this comment at some point.
+ info1 := (*vdsoInfo)(noescape(unsafe.Pointer(&info)))
+ vdsoInit(info1, (*elfEhdr)(unsafe.Pointer(val)))
+ vdsoResolveSymbols(info1)
+}
+
+// inVDSOPage returns whether an observed PC falls within the VDSO mapping.
+func inVDSOPage(pc uintptr) bool {
+ return pc >= vdsoLoadBase && pc < vdsoLoadBase+vdsoMemSize
+}
diff --git a/src/runtime/vdso_in_none.go b/src/runtime/vdso_in_none.go
index c66fbf8..f830ecb 100644
--- a/src/runtime/vdso_in_none.go
+++ b/src/runtime/vdso_in_none.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build (linux && !386 && !amd64 && !arm && !arm64 && !mips64 && !mips64le && !ppc64 && !ppc64le) || !linux
-// +build linux,!386,!amd64,!arm,!arm64,!mips64,!mips64le,!ppc64,!ppc64le !linux
+//go:build (linux && !386 && !amd64 && !arm && !arm64 && !mips64 && !mips64le && !ppc64 && !ppc64le) || (!fuchsia && !linux)
+// +build linux,!386,!amd64,!arm,!arm64,!mips64,!mips64le,!ppc64,!ppc64le !fuchsia,!linux
package runtime
diff --git a/src/runtime/vdso_keys_fuchsia.go b/src/runtime/vdso_keys_fuchsia.go
new file mode 100644
index 0000000..1f95d9a
--- /dev/null
+++ b/src/runtime/vdso_keys_fuchsia.go
@@ -0,0 +1,1487 @@
+// Copyright 2019 The Fuchsia Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// WARNING: THIS FILE IS MACHINE GENERATED BY //tools/kazoo. DO NOT EDIT.
+
+package runtime
+
+import "unsafe"
+
+const (
+ // vdsoArrayMax is the byte-size of a maximally sized array on this architecture.
+ // See cmd/compile/internal/amd64/galign.go arch.MAXWIDTH initialization.
+ vdsoArrayMax = 1<<50 - 1
+)
+
+var vdsoSymbolKeys = []vdsoSymbolKey{
+ {"_zx_bti_create", 0x7833987, &vdso_zx_bti_create},
+ {"_zx_bti_pin", 0x2aa0e6da, &vdso_zx_bti_pin},
+ {"_zx_bti_release_quarantine", 0x441c1c6b, &vdso_zx_bti_release_quarantine},
+ {"_zx_cache_flush", 0x319eccca, &vdso_zx_cache_flush},
+ {"_zx_channel_create", 0xe5199281, &vdso_zx_channel_create},
+ {"_zx_channel_read", 0xe7169b09, &vdso_zx_channel_read},
+ {"_zx_channel_read_etc", 0x77c4cc84, &vdso_zx_channel_read_etc},
+ {"_zx_channel_write", 0xca4bbc18, &vdso_zx_channel_write},
+ {"_zx_channel_write_etc", 0x43b1dd13, &vdso_zx_channel_write_etc},
+ {"_zx_channel_call_noretry", 0xb5ad0b5b, &vdso_zx_channel_call_noretry},
+ {"_zx_channel_call_finish", 0x85ce3de9, &vdso_zx_channel_call_finish},
+ {"_zx_channel_call", 0xe70e51c9, &vdso_zx_channel_call},
+ {"_zx_channel_call_etc_noretry", 0xc3a3e7d6, &vdso_zx_channel_call_etc_noretry},
+ {"_zx_channel_call_etc_finish", 0xd3cdf704, &vdso_zx_channel_call_etc_finish},
+ {"_zx_channel_call_etc", 0x8639e344, &vdso_zx_channel_call_etc},
+ {"_zx_clock_get_monotonic", 0xb00e6115, &vdso_zx_clock_get_monotonic},
+ {"_zx_clock_get_monotonic_via_kernel", 0x3dc12b54, &vdso_zx_clock_get_monotonic_via_kernel},
+ {"_zx_clock_create", 0x8d73ce14, &vdso_zx_clock_create},
+ {"_zx_clock_read", 0x3676d5dc, &vdso_zx_clock_read},
+ {"_zx_clock_get_details", 0xb7227265, &vdso_zx_clock_get_details},
+ {"_zx_clock_update", 0xb74bec03, &vdso_zx_clock_update},
+ {"_zx_cprng_draw_once", 0x40248ce0, &vdso_zx_cprng_draw_once},
+ {"_zx_cprng_draw", 0x12929c5c, &vdso_zx_cprng_draw},
+ {"_zx_cprng_add_entropy", 0x1617dd47, &vdso_zx_cprng_add_entropy},
+ {"_zx_debug_read", 0x6c062397, &vdso_zx_debug_read},
+ {"_zx_debug_write", 0xed2c5666, &vdso_zx_debug_write},
+ {"_zx_debug_send_command", 0xac6e8203, &vdso_zx_debug_send_command},
+ {"_zx_debuglog_create", 0x2504f1, &vdso_zx_debuglog_create},
+ {"_zx_debuglog_write", 0x3f7aa088, &vdso_zx_debuglog_write},
+ {"_zx_debuglog_read", 0x66c2b179, &vdso_zx_debuglog_read},
+ {"_zx_event_create", 0x4c39490a, &vdso_zx_event_create},
+ {"_zx_eventpair_create", 0xe3fd9c16, &vdso_zx_eventpair_create},
+ {"_zx_exception_get_thread", 0xb1c70bba, &vdso_zx_exception_get_thread},
+ {"_zx_exception_get_process", 0xcddbd761, &vdso_zx_exception_get_process},
+ {"_zx_fifo_create", 0xf197cb2c, &vdso_zx_fifo_create},
+ {"_zx_fifo_read", 0x3ec8acf4, &vdso_zx_fifo_read},
+ {"_zx_fifo_write", 0x18400b63, &vdso_zx_fifo_write},
+ {"_zx_framebuffer_get_info", 0xe6c88924, &vdso_zx_framebuffer_get_info},
+ {"_zx_framebuffer_set_range", 0x364ad6b1, &vdso_zx_framebuffer_set_range},
+ {"_zx_futex_wait", 0xb089e255, &vdso_zx_futex_wait},
+ {"_zx_futex_wake", 0xb089e288, &vdso_zx_futex_wake},
+ {"_zx_futex_requeue", 0xd509be7c, &vdso_zx_futex_requeue},
+ {"_zx_futex_wake_single_owner", 0x63970173, &vdso_zx_futex_wake_single_owner},
+ {"_zx_futex_requeue_single_owner", 0x8f9a9e7, &vdso_zx_futex_requeue_single_owner},
+ {"_zx_futex_get_owner", 0xf16dec6a, &vdso_zx_futex_get_owner},
+ {"_zx_guest_create", 0x6f318390, &vdso_zx_guest_create},
+ {"_zx_guest_set_trap", 0xffe2547e, &vdso_zx_guest_set_trap},
+ {"_zx_handle_close", 0xe769f876, &vdso_zx_handle_close},
+ {"_zx_handle_close_many", 0x8a9a3aaa, &vdso_zx_handle_close_many},
+ {"_zx_handle_duplicate", 0x3f0a83b, &vdso_zx_handle_duplicate},
+ {"_zx_handle_replace", 0xdc2d9edc, &vdso_zx_handle_replace},
+ {"_zx_interrupt_create", 0xaa939795, &vdso_zx_interrupt_create},
+ {"_zx_interrupt_bind", 0xa25b97be, &vdso_zx_interrupt_bind},
+ {"_zx_interrupt_wait", 0xa266f916, &vdso_zx_interrupt_wait},
+ {"_zx_interrupt_destroy", 0x2cb5724b, &vdso_zx_interrupt_destroy},
+ {"_zx_interrupt_ack", 0x3b390f10, &vdso_zx_interrupt_ack},
+ {"_zx_interrupt_trigger", 0x19f00875, &vdso_zx_interrupt_trigger},
+ {"_zx_interrupt_bind_vcpu", 0x505f9f1b, &vdso_zx_interrupt_bind_vcpu},
+ {"_zx_iommu_create", 0x297b6af, &vdso_zx_iommu_create},
+ {"_zx_ioports_request", 0xb8f1c0ad, &vdso_zx_ioports_request},
+ {"_zx_ioports_release", 0xb88e6f05, &vdso_zx_ioports_release},
+ {"_zx_job_create", 0x6b9cbb63, &vdso_zx_job_create},
+ {"_zx_job_set_policy", 0xa45d60ea, &vdso_zx_job_set_policy},
+ {"_zx_job_set_critical", 0x129ab785, &vdso_zx_job_set_critical},
+ {"_zx_ktrace_read", 0x7a59dbca, &vdso_zx_ktrace_read},
+ {"_zx_ktrace_control", 0x15debecf, &vdso_zx_ktrace_control},
+ {"_zx_ktrace_write", 0xc5f714f9, &vdso_zx_ktrace_write},
+ {"_zx_nanosleep", 0xe9d6145a, &vdso_zx_nanosleep},
+ {"_zx_ticks_get", 0xaeb30a32, &vdso_zx_ticks_get},
+ {"_zx_ticks_per_second", 0x6ed47574, &vdso_zx_ticks_per_second},
+ {"_zx_deadline_after", 0x6253eb5c, &vdso_zx_deadline_after},
+ {"_zx_vmar_unmap_handle_close_thread_exit", 0x5a372afb, &vdso_zx_vmar_unmap_handle_close_thread_exit},
+ {"_zx_futex_wake_handle_close_thread_exit", 0x49731cb8, &vdso_zx_futex_wake_handle_close_thread_exit},
+ {"_zx_ticks_get_via_kernel", 0x821bc851, &vdso_zx_ticks_get_via_kernel},
+ {"_zx_msi_allocate", 0xf5370e42, &vdso_zx_msi_allocate},
+ {"_zx_msi_create", 0xbf7b04f1, &vdso_zx_msi_create},
+ {"_zx_mtrace_control", 0x8c5f3211, &vdso_zx_mtrace_control},
+ {"_zx_object_wait_one", 0xed850621, &vdso_zx_object_wait_one},
+ {"_zx_object_wait_many", 0x9e247bd4, &vdso_zx_object_wait_many},
+ {"_zx_object_wait_async", 0x61e4dcdd, &vdso_zx_object_wait_async},
+ {"_zx_object_signal", 0x460ab89, &vdso_zx_object_signal},
+ {"_zx_object_signal_peer", 0xe90c8694, &vdso_zx_object_signal_peer},
+ {"_zx_object_get_property", 0xd60c8aef, &vdso_zx_object_get_property},
+ {"_zx_object_set_property", 0x2174eb7b, &vdso_zx_object_set_property},
+ {"_zx_object_get_info", 0x7582ddf6, &vdso_zx_object_get_info},
+ {"_zx_object_get_child", 0x256ecc2e, &vdso_zx_object_get_child},
+ {"_zx_object_set_profile", 0x7d1d2727, &vdso_zx_object_set_profile},
+ {"_zx_pager_create", 0x8d44ed57, &vdso_zx_pager_create},
+ {"_zx_pager_create_vmo", 0x564fdd48, &vdso_zx_pager_create_vmo},
+ {"_zx_pager_detach_vmo", 0x2072c15d, &vdso_zx_pager_detach_vmo},
+ {"_zx_pager_supply_pages", 0x69d1fc7f, &vdso_zx_pager_supply_pages},
+ {"_zx_pager_op_range", 0x5e8195ae, &vdso_zx_pager_op_range},
+ {"_zx_pc_firmware_tables", 0x1a05d1fe, &vdso_zx_pc_firmware_tables},
+ {"_zx_pci_get_nth_device", 0x32106f08, &vdso_zx_pci_get_nth_device},
+ {"_zx_pci_enable_bus_master", 0x76091cab, &vdso_zx_pci_enable_bus_master},
+ {"_zx_pci_reset_device", 0xc6496142, &vdso_zx_pci_reset_device},
+ {"_zx_pci_config_read", 0xc765eb61, &vdso_zx_pci_config_read},
+ {"_zx_pci_config_write", 0xb4851770, &vdso_zx_pci_config_write},
+ {"_zx_pci_cfg_pio_rw", 0xda224f4f, &vdso_zx_pci_cfg_pio_rw},
+ {"_zx_pci_get_bar", 0x14ec9dc4, &vdso_zx_pci_get_bar},
+ {"_zx_pci_map_interrupt", 0x3c5aa3fa, &vdso_zx_pci_map_interrupt},
+ {"_zx_pci_query_irq_mode", 0xdf173875, &vdso_zx_pci_query_irq_mode},
+ {"_zx_pci_set_irq_mode", 0xedfcadcb, &vdso_zx_pci_set_irq_mode},
+ {"_zx_pci_init", 0x4db59c04, &vdso_zx_pci_init},
+ {"_zx_pci_add_subtract_io_range", 0x5fcd4b03, &vdso_zx_pci_add_subtract_io_range},
+ {"_zx_pmt_unpin", 0x8e954c6f, &vdso_zx_pmt_unpin},
+ {"_zx_port_create", 0x5294baed, &vdso_zx_port_create},
+ {"_zx_port_queue", 0x8f22883e, &vdso_zx_port_queue},
+ {"_zx_port_wait", 0xfc97666e, &vdso_zx_port_wait},
+ {"_zx_port_cancel", 0x5166105f, &vdso_zx_port_cancel},
+ {"_zx_process_exit", 0xc7f8a64d, &vdso_zx_process_exit},
+ {"_zx_process_create", 0xa3a21647, &vdso_zx_process_create},
+ {"_zx_process_start", 0xc80873a1, &vdso_zx_process_start},
+ {"_zx_process_read_memory", 0x883ab627, &vdso_zx_process_read_memory},
+ {"_zx_process_write_memory", 0x18162116, &vdso_zx_process_write_memory},
+ {"_zx_profile_create", 0x28e1bf39, &vdso_zx_profile_create},
+ {"_zx_resource_create", 0x22a0d150, &vdso_zx_resource_create},
+ {"_zx_smc_call", 0x63f0533, &vdso_zx_smc_call},
+ {"_zx_socket_create", 0xf536e851, &vdso_zx_socket_create},
+ {"_zx_socket_write", 0x5e2d97e8, &vdso_zx_socket_write},
+ {"_zx_socket_read", 0xb5443cd9, &vdso_zx_socket_read},
+ {"_zx_socket_shutdown", 0x78afef9, &vdso_zx_socket_shutdown},
+ {"_zx_stream_create", 0x5a685d14, &vdso_zx_stream_create},
+ {"_zx_stream_writev", 0x89120a21, &vdso_zx_stream_writev},
+ {"_zx_stream_writev_at", 0xcd618395, &vdso_zx_stream_writev_at},
+ {"_zx_stream_readv", 0xae7040d2, &vdso_zx_stream_readv},
+ {"_zx_stream_readv_at", 0x7bfd08a6, &vdso_zx_stream_readv_at},
+ {"_zx_stream_seek", 0xcefc31c8, &vdso_zx_stream_seek},
+ {"_zx_syscall_test_0", 0xb62fbcde, &vdso_zx_syscall_test_0},
+ {"_zx_syscall_test_1", 0xb62fbcdf, &vdso_zx_syscall_test_1},
+ {"_zx_syscall_test_2", 0xb62fbce0, &vdso_zx_syscall_test_2},
+ {"_zx_syscall_test_3", 0xb62fbce1, &vdso_zx_syscall_test_3},
+ {"_zx_syscall_test_4", 0xb62fbce2, &vdso_zx_syscall_test_4},
+ {"_zx_syscall_test_5", 0xb62fbce3, &vdso_zx_syscall_test_5},
+ {"_zx_syscall_test_6", 0xb62fbce4, &vdso_zx_syscall_test_6},
+ {"_zx_syscall_test_7", 0xb62fbce5, &vdso_zx_syscall_test_7},
+ {"_zx_syscall_test_8", 0xb62fbce6, &vdso_zx_syscall_test_8},
+ {"_zx_syscall_test_wrapper", 0x4d7af9cf, &vdso_zx_syscall_test_wrapper},
+ {"_zx_syscall_test_handle_create", 0xb996e56d, &vdso_zx_syscall_test_handle_create},
+ {"_zx_system_get_dcache_line_size", 0x2d6d6511, &vdso_zx_system_get_dcache_line_size},
+ {"_zx_system_get_num_cpus", 0x8e92a0c2, &vdso_zx_system_get_num_cpus},
+ {"_zx_system_get_version_string", 0xf2daeaf4, &vdso_zx_system_get_version_string},
+ {"_zx_system_get_page_size", 0x1495920f, &vdso_zx_system_get_page_size},
+ {"_zx_system_get_physmem", 0x5a0e027b, &vdso_zx_system_get_physmem},
+ {"_zx_system_get_features", 0x42682df7, &vdso_zx_system_get_features},
+ {"_zx_system_get_event", 0x7a0b68da, &vdso_zx_system_get_event},
+ {"_zx_system_mexec", 0xd142362b, &vdso_zx_system_mexec},
+ {"_zx_system_mexec_payload_get", 0x34bd22b3, &vdso_zx_system_mexec_payload_get},
+ {"_zx_system_powerctl", 0x43f6ae09, &vdso_zx_system_powerctl},
+ {"_zx_task_suspend", 0xe13ad509, &vdso_zx_task_suspend},
+ {"_zx_task_suspend_token", 0x341e98a9, &vdso_zx_task_suspend_token},
+ {"_zx_task_create_exception_channel", 0x5318f181, &vdso_zx_task_create_exception_channel},
+ {"_zx_task_kill", 0x1ae4e313, &vdso_zx_task_kill},
+ {"_zx_thread_exit", 0xed44fe6, &vdso_zx_thread_exit},
+ {"_zx_thread_create", 0x100e8a20, &vdso_zx_thread_create},
+ {"_zx_thread_start", 0xea59505a, &vdso_zx_thread_start},
+ {"_zx_thread_read_state", 0x82fd0a88, &vdso_zx_thread_read_state},
+ {"_zx_thread_write_state", 0xb9265eb7, &vdso_zx_thread_write_state},
+ {"_zx_timer_create", 0x943773a9, &vdso_zx_timer_create},
+ {"_zx_timer_set", 0xa2689081, &vdso_zx_timer_set},
+ {"_zx_timer_cancel", 0x9308c91b, &vdso_zx_timer_cancel},
+ {"_zx_vcpu_create", 0x458b1fc6, &vdso_zx_vcpu_create},
+ {"_zx_vcpu_resume", 0x67a54423, &vdso_zx_vcpu_resume},
+ {"_zx_vcpu_interrupt", 0x4ddc6df, &vdso_zx_vcpu_interrupt},
+ {"_zx_vcpu_read_state", 0xaa78032e, &vdso_zx_vcpu_read_state},
+ {"_zx_vcpu_write_state", 0xd0006c1d, &vdso_zx_vcpu_write_state},
+ {"_zx_vmar_allocate", 0x4cac85ef, &vdso_zx_vmar_allocate},
+ {"_zx_vmar_destroy", 0xc2294134, &vdso_zx_vmar_destroy},
+ {"_zx_vmar_map", 0xc7b00448, &vdso_zx_vmar_map},
+ {"_zx_vmar_unmap", 0x745a1b6b, &vdso_zx_vmar_unmap},
+ {"_zx_vmar_protect", 0x7bee8f8b, &vdso_zx_vmar_protect},
+ {"_zx_vmar_op_range", 0x4e117375, &vdso_zx_vmar_op_range},
+ {"_zx_vmo_create", 0xb27a765a, &vdso_zx_vmo_create},
+ {"_zx_vmo_read", 0xe70ab4a2, &vdso_zx_vmo_read},
+ {"_zx_vmo_write", 0xc8c308d1, &vdso_zx_vmo_write},
+ {"_zx_vmo_get_size", 0x261c77c0, &vdso_zx_vmo_get_size},
+ {"_zx_vmo_set_size", 0x3932724c, &vdso_zx_vmo_set_size},
+ {"_zx_vmo_op_range", 0xa73d6b71, &vdso_zx_vmo_op_range},
+ {"_zx_vmo_create_child", 0x72c8b3dd, &vdso_zx_vmo_create_child},
+ {"_zx_vmo_set_cache_policy", 0xe509bad4, &vdso_zx_vmo_set_cache_policy},
+ {"_zx_vmo_replace_as_executable", 0xbd38e576, &vdso_zx_vmo_replace_as_executable},
+ {"_zx_vmo_create_contiguous", 0x466a8289, &vdso_zx_vmo_create_contiguous},
+ {"_zx_vmo_create_physical", 0x659677b6, &vdso_zx_vmo_create_physical},
+}
+
+//go:cgo_import_dynamic vdso_zx_bti_create zx_bti_create
+//go:cgo_import_dynamic vdso_zx_bti_pin zx_bti_pin
+//go:cgo_import_dynamic vdso_zx_bti_release_quarantine zx_bti_release_quarantine
+//go:cgo_import_dynamic vdso_zx_cache_flush zx_cache_flush
+//go:cgo_import_dynamic vdso_zx_channel_create zx_channel_create
+//go:cgo_import_dynamic vdso_zx_channel_read zx_channel_read
+//go:cgo_import_dynamic vdso_zx_channel_read_etc zx_channel_read_etc
+//go:cgo_import_dynamic vdso_zx_channel_write zx_channel_write
+//go:cgo_import_dynamic vdso_zx_channel_write_etc zx_channel_write_etc
+//go:cgo_import_dynamic vdso_zx_channel_call_noretry zx_channel_call_noretry
+//go:cgo_import_dynamic vdso_zx_channel_call_finish zx_channel_call_finish
+//go:cgo_import_dynamic vdso_zx_channel_call zx_channel_call
+//go:cgo_import_dynamic vdso_zx_channel_call_etc_noretry zx_channel_call_etc_noretry
+//go:cgo_import_dynamic vdso_zx_channel_call_etc_finish zx_channel_call_etc_finish
+//go:cgo_import_dynamic vdso_zx_channel_call_etc zx_channel_call_etc
+//go:cgo_import_dynamic vdso_zx_clock_get_monotonic zx_clock_get_monotonic
+//go:cgo_import_dynamic vdso_zx_clock_get_monotonic_via_kernel zx_clock_get_monotonic_via_kernel
+//go:cgo_import_dynamic vdso_zx_clock_create zx_clock_create
+//go:cgo_import_dynamic vdso_zx_clock_read zx_clock_read
+//go:cgo_import_dynamic vdso_zx_clock_get_details zx_clock_get_details
+//go:cgo_import_dynamic vdso_zx_clock_update zx_clock_update
+//go:cgo_import_dynamic vdso_zx_cprng_draw_once zx_cprng_draw_once
+//go:cgo_import_dynamic vdso_zx_cprng_draw zx_cprng_draw
+//go:cgo_import_dynamic vdso_zx_cprng_add_entropy zx_cprng_add_entropy
+//go:cgo_import_dynamic vdso_zx_debug_read zx_debug_read
+//go:cgo_import_dynamic vdso_zx_debug_write zx_debug_write
+//go:cgo_import_dynamic vdso_zx_debug_send_command zx_debug_send_command
+//go:cgo_import_dynamic vdso_zx_debuglog_create zx_debuglog_create
+//go:cgo_import_dynamic vdso_zx_debuglog_write zx_debuglog_write
+//go:cgo_import_dynamic vdso_zx_debuglog_read zx_debuglog_read
+//go:cgo_import_dynamic vdso_zx_event_create zx_event_create
+//go:cgo_import_dynamic vdso_zx_eventpair_create zx_eventpair_create
+//go:cgo_import_dynamic vdso_zx_exception_get_thread zx_exception_get_thread
+//go:cgo_import_dynamic vdso_zx_exception_get_process zx_exception_get_process
+//go:cgo_import_dynamic vdso_zx_fifo_create zx_fifo_create
+//go:cgo_import_dynamic vdso_zx_fifo_read zx_fifo_read
+//go:cgo_import_dynamic vdso_zx_fifo_write zx_fifo_write
+//go:cgo_import_dynamic vdso_zx_framebuffer_get_info zx_framebuffer_get_info
+//go:cgo_import_dynamic vdso_zx_framebuffer_set_range zx_framebuffer_set_range
+//go:cgo_import_dynamic vdso_zx_futex_wait zx_futex_wait
+//go:cgo_import_dynamic vdso_zx_futex_wake zx_futex_wake
+//go:cgo_import_dynamic vdso_zx_futex_requeue zx_futex_requeue
+//go:cgo_import_dynamic vdso_zx_futex_wake_single_owner zx_futex_wake_single_owner
+//go:cgo_import_dynamic vdso_zx_futex_requeue_single_owner zx_futex_requeue_single_owner
+//go:cgo_import_dynamic vdso_zx_futex_get_owner zx_futex_get_owner
+//go:cgo_import_dynamic vdso_zx_guest_create zx_guest_create
+//go:cgo_import_dynamic vdso_zx_guest_set_trap zx_guest_set_trap
+//go:cgo_import_dynamic vdso_zx_handle_close zx_handle_close
+//go:cgo_import_dynamic vdso_zx_handle_close_many zx_handle_close_many
+//go:cgo_import_dynamic vdso_zx_handle_duplicate zx_handle_duplicate
+//go:cgo_import_dynamic vdso_zx_handle_replace zx_handle_replace
+//go:cgo_import_dynamic vdso_zx_interrupt_create zx_interrupt_create
+//go:cgo_import_dynamic vdso_zx_interrupt_bind zx_interrupt_bind
+//go:cgo_import_dynamic vdso_zx_interrupt_wait zx_interrupt_wait
+//go:cgo_import_dynamic vdso_zx_interrupt_destroy zx_interrupt_destroy
+//go:cgo_import_dynamic vdso_zx_interrupt_ack zx_interrupt_ack
+//go:cgo_import_dynamic vdso_zx_interrupt_trigger zx_interrupt_trigger
+//go:cgo_import_dynamic vdso_zx_interrupt_bind_vcpu zx_interrupt_bind_vcpu
+//go:cgo_import_dynamic vdso_zx_iommu_create zx_iommu_create
+//go:cgo_import_dynamic vdso_zx_ioports_request zx_ioports_request
+//go:cgo_import_dynamic vdso_zx_ioports_release zx_ioports_release
+//go:cgo_import_dynamic vdso_zx_job_create zx_job_create
+//go:cgo_import_dynamic vdso_zx_job_set_policy zx_job_set_policy
+//go:cgo_import_dynamic vdso_zx_job_set_critical zx_job_set_critical
+//go:cgo_import_dynamic vdso_zx_ktrace_read zx_ktrace_read
+//go:cgo_import_dynamic vdso_zx_ktrace_control zx_ktrace_control
+//go:cgo_import_dynamic vdso_zx_ktrace_write zx_ktrace_write
+//go:cgo_import_dynamic vdso_zx_nanosleep zx_nanosleep
+//go:cgo_import_dynamic vdso_zx_ticks_get zx_ticks_get
+//go:cgo_import_dynamic vdso_zx_ticks_per_second zx_ticks_per_second
+//go:cgo_import_dynamic vdso_zx_deadline_after zx_deadline_after
+//go:cgo_import_dynamic vdso_zx_vmar_unmap_handle_close_thread_exit zx_vmar_unmap_handle_close_thread_exit
+//go:cgo_import_dynamic vdso_zx_futex_wake_handle_close_thread_exit zx_futex_wake_handle_close_thread_exit
+//go:cgo_import_dynamic vdso_zx_ticks_get_via_kernel zx_ticks_get_via_kernel
+//go:cgo_import_dynamic vdso_zx_msi_allocate zx_msi_allocate
+//go:cgo_import_dynamic vdso_zx_msi_create zx_msi_create
+//go:cgo_import_dynamic vdso_zx_mtrace_control zx_mtrace_control
+//go:cgo_import_dynamic vdso_zx_object_wait_one zx_object_wait_one
+//go:cgo_import_dynamic vdso_zx_object_wait_many zx_object_wait_many
+//go:cgo_import_dynamic vdso_zx_object_wait_async zx_object_wait_async
+//go:cgo_import_dynamic vdso_zx_object_signal zx_object_signal
+//go:cgo_import_dynamic vdso_zx_object_signal_peer zx_object_signal_peer
+//go:cgo_import_dynamic vdso_zx_object_get_property zx_object_get_property
+//go:cgo_import_dynamic vdso_zx_object_set_property zx_object_set_property
+//go:cgo_import_dynamic vdso_zx_object_get_info zx_object_get_info
+//go:cgo_import_dynamic vdso_zx_object_get_child zx_object_get_child
+//go:cgo_import_dynamic vdso_zx_object_set_profile zx_object_set_profile
+//go:cgo_import_dynamic vdso_zx_pager_create zx_pager_create
+//go:cgo_import_dynamic vdso_zx_pager_create_vmo zx_pager_create_vmo
+//go:cgo_import_dynamic vdso_zx_pager_detach_vmo zx_pager_detach_vmo
+//go:cgo_import_dynamic vdso_zx_pager_supply_pages zx_pager_supply_pages
+//go:cgo_import_dynamic vdso_zx_pager_op_range zx_pager_op_range
+//go:cgo_import_dynamic vdso_zx_pc_firmware_tables zx_pc_firmware_tables
+//go:cgo_import_dynamic vdso_zx_pci_get_nth_device zx_pci_get_nth_device
+//go:cgo_import_dynamic vdso_zx_pci_enable_bus_master zx_pci_enable_bus_master
+//go:cgo_import_dynamic vdso_zx_pci_reset_device zx_pci_reset_device
+//go:cgo_import_dynamic vdso_zx_pci_config_read zx_pci_config_read
+//go:cgo_import_dynamic vdso_zx_pci_config_write zx_pci_config_write
+//go:cgo_import_dynamic vdso_zx_pci_cfg_pio_rw zx_pci_cfg_pio_rw
+//go:cgo_import_dynamic vdso_zx_pci_get_bar zx_pci_get_bar
+//go:cgo_import_dynamic vdso_zx_pci_map_interrupt zx_pci_map_interrupt
+//go:cgo_import_dynamic vdso_zx_pci_query_irq_mode zx_pci_query_irq_mode
+//go:cgo_import_dynamic vdso_zx_pci_set_irq_mode zx_pci_set_irq_mode
+//go:cgo_import_dynamic vdso_zx_pci_init zx_pci_init
+//go:cgo_import_dynamic vdso_zx_pci_add_subtract_io_range zx_pci_add_subtract_io_range
+//go:cgo_import_dynamic vdso_zx_pmt_unpin zx_pmt_unpin
+//go:cgo_import_dynamic vdso_zx_port_create zx_port_create
+//go:cgo_import_dynamic vdso_zx_port_queue zx_port_queue
+//go:cgo_import_dynamic vdso_zx_port_wait zx_port_wait
+//go:cgo_import_dynamic vdso_zx_port_cancel zx_port_cancel
+//go:cgo_import_dynamic vdso_zx_process_exit zx_process_exit
+//go:cgo_import_dynamic vdso_zx_process_create zx_process_create
+//go:cgo_import_dynamic vdso_zx_process_start zx_process_start
+//go:cgo_import_dynamic vdso_zx_process_read_memory zx_process_read_memory
+//go:cgo_import_dynamic vdso_zx_process_write_memory zx_process_write_memory
+//go:cgo_import_dynamic vdso_zx_profile_create zx_profile_create
+//go:cgo_import_dynamic vdso_zx_resource_create zx_resource_create
+//go:cgo_import_dynamic vdso_zx_smc_call zx_smc_call
+//go:cgo_import_dynamic vdso_zx_socket_create zx_socket_create
+//go:cgo_import_dynamic vdso_zx_socket_write zx_socket_write
+//go:cgo_import_dynamic vdso_zx_socket_read zx_socket_read
+//go:cgo_import_dynamic vdso_zx_socket_shutdown zx_socket_shutdown
+//go:cgo_import_dynamic vdso_zx_stream_create zx_stream_create
+//go:cgo_import_dynamic vdso_zx_stream_writev zx_stream_writev
+//go:cgo_import_dynamic vdso_zx_stream_writev_at zx_stream_writev_at
+//go:cgo_import_dynamic vdso_zx_stream_readv zx_stream_readv
+//go:cgo_import_dynamic vdso_zx_stream_readv_at zx_stream_readv_at
+//go:cgo_import_dynamic vdso_zx_stream_seek zx_stream_seek
+//go:cgo_import_dynamic vdso_zx_syscall_test_0 zx_syscall_test_0
+//go:cgo_import_dynamic vdso_zx_syscall_test_1 zx_syscall_test_1
+//go:cgo_import_dynamic vdso_zx_syscall_test_2 zx_syscall_test_2
+//go:cgo_import_dynamic vdso_zx_syscall_test_3 zx_syscall_test_3
+//go:cgo_import_dynamic vdso_zx_syscall_test_4 zx_syscall_test_4
+//go:cgo_import_dynamic vdso_zx_syscall_test_5 zx_syscall_test_5
+//go:cgo_import_dynamic vdso_zx_syscall_test_6 zx_syscall_test_6
+//go:cgo_import_dynamic vdso_zx_syscall_test_7 zx_syscall_test_7
+//go:cgo_import_dynamic vdso_zx_syscall_test_8 zx_syscall_test_8
+//go:cgo_import_dynamic vdso_zx_syscall_test_wrapper zx_syscall_test_wrapper
+//go:cgo_import_dynamic vdso_zx_syscall_test_handle_create zx_syscall_test_handle_create
+//go:cgo_import_dynamic vdso_zx_system_get_dcache_line_size zx_system_get_dcache_line_size
+//go:cgo_import_dynamic vdso_zx_system_get_num_cpus zx_system_get_num_cpus
+//go:cgo_import_dynamic vdso_zx_system_get_version_string zx_system_get_version_string
+//go:cgo_import_dynamic vdso_zx_system_get_page_size zx_system_get_page_size
+//go:cgo_import_dynamic vdso_zx_system_get_physmem zx_system_get_physmem
+//go:cgo_import_dynamic vdso_zx_system_get_features zx_system_get_features
+//go:cgo_import_dynamic vdso_zx_system_get_event zx_system_get_event
+//go:cgo_import_dynamic vdso_zx_system_mexec zx_system_mexec
+//go:cgo_import_dynamic vdso_zx_system_mexec_payload_get zx_system_mexec_payload_get
+//go:cgo_import_dynamic vdso_zx_system_powerctl zx_system_powerctl
+//go:cgo_import_dynamic vdso_zx_task_suspend zx_task_suspend
+//go:cgo_import_dynamic vdso_zx_task_suspend_token zx_task_suspend_token
+//go:cgo_import_dynamic vdso_zx_task_create_exception_channel zx_task_create_exception_channel
+//go:cgo_import_dynamic vdso_zx_task_kill zx_task_kill
+//go:cgo_import_dynamic vdso_zx_thread_exit zx_thread_exit
+//go:cgo_import_dynamic vdso_zx_thread_create zx_thread_create
+//go:cgo_import_dynamic vdso_zx_thread_start zx_thread_start
+//go:cgo_import_dynamic vdso_zx_thread_read_state zx_thread_read_state
+//go:cgo_import_dynamic vdso_zx_thread_write_state zx_thread_write_state
+//go:cgo_import_dynamic vdso_zx_timer_create zx_timer_create
+//go:cgo_import_dynamic vdso_zx_timer_set zx_timer_set
+//go:cgo_import_dynamic vdso_zx_timer_cancel zx_timer_cancel
+//go:cgo_import_dynamic vdso_zx_vcpu_create zx_vcpu_create
+//go:cgo_import_dynamic vdso_zx_vcpu_resume zx_vcpu_resume
+//go:cgo_import_dynamic vdso_zx_vcpu_interrupt zx_vcpu_interrupt
+//go:cgo_import_dynamic vdso_zx_vcpu_read_state zx_vcpu_read_state
+//go:cgo_import_dynamic vdso_zx_vcpu_write_state zx_vcpu_write_state
+//go:cgo_import_dynamic vdso_zx_vmar_allocate zx_vmar_allocate
+//go:cgo_import_dynamic vdso_zx_vmar_destroy zx_vmar_destroy
+//go:cgo_import_dynamic vdso_zx_vmar_map zx_vmar_map
+//go:cgo_import_dynamic vdso_zx_vmar_unmap zx_vmar_unmap
+//go:cgo_import_dynamic vdso_zx_vmar_protect zx_vmar_protect
+//go:cgo_import_dynamic vdso_zx_vmar_op_range zx_vmar_op_range
+//go:cgo_import_dynamic vdso_zx_vmo_create zx_vmo_create
+//go:cgo_import_dynamic vdso_zx_vmo_read zx_vmo_read
+//go:cgo_import_dynamic vdso_zx_vmo_write zx_vmo_write
+//go:cgo_import_dynamic vdso_zx_vmo_get_size zx_vmo_get_size
+//go:cgo_import_dynamic vdso_zx_vmo_set_size zx_vmo_set_size
+//go:cgo_import_dynamic vdso_zx_vmo_op_range zx_vmo_op_range
+//go:cgo_import_dynamic vdso_zx_vmo_create_child zx_vmo_create_child
+//go:cgo_import_dynamic vdso_zx_vmo_set_cache_policy zx_vmo_set_cache_policy
+//go:cgo_import_dynamic vdso_zx_vmo_replace_as_executable zx_vmo_replace_as_executable
+//go:cgo_import_dynamic vdso_zx_vmo_create_contiguous zx_vmo_create_contiguous
+//go:cgo_import_dynamic vdso_zx_vmo_create_physical zx_vmo_create_physical
+
+//go:linkname vdso_zx_bti_create vdso_zx_bti_create
+//go:linkname vdso_zx_bti_pin vdso_zx_bti_pin
+//go:linkname vdso_zx_bti_release_quarantine vdso_zx_bti_release_quarantine
+//go:linkname vdso_zx_cache_flush vdso_zx_cache_flush
+//go:linkname vdso_zx_channel_create vdso_zx_channel_create
+//go:linkname vdso_zx_channel_read vdso_zx_channel_read
+//go:linkname vdso_zx_channel_read_etc vdso_zx_channel_read_etc
+//go:linkname vdso_zx_channel_write vdso_zx_channel_write
+//go:linkname vdso_zx_channel_write_etc vdso_zx_channel_write_etc
+//go:linkname vdso_zx_channel_call_noretry vdso_zx_channel_call_noretry
+//go:linkname vdso_zx_channel_call_finish vdso_zx_channel_call_finish
+//go:linkname vdso_zx_channel_call vdso_zx_channel_call
+//go:linkname vdso_zx_channel_call_etc_noretry vdso_zx_channel_call_etc_noretry
+//go:linkname vdso_zx_channel_call_etc_finish vdso_zx_channel_call_etc_finish
+//go:linkname vdso_zx_channel_call_etc vdso_zx_channel_call_etc
+//go:linkname vdso_zx_clock_get_monotonic vdso_zx_clock_get_monotonic
+//go:linkname vdso_zx_clock_get_monotonic_via_kernel vdso_zx_clock_get_monotonic_via_kernel
+//go:linkname vdso_zx_clock_create vdso_zx_clock_create
+//go:linkname vdso_zx_clock_read vdso_zx_clock_read
+//go:linkname vdso_zx_clock_get_details vdso_zx_clock_get_details
+//go:linkname vdso_zx_clock_update vdso_zx_clock_update
+//go:linkname vdso_zx_cprng_draw_once vdso_zx_cprng_draw_once
+//go:linkname vdso_zx_cprng_draw vdso_zx_cprng_draw
+//go:linkname vdso_zx_cprng_add_entropy vdso_zx_cprng_add_entropy
+//go:linkname vdso_zx_debug_read vdso_zx_debug_read
+//go:linkname vdso_zx_debug_write vdso_zx_debug_write
+//go:linkname vdso_zx_debug_send_command vdso_zx_debug_send_command
+//go:linkname vdso_zx_debuglog_create vdso_zx_debuglog_create
+//go:linkname vdso_zx_debuglog_write vdso_zx_debuglog_write
+//go:linkname vdso_zx_debuglog_read vdso_zx_debuglog_read
+//go:linkname vdso_zx_event_create vdso_zx_event_create
+//go:linkname vdso_zx_eventpair_create vdso_zx_eventpair_create
+//go:linkname vdso_zx_exception_get_thread vdso_zx_exception_get_thread
+//go:linkname vdso_zx_exception_get_process vdso_zx_exception_get_process
+//go:linkname vdso_zx_fifo_create vdso_zx_fifo_create
+//go:linkname vdso_zx_fifo_read vdso_zx_fifo_read
+//go:linkname vdso_zx_fifo_write vdso_zx_fifo_write
+//go:linkname vdso_zx_framebuffer_get_info vdso_zx_framebuffer_get_info
+//go:linkname vdso_zx_framebuffer_set_range vdso_zx_framebuffer_set_range
+//go:linkname vdso_zx_futex_wait vdso_zx_futex_wait
+//go:linkname vdso_zx_futex_wake vdso_zx_futex_wake
+//go:linkname vdso_zx_futex_requeue vdso_zx_futex_requeue
+//go:linkname vdso_zx_futex_wake_single_owner vdso_zx_futex_wake_single_owner
+//go:linkname vdso_zx_futex_requeue_single_owner vdso_zx_futex_requeue_single_owner
+//go:linkname vdso_zx_futex_get_owner vdso_zx_futex_get_owner
+//go:linkname vdso_zx_guest_create vdso_zx_guest_create
+//go:linkname vdso_zx_guest_set_trap vdso_zx_guest_set_trap
+//go:linkname vdso_zx_handle_close vdso_zx_handle_close
+//go:linkname vdso_zx_handle_close_many vdso_zx_handle_close_many
+//go:linkname vdso_zx_handle_duplicate vdso_zx_handle_duplicate
+//go:linkname vdso_zx_handle_replace vdso_zx_handle_replace
+//go:linkname vdso_zx_interrupt_create vdso_zx_interrupt_create
+//go:linkname vdso_zx_interrupt_bind vdso_zx_interrupt_bind
+//go:linkname vdso_zx_interrupt_wait vdso_zx_interrupt_wait
+//go:linkname vdso_zx_interrupt_destroy vdso_zx_interrupt_destroy
+//go:linkname vdso_zx_interrupt_ack vdso_zx_interrupt_ack
+//go:linkname vdso_zx_interrupt_trigger vdso_zx_interrupt_trigger
+//go:linkname vdso_zx_interrupt_bind_vcpu vdso_zx_interrupt_bind_vcpu
+//go:linkname vdso_zx_iommu_create vdso_zx_iommu_create
+//go:linkname vdso_zx_ioports_request vdso_zx_ioports_request
+//go:linkname vdso_zx_ioports_release vdso_zx_ioports_release
+//go:linkname vdso_zx_job_create vdso_zx_job_create
+//go:linkname vdso_zx_job_set_policy vdso_zx_job_set_policy
+//go:linkname vdso_zx_job_set_critical vdso_zx_job_set_critical
+//go:linkname vdso_zx_ktrace_read vdso_zx_ktrace_read
+//go:linkname vdso_zx_ktrace_control vdso_zx_ktrace_control
+//go:linkname vdso_zx_ktrace_write vdso_zx_ktrace_write
+//go:linkname vdso_zx_nanosleep vdso_zx_nanosleep
+//go:linkname vdso_zx_ticks_get vdso_zx_ticks_get
+//go:linkname vdso_zx_ticks_per_second vdso_zx_ticks_per_second
+//go:linkname vdso_zx_deadline_after vdso_zx_deadline_after
+//go:linkname vdso_zx_vmar_unmap_handle_close_thread_exit vdso_zx_vmar_unmap_handle_close_thread_exit
+//go:linkname vdso_zx_futex_wake_handle_close_thread_exit vdso_zx_futex_wake_handle_close_thread_exit
+//go:linkname vdso_zx_ticks_get_via_kernel vdso_zx_ticks_get_via_kernel
+//go:linkname vdso_zx_msi_allocate vdso_zx_msi_allocate
+//go:linkname vdso_zx_msi_create vdso_zx_msi_create
+//go:linkname vdso_zx_mtrace_control vdso_zx_mtrace_control
+//go:linkname vdso_zx_object_wait_one vdso_zx_object_wait_one
+//go:linkname vdso_zx_object_wait_many vdso_zx_object_wait_many
+//go:linkname vdso_zx_object_wait_async vdso_zx_object_wait_async
+//go:linkname vdso_zx_object_signal vdso_zx_object_signal
+//go:linkname vdso_zx_object_signal_peer vdso_zx_object_signal_peer
+//go:linkname vdso_zx_object_get_property vdso_zx_object_get_property
+//go:linkname vdso_zx_object_set_property vdso_zx_object_set_property
+//go:linkname vdso_zx_object_get_info vdso_zx_object_get_info
+//go:linkname vdso_zx_object_get_child vdso_zx_object_get_child
+//go:linkname vdso_zx_object_set_profile vdso_zx_object_set_profile
+//go:linkname vdso_zx_pager_create vdso_zx_pager_create
+//go:linkname vdso_zx_pager_create_vmo vdso_zx_pager_create_vmo
+//go:linkname vdso_zx_pager_detach_vmo vdso_zx_pager_detach_vmo
+//go:linkname vdso_zx_pager_supply_pages vdso_zx_pager_supply_pages
+//go:linkname vdso_zx_pager_op_range vdso_zx_pager_op_range
+//go:linkname vdso_zx_pc_firmware_tables vdso_zx_pc_firmware_tables
+//go:linkname vdso_zx_pci_get_nth_device vdso_zx_pci_get_nth_device
+//go:linkname vdso_zx_pci_enable_bus_master vdso_zx_pci_enable_bus_master
+//go:linkname vdso_zx_pci_reset_device vdso_zx_pci_reset_device
+//go:linkname vdso_zx_pci_config_read vdso_zx_pci_config_read
+//go:linkname vdso_zx_pci_config_write vdso_zx_pci_config_write
+//go:linkname vdso_zx_pci_cfg_pio_rw vdso_zx_pci_cfg_pio_rw
+//go:linkname vdso_zx_pci_get_bar vdso_zx_pci_get_bar
+//go:linkname vdso_zx_pci_map_interrupt vdso_zx_pci_map_interrupt
+//go:linkname vdso_zx_pci_query_irq_mode vdso_zx_pci_query_irq_mode
+//go:linkname vdso_zx_pci_set_irq_mode vdso_zx_pci_set_irq_mode
+//go:linkname vdso_zx_pci_init vdso_zx_pci_init
+//go:linkname vdso_zx_pci_add_subtract_io_range vdso_zx_pci_add_subtract_io_range
+//go:linkname vdso_zx_pmt_unpin vdso_zx_pmt_unpin
+//go:linkname vdso_zx_port_create vdso_zx_port_create
+//go:linkname vdso_zx_port_queue vdso_zx_port_queue
+//go:linkname vdso_zx_port_wait vdso_zx_port_wait
+//go:linkname vdso_zx_port_cancel vdso_zx_port_cancel
+//go:linkname vdso_zx_process_exit vdso_zx_process_exit
+//go:linkname vdso_zx_process_create vdso_zx_process_create
+//go:linkname vdso_zx_process_start vdso_zx_process_start
+//go:linkname vdso_zx_process_read_memory vdso_zx_process_read_memory
+//go:linkname vdso_zx_process_write_memory vdso_zx_process_write_memory
+//go:linkname vdso_zx_profile_create vdso_zx_profile_create
+//go:linkname vdso_zx_resource_create vdso_zx_resource_create
+//go:linkname vdso_zx_smc_call vdso_zx_smc_call
+//go:linkname vdso_zx_socket_create vdso_zx_socket_create
+//go:linkname vdso_zx_socket_write vdso_zx_socket_write
+//go:linkname vdso_zx_socket_read vdso_zx_socket_read
+//go:linkname vdso_zx_socket_shutdown vdso_zx_socket_shutdown
+//go:linkname vdso_zx_stream_create vdso_zx_stream_create
+//go:linkname vdso_zx_stream_writev vdso_zx_stream_writev
+//go:linkname vdso_zx_stream_writev_at vdso_zx_stream_writev_at
+//go:linkname vdso_zx_stream_readv vdso_zx_stream_readv
+//go:linkname vdso_zx_stream_readv_at vdso_zx_stream_readv_at
+//go:linkname vdso_zx_stream_seek vdso_zx_stream_seek
+//go:linkname vdso_zx_syscall_test_0 vdso_zx_syscall_test_0
+//go:linkname vdso_zx_syscall_test_1 vdso_zx_syscall_test_1
+//go:linkname vdso_zx_syscall_test_2 vdso_zx_syscall_test_2
+//go:linkname vdso_zx_syscall_test_3 vdso_zx_syscall_test_3
+//go:linkname vdso_zx_syscall_test_4 vdso_zx_syscall_test_4
+//go:linkname vdso_zx_syscall_test_5 vdso_zx_syscall_test_5
+//go:linkname vdso_zx_syscall_test_6 vdso_zx_syscall_test_6
+//go:linkname vdso_zx_syscall_test_7 vdso_zx_syscall_test_7
+//go:linkname vdso_zx_syscall_test_8 vdso_zx_syscall_test_8
+//go:linkname vdso_zx_syscall_test_wrapper vdso_zx_syscall_test_wrapper
+//go:linkname vdso_zx_syscall_test_handle_create vdso_zx_syscall_test_handle_create
+//go:linkname vdso_zx_system_get_dcache_line_size vdso_zx_system_get_dcache_line_size
+//go:linkname vdso_zx_system_get_num_cpus vdso_zx_system_get_num_cpus
+//go:linkname vdso_zx_system_get_version_string vdso_zx_system_get_version_string
+//go:linkname vdso_zx_system_get_page_size vdso_zx_system_get_page_size
+//go:linkname vdso_zx_system_get_physmem vdso_zx_system_get_physmem
+//go:linkname vdso_zx_system_get_features vdso_zx_system_get_features
+//go:linkname vdso_zx_system_get_event vdso_zx_system_get_event
+//go:linkname vdso_zx_system_mexec vdso_zx_system_mexec
+//go:linkname vdso_zx_system_mexec_payload_get vdso_zx_system_mexec_payload_get
+//go:linkname vdso_zx_system_powerctl vdso_zx_system_powerctl
+//go:linkname vdso_zx_task_suspend vdso_zx_task_suspend
+//go:linkname vdso_zx_task_suspend_token vdso_zx_task_suspend_token
+//go:linkname vdso_zx_task_create_exception_channel vdso_zx_task_create_exception_channel
+//go:linkname vdso_zx_task_kill vdso_zx_task_kill
+//go:linkname vdso_zx_thread_exit vdso_zx_thread_exit
+//go:linkname vdso_zx_thread_create vdso_zx_thread_create
+//go:linkname vdso_zx_thread_start vdso_zx_thread_start
+//go:linkname vdso_zx_thread_read_state vdso_zx_thread_read_state
+//go:linkname vdso_zx_thread_write_state vdso_zx_thread_write_state
+//go:linkname vdso_zx_timer_create vdso_zx_timer_create
+//go:linkname vdso_zx_timer_set vdso_zx_timer_set
+//go:linkname vdso_zx_timer_cancel vdso_zx_timer_cancel
+//go:linkname vdso_zx_vcpu_create vdso_zx_vcpu_create
+//go:linkname vdso_zx_vcpu_resume vdso_zx_vcpu_resume
+//go:linkname vdso_zx_vcpu_interrupt vdso_zx_vcpu_interrupt
+//go:linkname vdso_zx_vcpu_read_state vdso_zx_vcpu_read_state
+//go:linkname vdso_zx_vcpu_write_state vdso_zx_vcpu_write_state
+//go:linkname vdso_zx_vmar_allocate vdso_zx_vmar_allocate
+//go:linkname vdso_zx_vmar_destroy vdso_zx_vmar_destroy
+//go:linkname vdso_zx_vmar_map vdso_zx_vmar_map
+//go:linkname vdso_zx_vmar_unmap vdso_zx_vmar_unmap
+//go:linkname vdso_zx_vmar_protect vdso_zx_vmar_protect
+//go:linkname vdso_zx_vmar_op_range vdso_zx_vmar_op_range
+//go:linkname vdso_zx_vmo_create vdso_zx_vmo_create
+//go:linkname vdso_zx_vmo_read vdso_zx_vmo_read
+//go:linkname vdso_zx_vmo_write vdso_zx_vmo_write
+//go:linkname vdso_zx_vmo_get_size vdso_zx_vmo_get_size
+//go:linkname vdso_zx_vmo_set_size vdso_zx_vmo_set_size
+//go:linkname vdso_zx_vmo_op_range vdso_zx_vmo_op_range
+//go:linkname vdso_zx_vmo_create_child vdso_zx_vmo_create_child
+//go:linkname vdso_zx_vmo_set_cache_policy vdso_zx_vmo_set_cache_policy
+//go:linkname vdso_zx_vmo_replace_as_executable vdso_zx_vmo_replace_as_executable
+//go:linkname vdso_zx_vmo_create_contiguous vdso_zx_vmo_create_contiguous
+//go:linkname vdso_zx_vmo_create_physical vdso_zx_vmo_create_physical
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_bti_create(iommu uint32, options uint32, bti_id uint64, out unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_bti_pin(handle uint32, options uint32, vmo uint32, offset uint64, size uint64, addrs unsafe.Pointer, num_addrs uint, pmt unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_bti_release_quarantine(handle uint32) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_cache_flush(addr unsafe.Pointer, size uint, options uint32) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_channel_create(options uint32, out0 unsafe.Pointer, out1 unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_channel_read(handle uint32, options uint32, bytes unsafe.Pointer, handles unsafe.Pointer, num_bytes uint32, num_handles uint32, actual_bytes unsafe.Pointer, actual_handles unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_channel_read_etc(handle uint32, options uint32, bytes unsafe.Pointer, handles unsafe.Pointer, num_bytes uint32, num_handles uint32, actual_bytes unsafe.Pointer, actual_handles unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_channel_write(handle uint32, options uint32, bytes unsafe.Pointer, num_bytes uint32, handles unsafe.Pointer, num_handles uint32) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_channel_write_etc(handle uint32, options uint32, bytes unsafe.Pointer, num_bytes uint32, handles unsafe.Pointer, num_handles uint32) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_channel_call_noretry(handle uint32, options uint32, deadline int64, args unsafe.Pointer, actual_bytes unsafe.Pointer, actual_handles unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_channel_call_finish(deadline int64, args unsafe.Pointer, actual_bytes unsafe.Pointer, actual_handles unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_channel_call(handle uint32, options uint32, deadline int64, args unsafe.Pointer, actual_bytes unsafe.Pointer, actual_handles unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_channel_call_etc_noretry(handle uint32, options uint32, deadline int64, args unsafe.Pointer, actual_bytes unsafe.Pointer, actual_handles unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_channel_call_etc_finish(deadline int64, args unsafe.Pointer, actual_bytes unsafe.Pointer, actual_handles unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_channel_call_etc(handle uint32, options uint32, deadline int64, args unsafe.Pointer, actual_bytes unsafe.Pointer, actual_handles unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_clock_get_monotonic() int64
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_clock_get_monotonic_via_kernel() int64
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_clock_create(options uint64, args unsafe.Pointer, out unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_clock_read(handle uint32, now unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_clock_get_details(handle uint32, options uint64, details unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_clock_update(handle uint32, options uint64, args unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_cprng_draw_once(buffer unsafe.Pointer, buffer_size uint) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_cprng_draw(buffer unsafe.Pointer, buffer_size uint)
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_cprng_add_entropy(buffer unsafe.Pointer, buffer_size uint) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_debug_read(handle uint32, buffer unsafe.Pointer, buffer_size uint, actual unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_debug_write(buffer unsafe.Pointer, buffer_size uint) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_debug_send_command(resource uint32, buffer unsafe.Pointer, buffer_size uint) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_debuglog_create(resource uint32, options uint32, out unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_debuglog_write(handle uint32, options uint32, buffer unsafe.Pointer, buffer_size uint) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_debuglog_read(handle uint32, options uint32, buffer unsafe.Pointer, buffer_size uint) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_event_create(options uint32, out unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_eventpair_create(options uint32, out0 unsafe.Pointer, out1 unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_exception_get_thread(handle uint32, out unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_exception_get_process(handle uint32, out unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_fifo_create(elem_count uint, elem_size uint, options uint32, out0 unsafe.Pointer, out1 unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_fifo_read(handle uint32, elem_size uint, data unsafe.Pointer, data_size uint, actual_count unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_fifo_write(handle uint32, elem_size uint, data unsafe.Pointer, count uint, actual_count unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_framebuffer_get_info(resource uint32, format unsafe.Pointer, width unsafe.Pointer, height unsafe.Pointer, stride unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_framebuffer_set_range(resource uint32, vmo uint32, len uint32, format uint32, width uint32, height uint32, stride uint32) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_futex_wait(value_ptr unsafe.Pointer, current_value int32, new_futex_owner uint32, deadline int64) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_futex_wake(value_ptr unsafe.Pointer, wake_count uint32) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_futex_requeue(value_ptr unsafe.Pointer, wake_count uint32, current_value int32, requeue_ptr unsafe.Pointer, requeue_count uint32, new_requeue_owner uint32) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_futex_wake_single_owner(value_ptr unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_futex_requeue_single_owner(value_ptr unsafe.Pointer, current_value int32, requeue_ptr unsafe.Pointer, requeue_count uint32, new_requeue_owner uint32) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_futex_get_owner(value_ptr unsafe.Pointer, koid unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_guest_create(resource uint32, options uint32, guest_handle unsafe.Pointer, vmar_handle unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_guest_set_trap(handle uint32, kind uint32, addr uintptr, size uint, port_handle uint32, key uint64) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_handle_close(handle uint32) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_handle_close_many(handles unsafe.Pointer, num_handles uint) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_handle_duplicate(handle uint32, rights uint32, out unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_handle_replace(handle uint32, rights uint32, out unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_interrupt_create(src_obj uint32, src_num uint32, options uint32, out_handle unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_interrupt_bind(handle uint32, port_handle uint32, key uint64, options uint32) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_interrupt_wait(handle uint32, out_timestamp unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_interrupt_destroy(handle uint32) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_interrupt_ack(handle uint32) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_interrupt_trigger(handle uint32, options uint32, timestamp int64) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_interrupt_bind_vcpu(handle uint32, vcpu uint32, options uint32) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_iommu_create(resource uint32, typ uint32, desc unsafe.Pointer, desc_size uint, out unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_ioports_request(resource uint32, io_addr uint16, len uint32) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_ioports_release(resource uint32, io_addr uint16, len uint32) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_job_create(parent_job uint32, options uint32, out unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_job_set_policy(handle uint32, options uint32, topic uint32, policy unsafe.Pointer, policy_size uint32) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_job_set_critical(job uint32, options uint32, process uint32) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_ktrace_read(handle uint32, data unsafe.Pointer, offset uint32, data_size uint, actual unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_ktrace_control(handle uint32, action uint32, options uint32, ptr unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_ktrace_write(handle uint32, id uint32, arg0 uint32, arg1 uint32) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_nanosleep(deadline int64) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_ticks_get() int64
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_ticks_per_second() int64
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_deadline_after(nanoseconds int64) int64
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_vmar_unmap_handle_close_thread_exit(vmar_handle uint32, addr uintptr, size uint, close_handle uint32) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_futex_wake_handle_close_thread_exit(value_ptr unsafe.Pointer, wake_count uint32, new_value int32, close_handle uint32)
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_ticks_get_via_kernel() int64
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_msi_allocate(handle uint32, count uint32, out_allocation unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_msi_create(handle uint32, options uint32, msi_id uint32, vmo uint32, vmo_offset uint, out_interrupt unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_mtrace_control(handle uint32, kind uint32, action uint32, options uint32, ptr unsafe.Pointer, ptr_size uint) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_object_wait_one(handle uint32, signals uint32, deadline int64, observed unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_object_wait_many(items unsafe.Pointer, num_items uint, deadline int64) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_object_wait_async(handle uint32, port uint32, key uint64, signals uint32, options uint32) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_object_signal(handle uint32, clear_mask uint32, set_mask uint32) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_object_signal_peer(handle uint32, clear_mask uint32, set_mask uint32) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_object_get_property(handle uint32, property uint32, value unsafe.Pointer, value_size uint) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_object_set_property(handle uint32, property uint32, value unsafe.Pointer, value_size uint) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_object_get_info(handle uint32, topic uint32, buffer unsafe.Pointer, buffer_size uint, actual unsafe.Pointer, avail unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_object_get_child(handle uint32, koid uint64, rights uint32, out unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_object_set_profile(handle uint32, profile uint32, options uint32) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_pager_create(options uint32, out unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_pager_create_vmo(pager uint32, options uint32, port uint32, key uint64, size uint64, out unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_pager_detach_vmo(pager uint32, vmo uint32) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_pager_supply_pages(pager uint32, pager_vmo uint32, offset uint64, length uint64, aux_vmo uint32, aux_offset uint64) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_pager_op_range(pager uint32, op uint32, pager_vmo uint32, offset uint64, length uint64, data uint64) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_pc_firmware_tables(handle uint32, acpi_rsdp unsafe.Pointer, smbios unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_pci_get_nth_device(handle uint32, index uint32, out_info unsafe.Pointer, out_handle unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_pci_enable_bus_master(handle uint32, enable uint32) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_pci_reset_device(handle uint32) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_pci_config_read(handle uint32, offset uint16, width uint, out_val unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_pci_config_write(handle uint32, offset uint16, width uint, val uint32) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_pci_cfg_pio_rw(handle uint32, bus uint8, dev uint8, funk uint8, offset uint8, val unsafe.Pointer, width uint, write uint32) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_pci_get_bar(handle uint32, bar_num uint32, out_bar unsafe.Pointer, out_handle unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_pci_map_interrupt(handle uint32, which_irq int32, out_handle unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_pci_query_irq_mode(handle uint32, mode uint32, out_max_irqs unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_pci_set_irq_mode(handle uint32, mode uint32, requested_irq_count uint32) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_pci_init(handle uint32, init_buf unsafe.Pointer, len uint32) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_pci_add_subtract_io_range(handle uint32, mmio uint32, base uint64, len uint64, add uint32) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_pmt_unpin(handle uint32) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_port_create(options uint32, out unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_port_queue(handle uint32, packet unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_port_wait(handle uint32, deadline int64, packet unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_port_cancel(handle uint32, source uint32, key uint64) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_process_exit(retcode int64)
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_process_create(job uint32, name unsafe.Pointer, name_size uint, options uint32, proc_handle unsafe.Pointer, vmar_handle unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_process_start(handle uint32, thread uint32, entry uintptr, stack uintptr, arg1 uint32, arg2 uintptr) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_process_read_memory(handle uint32, vaddr uintptr, buffer unsafe.Pointer, buffer_size uint, actual unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_process_write_memory(handle uint32, vaddr uintptr, buffer unsafe.Pointer, buffer_size uint, actual unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_profile_create(root_job uint32, options uint32, profile unsafe.Pointer, out unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_resource_create(parent_rsrc uint32, options uint32, base uint64, size uint, name unsafe.Pointer, name_size uint, resource_out unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_smc_call(handle uint32, parameters unsafe.Pointer, out_smc_result unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_socket_create(options uint32, out0 unsafe.Pointer, out1 unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_socket_write(handle uint32, options uint32, buffer unsafe.Pointer, buffer_size uint, actual unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_socket_read(handle uint32, options uint32, buffer unsafe.Pointer, buffer_size uint, actual unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_socket_shutdown(handle uint32, options uint32) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_stream_create(options uint32, vmo uint32, seek uint64, out_stream unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_stream_writev(handle uint32, options uint32, vector unsafe.Pointer, num_vector uint, actual unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_stream_writev_at(handle uint32, options uint32, offset uint64, vector unsafe.Pointer, num_vector uint, actual unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_stream_readv(handle uint32, options uint32, vector unsafe.Pointer, num_vector uint, actual unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_stream_readv_at(handle uint32, options uint32, offset uint64, vector unsafe.Pointer, num_vector uint, actual unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_stream_seek(handle uint32, whence uint32, offset int64, out_seek unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_syscall_test_0() int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_syscall_test_1(a int32) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_syscall_test_2(a int32, b int32) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_syscall_test_3(a int32, b int32, c int32) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_syscall_test_4(a int32, b int32, c int32, d int32) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_syscall_test_5(a int32, b int32, c int32, d int32, e int32) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_syscall_test_6(a int32, b int32, c int32, d int32, e int32, f int32) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_syscall_test_7(a int32, b int32, c int32, d int32, e int32, f int32, g_ int32) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_syscall_test_8(a int32, b int32, c int32, d int32, e int32, f int32, g_ int32, h int32) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_syscall_test_wrapper(a int32, b int32, c int32) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_syscall_test_handle_create(return_value int32, out unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_system_get_dcache_line_size() uint32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_system_get_num_cpus() uint32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_system_get_version_string() unsafe.Pointer
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_system_get_page_size() uint32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_system_get_physmem() uint64
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_system_get_features(kind uint32, features unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_system_get_event(root_job uint32, kind uint32, event unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_system_mexec(resource uint32, kernel_vmo uint32, bootimage_vmo uint32) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_system_mexec_payload_get(resource uint32, buffer unsafe.Pointer, buffer_size uint) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_system_powerctl(resource uint32, cmd uint32, arg unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_task_suspend(handle uint32, token unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_task_suspend_token(handle uint32, token unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_task_create_exception_channel(handle uint32, options uint32, out unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_task_kill(handle uint32) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_thread_exit()
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_thread_create(process uint32, name unsafe.Pointer, name_size uint, options uint32, out unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_thread_start(handle uint32, thread_entry uintptr, stack uintptr, arg1 uintptr, arg2 uintptr) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_thread_read_state(handle uint32, kind uint32, buffer unsafe.Pointer, buffer_size uint) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_thread_write_state(handle uint32, kind uint32, buffer unsafe.Pointer, buffer_size uint) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_timer_create(options uint32, clock_id uint32, out unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_timer_set(handle uint32, deadline int64, slack int64) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_timer_cancel(handle uint32) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_vcpu_create(guest uint32, options uint32, entry uintptr, out unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_vcpu_resume(handle uint32, packet unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_vcpu_interrupt(handle uint32, vector uint32) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_vcpu_read_state(handle uint32, kind uint32, buffer unsafe.Pointer, buffer_size uint) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_vcpu_write_state(handle uint32, kind uint32, buffer unsafe.Pointer, buffer_size uint) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_vmar_allocate(parent_vmar uint32, options uint32, offset uint, size uint, child_vmar unsafe.Pointer, child_addr unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_vmar_destroy(handle uint32) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_vmar_map(handle uint32, options uint32, vmar_offset uint, vmo uint32, vmo_offset uint64, len uint, mapped_addr unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_vmar_unmap(handle uint32, addr uintptr, len uint) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_vmar_protect(handle uint32, options uint32, addr uintptr, len uint) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_vmar_op_range(handle uint32, op uint32, address uintptr, size uint, buffer unsafe.Pointer, buffer_size uint) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_vmo_create(size uint64, options uint32, out unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_vmo_read(handle uint32, buffer unsafe.Pointer, offset uint64, buffer_size uint) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_vmo_write(handle uint32, buffer unsafe.Pointer, offset uint64, buffer_size uint) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_vmo_get_size(handle uint32, size unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_vmo_set_size(handle uint32, size uint64) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_vmo_op_range(handle uint32, op uint32, offset uint64, size uint64, buffer unsafe.Pointer, buffer_size uint) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_vmo_create_child(handle uint32, options uint32, offset uint64, size uint64, out unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_vmo_set_cache_policy(handle uint32, cache_policy uint32) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_vmo_replace_as_executable(handle uint32, vmex uint32, out unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_vmo_create_contiguous(bti uint32, size uint, alignment_log2 uint32, out unsafe.Pointer) int32
+
+//go:noescape
+//go:nosplit
+func vdsoCall_zx_vmo_create_physical(resource uint32, paddr uintptr, size uint, out unsafe.Pointer) int32
+
+var (
+ vdso_zx_bti_create uintptr
+ vdso_zx_bti_pin uintptr
+ vdso_zx_bti_release_quarantine uintptr
+ vdso_zx_cache_flush uintptr
+ vdso_zx_channel_create uintptr
+ vdso_zx_channel_read uintptr
+ vdso_zx_channel_read_etc uintptr
+ vdso_zx_channel_write uintptr
+ vdso_zx_channel_write_etc uintptr
+ vdso_zx_channel_call_noretry uintptr
+ vdso_zx_channel_call_finish uintptr
+ vdso_zx_channel_call uintptr
+ vdso_zx_channel_call_etc_noretry uintptr
+ vdso_zx_channel_call_etc_finish uintptr
+ vdso_zx_channel_call_etc uintptr
+ vdso_zx_clock_get_monotonic uintptr
+ vdso_zx_clock_get_monotonic_via_kernel uintptr
+ vdso_zx_clock_create uintptr
+ vdso_zx_clock_read uintptr
+ vdso_zx_clock_get_details uintptr
+ vdso_zx_clock_update uintptr
+ vdso_zx_cprng_draw_once uintptr
+ vdso_zx_cprng_draw uintptr
+ vdso_zx_cprng_add_entropy uintptr
+ vdso_zx_debug_read uintptr
+ vdso_zx_debug_write uintptr
+ vdso_zx_debug_send_command uintptr
+ vdso_zx_debuglog_create uintptr
+ vdso_zx_debuglog_write uintptr
+ vdso_zx_debuglog_read uintptr
+ vdso_zx_event_create uintptr
+ vdso_zx_eventpair_create uintptr
+ vdso_zx_exception_get_thread uintptr
+ vdso_zx_exception_get_process uintptr
+ vdso_zx_fifo_create uintptr
+ vdso_zx_fifo_read uintptr
+ vdso_zx_fifo_write uintptr
+ vdso_zx_framebuffer_get_info uintptr
+ vdso_zx_framebuffer_set_range uintptr
+ vdso_zx_futex_wait uintptr
+ vdso_zx_futex_wake uintptr
+ vdso_zx_futex_requeue uintptr
+ vdso_zx_futex_wake_single_owner uintptr
+ vdso_zx_futex_requeue_single_owner uintptr
+ vdso_zx_futex_get_owner uintptr
+ vdso_zx_guest_create uintptr
+ vdso_zx_guest_set_trap uintptr
+ vdso_zx_handle_close uintptr
+ vdso_zx_handle_close_many uintptr
+ vdso_zx_handle_duplicate uintptr
+ vdso_zx_handle_replace uintptr
+ vdso_zx_interrupt_create uintptr
+ vdso_zx_interrupt_bind uintptr
+ vdso_zx_interrupt_wait uintptr
+ vdso_zx_interrupt_destroy uintptr
+ vdso_zx_interrupt_ack uintptr
+ vdso_zx_interrupt_trigger uintptr
+ vdso_zx_interrupt_bind_vcpu uintptr
+ vdso_zx_iommu_create uintptr
+ vdso_zx_ioports_request uintptr
+ vdso_zx_ioports_release uintptr
+ vdso_zx_job_create uintptr
+ vdso_zx_job_set_policy uintptr
+ vdso_zx_job_set_critical uintptr
+ vdso_zx_ktrace_read uintptr
+ vdso_zx_ktrace_control uintptr
+ vdso_zx_ktrace_write uintptr
+ vdso_zx_nanosleep uintptr
+ vdso_zx_ticks_get uintptr
+ vdso_zx_ticks_per_second uintptr
+ vdso_zx_deadline_after uintptr
+ vdso_zx_vmar_unmap_handle_close_thread_exit uintptr
+ vdso_zx_futex_wake_handle_close_thread_exit uintptr
+ vdso_zx_ticks_get_via_kernel uintptr
+ vdso_zx_msi_allocate uintptr
+ vdso_zx_msi_create uintptr
+ vdso_zx_mtrace_control uintptr
+ vdso_zx_object_wait_one uintptr
+ vdso_zx_object_wait_many uintptr
+ vdso_zx_object_wait_async uintptr
+ vdso_zx_object_signal uintptr
+ vdso_zx_object_signal_peer uintptr
+ vdso_zx_object_get_property uintptr
+ vdso_zx_object_set_property uintptr
+ vdso_zx_object_get_info uintptr
+ vdso_zx_object_get_child uintptr
+ vdso_zx_object_set_profile uintptr
+ vdso_zx_pager_create uintptr
+ vdso_zx_pager_create_vmo uintptr
+ vdso_zx_pager_detach_vmo uintptr
+ vdso_zx_pager_supply_pages uintptr
+ vdso_zx_pager_op_range uintptr
+ vdso_zx_pc_firmware_tables uintptr
+ vdso_zx_pci_get_nth_device uintptr
+ vdso_zx_pci_enable_bus_master uintptr
+ vdso_zx_pci_reset_device uintptr
+ vdso_zx_pci_config_read uintptr
+ vdso_zx_pci_config_write uintptr
+ vdso_zx_pci_cfg_pio_rw uintptr
+ vdso_zx_pci_get_bar uintptr
+ vdso_zx_pci_map_interrupt uintptr
+ vdso_zx_pci_query_irq_mode uintptr
+ vdso_zx_pci_set_irq_mode uintptr
+ vdso_zx_pci_init uintptr
+ vdso_zx_pci_add_subtract_io_range uintptr
+ vdso_zx_pmt_unpin uintptr
+ vdso_zx_port_create uintptr
+ vdso_zx_port_queue uintptr
+ vdso_zx_port_wait uintptr
+ vdso_zx_port_cancel uintptr
+ vdso_zx_process_exit uintptr
+ vdso_zx_process_create uintptr
+ vdso_zx_process_start uintptr
+ vdso_zx_process_read_memory uintptr
+ vdso_zx_process_write_memory uintptr
+ vdso_zx_profile_create uintptr
+ vdso_zx_resource_create uintptr
+ vdso_zx_smc_call uintptr
+ vdso_zx_socket_create uintptr
+ vdso_zx_socket_write uintptr
+ vdso_zx_socket_read uintptr
+ vdso_zx_socket_shutdown uintptr
+ vdso_zx_stream_create uintptr
+ vdso_zx_stream_writev uintptr
+ vdso_zx_stream_writev_at uintptr
+ vdso_zx_stream_readv uintptr
+ vdso_zx_stream_readv_at uintptr
+ vdso_zx_stream_seek uintptr
+ vdso_zx_syscall_test_0 uintptr
+ vdso_zx_syscall_test_1 uintptr
+ vdso_zx_syscall_test_2 uintptr
+ vdso_zx_syscall_test_3 uintptr
+ vdso_zx_syscall_test_4 uintptr
+ vdso_zx_syscall_test_5 uintptr
+ vdso_zx_syscall_test_6 uintptr
+ vdso_zx_syscall_test_7 uintptr
+ vdso_zx_syscall_test_8 uintptr
+ vdso_zx_syscall_test_wrapper uintptr
+ vdso_zx_syscall_test_handle_create uintptr
+ vdso_zx_system_get_dcache_line_size uintptr
+ vdso_zx_system_get_num_cpus uintptr
+ vdso_zx_system_get_version_string uintptr
+ vdso_zx_system_get_page_size uintptr
+ vdso_zx_system_get_physmem uintptr
+ vdso_zx_system_get_features uintptr
+ vdso_zx_system_get_event uintptr
+ vdso_zx_system_mexec uintptr
+ vdso_zx_system_mexec_payload_get uintptr
+ vdso_zx_system_powerctl uintptr
+ vdso_zx_task_suspend uintptr
+ vdso_zx_task_suspend_token uintptr
+ vdso_zx_task_create_exception_channel uintptr
+ vdso_zx_task_kill uintptr
+ vdso_zx_thread_exit uintptr
+ vdso_zx_thread_create uintptr
+ vdso_zx_thread_start uintptr
+ vdso_zx_thread_read_state uintptr
+ vdso_zx_thread_write_state uintptr
+ vdso_zx_timer_create uintptr
+ vdso_zx_timer_set uintptr
+ vdso_zx_timer_cancel uintptr
+ vdso_zx_vcpu_create uintptr
+ vdso_zx_vcpu_resume uintptr
+ vdso_zx_vcpu_interrupt uintptr
+ vdso_zx_vcpu_read_state uintptr
+ vdso_zx_vcpu_write_state uintptr
+ vdso_zx_vmar_allocate uintptr
+ vdso_zx_vmar_destroy uintptr
+ vdso_zx_vmar_map uintptr
+ vdso_zx_vmar_unmap uintptr
+ vdso_zx_vmar_protect uintptr
+ vdso_zx_vmar_op_range uintptr
+ vdso_zx_vmo_create uintptr
+ vdso_zx_vmo_read uintptr
+ vdso_zx_vmo_write uintptr
+ vdso_zx_vmo_get_size uintptr
+ vdso_zx_vmo_set_size uintptr
+ vdso_zx_vmo_op_range uintptr
+ vdso_zx_vmo_create_child uintptr
+ vdso_zx_vmo_set_cache_policy uintptr
+ vdso_zx_vmo_replace_as_executable uintptr
+ vdso_zx_vmo_create_contiguous uintptr
+ vdso_zx_vmo_create_physical uintptr
+)
diff --git a/src/runtime/vdso_linux.go b/src/runtime/vdso_linux.go
index ae211f9..a8c3a40 100644
--- a/src/runtime/vdso_linux.go
+++ b/src/runtime/vdso_linux.go
@@ -21,52 +21,6 @@
// The version section is documented at
// https://refspecs.linuxfoundation.org/LSB_3.2.0/LSB-Core-generic/LSB-Core-generic/symversion.html
-const (
- _AT_SYSINFO_EHDR = 33
-
- _PT_LOAD = 1 /* Loadable program segment */
- _PT_DYNAMIC = 2 /* Dynamic linking information */
-
- _DT_NULL = 0 /* Marks end of dynamic section */
- _DT_HASH = 4 /* Dynamic symbol hash table */
- _DT_STRTAB = 5 /* Address of string table */
- _DT_SYMTAB = 6 /* Address of symbol table */
- _DT_GNU_HASH = 0x6ffffef5 /* GNU-style dynamic symbol hash table */
- _DT_VERSYM = 0x6ffffff0
- _DT_VERDEF = 0x6ffffffc
-
- _VER_FLG_BASE = 0x1 /* Version definition of file itself */
-
- _SHN_UNDEF = 0 /* Undefined section */
-
- _SHT_DYNSYM = 11 /* Dynamic linker symbol table */
-
- _STT_FUNC = 2 /* Symbol is a code object */
-
- _STT_NOTYPE = 0 /* Symbol type is not specified */
-
- _STB_GLOBAL = 1 /* Global symbol */
- _STB_WEAK = 2 /* Weak symbol */
-
- _EI_NIDENT = 16
-
- // Maximum indices for the array types used when traversing the vDSO ELF structures.
- // Computed from architecture-specific max provided by vdso_linux_*.go
- vdsoSymTabSize = vdsoArrayMax / unsafe.Sizeof(elfSym{})
- vdsoDynSize = vdsoArrayMax / unsafe.Sizeof(elfDyn{})
- vdsoSymStringsSize = vdsoArrayMax // byte
- vdsoVerSymSize = vdsoArrayMax / 2 // uint16
- vdsoHashSize = vdsoArrayMax / 4 // uint32
-
- // vdsoBloomSizeScale is a scaling factor for gnuhash tables which are uint32 indexed,
- // but contain uintptrs
- vdsoBloomSizeScale = unsafe.Sizeof(uintptr(0)) / 4 // uint32
-)
-
-/* How to extract and insert information held in the st_info field. */
-func _ELF_ST_BIND(val byte) byte { return val >> 4 }
-func _ELF_ST_TYPE(val byte) byte { return val & 0xf }
-
type vdsoSymbolKey struct {
name string
symHash uint32
diff --git a/src/runtime/vdsocalls_fuchsia_amd64.s b/src/runtime/vdsocalls_fuchsia_amd64.s
new file mode 100644
index 0000000..073c821
--- /dev/null
+++ b/src/runtime/vdsocalls_fuchsia_amd64.s
@@ -0,0 +1,4199 @@
+// Copyright 2019 The Fuchsia Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// WARNING: THIS FILE IS MACHINE GENERATED BY //tools/kazoo. DO NOT EDIT.
+
+#include "go_asm.h"
+#include "go_tls.h"
+#include "textflag.h"
+#include "funcdata.h"
+
+// func vdsoCall_zx_bti_create(iommu uint32, options uint32, bti_id uint64, out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_bti_create(SB),NOSPLIT,$8-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL iommu+0(FP), DI
+ MOVL options+4(FP), SI
+ MOVQ bti_id+8(FP), DX
+ MOVQ out+16(FP), CX
+ MOVQ vdso_zx_bti_create(SB), AX
+ CALL AX
+ MOVL AX, ret+24(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_bti_pin(handle uint32, options uint32, vmo uint32, offset uint64, size uint64, addrs unsafe.Pointer, num_addrs uint, pmt unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_bti_pin(SB),NOSPLIT,$40-60
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 56(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 56(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL options+4(FP), SI
+ MOVL vmo+8(FP), DX
+ MOVQ offset+16(FP), CX
+ MOVQ size+24(FP), R8
+ MOVQ addrs+32(FP), R9
+ MOVQ num_addrs+40(FP), R12
+ MOVQ pmt+48(FP), R13
+ MOVQ SP, BP // BP is preserved across vsdo call by the x86-64 ABI
+ ANDQ $~15, SP // stack alignment for x86-64 ABI
+ PUSHQ R13
+ PUSHQ R12
+ MOVQ vdso_zx_bti_pin(SB), AX
+ CALL AX
+ POPQ R12
+ POPQ R13
+ MOVQ BP, SP
+ MOVL AX, ret+56(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_bti_release_quarantine(handle uint32) int32
+TEXT runtime·vdsoCall_zx_bti_release_quarantine(SB),NOSPLIT,$8-12
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVQ vdso_zx_bti_release_quarantine(SB), AX
+ CALL AX
+ MOVL AX, ret+8(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_cache_flush(addr unsafe.Pointer, size uint, options uint32) int32
+TEXT runtime·vdsoCall_zx_cache_flush(SB),NOSPLIT,$8-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVQ addr+0(FP), DI
+ MOVQ size+8(FP), SI
+ MOVL options+16(FP), DX
+ MOVQ vdso_zx_cache_flush(SB), AX
+ CALL AX
+ MOVL AX, ret+24(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_channel_create(options uint32, out0 unsafe.Pointer, out1 unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_channel_create(SB),NOSPLIT,$8-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL options+0(FP), DI
+ MOVQ out0+8(FP), SI
+ MOVQ out1+16(FP), DX
+ MOVQ vdso_zx_channel_create(SB), AX
+ CALL AX
+ MOVL AX, ret+24(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_channel_read(handle uint32, options uint32, bytes unsafe.Pointer, handles unsafe.Pointer, num_bytes uint32, num_handles uint32, actual_bytes unsafe.Pointer, actual_handles unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_channel_read(SB),NOSPLIT,$40-52
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 56(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 56(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL options+4(FP), SI
+ MOVQ bytes+8(FP), DX
+ MOVQ handles+16(FP), CX
+ MOVL num_bytes+24(FP), R8
+ MOVL num_handles+28(FP), R9
+ MOVQ actual_bytes+32(FP), R12
+ MOVQ actual_handles+40(FP), R13
+ MOVQ SP, BP // BP is preserved across vsdo call by the x86-64 ABI
+ ANDQ $~15, SP // stack alignment for x86-64 ABI
+ PUSHQ R13
+ PUSHQ R12
+ MOVQ vdso_zx_channel_read(SB), AX
+ CALL AX
+ POPQ R12
+ POPQ R13
+ MOVQ BP, SP
+ MOVL AX, ret+48(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_channel_read_etc(handle uint32, options uint32, bytes unsafe.Pointer, handles unsafe.Pointer, num_bytes uint32, num_handles uint32, actual_bytes unsafe.Pointer, actual_handles unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_channel_read_etc(SB),NOSPLIT,$40-52
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 56(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 56(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL options+4(FP), SI
+ MOVQ bytes+8(FP), DX
+ MOVQ handles+16(FP), CX
+ MOVL num_bytes+24(FP), R8
+ MOVL num_handles+28(FP), R9
+ MOVQ actual_bytes+32(FP), R12
+ MOVQ actual_handles+40(FP), R13
+ MOVQ SP, BP // BP is preserved across vsdo call by the x86-64 ABI
+ ANDQ $~15, SP // stack alignment for x86-64 ABI
+ PUSHQ R13
+ PUSHQ R12
+ MOVQ vdso_zx_channel_read_etc(SB), AX
+ CALL AX
+ POPQ R12
+ POPQ R13
+ MOVQ BP, SP
+ MOVL AX, ret+48(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_channel_write(handle uint32, options uint32, bytes unsafe.Pointer, num_bytes uint32, handles unsafe.Pointer, num_handles uint32) int32
+TEXT runtime·vdsoCall_zx_channel_write(SB),NOSPLIT,$8-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL options+4(FP), SI
+ MOVQ bytes+8(FP), DX
+ MOVL num_bytes+16(FP), CX
+ MOVQ handles+24(FP), R8
+ MOVL num_handles+32(FP), R9
+ MOVQ vdso_zx_channel_write(SB), AX
+ CALL AX
+ MOVL AX, ret+40(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_channel_write_etc(handle uint32, options uint32, bytes unsafe.Pointer, num_bytes uint32, handles unsafe.Pointer, num_handles uint32) int32
+TEXT runtime·vdsoCall_zx_channel_write_etc(SB),NOSPLIT,$8-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL options+4(FP), SI
+ MOVQ bytes+8(FP), DX
+ MOVL num_bytes+16(FP), CX
+ MOVQ handles+24(FP), R8
+ MOVL num_handles+32(FP), R9
+ MOVQ vdso_zx_channel_write_etc(SB), AX
+ CALL AX
+ MOVL AX, ret+40(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_channel_call_noretry(handle uint32, options uint32, deadline int64, args unsafe.Pointer, actual_bytes unsafe.Pointer, actual_handles unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_channel_call_noretry(SB),NOSPLIT,$8-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL options+4(FP), SI
+ MOVQ deadline+8(FP), DX
+ MOVQ args+16(FP), CX
+ MOVQ actual_bytes+24(FP), R8
+ MOVQ actual_handles+32(FP), R9
+ MOVQ vdso_zx_channel_call_noretry(SB), AX
+ CALL AX
+ MOVL AX, ret+40(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_channel_call_finish(deadline int64, args unsafe.Pointer, actual_bytes unsafe.Pointer, actual_handles unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_channel_call_finish(SB),NOSPLIT,$8-36
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVQ deadline+0(FP), DI
+ MOVQ args+8(FP), SI
+ MOVQ actual_bytes+16(FP), DX
+ MOVQ actual_handles+24(FP), CX
+ MOVQ vdso_zx_channel_call_finish(SB), AX
+ CALL AX
+ MOVL AX, ret+32(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_channel_call(handle uint32, options uint32, deadline int64, args unsafe.Pointer, actual_bytes unsafe.Pointer, actual_handles unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_channel_call(SB),NOSPLIT,$8-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ CALL runtime·entersyscall(SB)
+ MOVL handle+0(FP), DI
+ MOVL options+4(FP), SI
+ MOVQ deadline+8(FP), DX
+ MOVQ args+16(FP), CX
+ MOVQ actual_bytes+24(FP), R8
+ MOVQ actual_handles+32(FP), R9
+ MOVQ vdso_zx_channel_call(SB), AX
+ CALL AX
+ MOVL AX, ret+40(FP)
+ CALL runtime·exitsyscall(SB)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_channel_call_etc_noretry(handle uint32, options uint32, deadline int64, args unsafe.Pointer, actual_bytes unsafe.Pointer, actual_handles unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_channel_call_etc_noretry(SB),NOSPLIT,$8-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL options+4(FP), SI
+ MOVQ deadline+8(FP), DX
+ MOVQ args+16(FP), CX
+ MOVQ actual_bytes+24(FP), R8
+ MOVQ actual_handles+32(FP), R9
+ MOVQ vdso_zx_channel_call_etc_noretry(SB), AX
+ CALL AX
+ MOVL AX, ret+40(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_channel_call_etc_finish(deadline int64, args unsafe.Pointer, actual_bytes unsafe.Pointer, actual_handles unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_channel_call_etc_finish(SB),NOSPLIT,$8-36
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVQ deadline+0(FP), DI
+ MOVQ args+8(FP), SI
+ MOVQ actual_bytes+16(FP), DX
+ MOVQ actual_handles+24(FP), CX
+ MOVQ vdso_zx_channel_call_etc_finish(SB), AX
+ CALL AX
+ MOVL AX, ret+32(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_channel_call_etc(handle uint32, options uint32, deadline int64, args unsafe.Pointer, actual_bytes unsafe.Pointer, actual_handles unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_channel_call_etc(SB),NOSPLIT,$8-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ CALL runtime·entersyscall(SB)
+ MOVL handle+0(FP), DI
+ MOVL options+4(FP), SI
+ MOVQ deadline+8(FP), DX
+ MOVQ args+16(FP), CX
+ MOVQ actual_bytes+24(FP), R8
+ MOVQ actual_handles+32(FP), R9
+ MOVQ vdso_zx_channel_call_etc(SB), AX
+ CALL AX
+ MOVL AX, ret+40(FP)
+ CALL runtime·exitsyscall(SB)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_clock_get_monotonic() int64
+TEXT runtime·vdsoCall_zx_clock_get_monotonic(SB),NOSPLIT,$8-8
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVQ vdso_zx_clock_get_monotonic(SB), AX
+ CALL AX
+ MOVQ AX, ret+0(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_clock_get_monotonic_via_kernel() int64
+TEXT runtime·vdsoCall_zx_clock_get_monotonic_via_kernel(SB),NOSPLIT,$8-8
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVQ vdso_zx_clock_get_monotonic_via_kernel(SB), AX
+ CALL AX
+ MOVQ AX, ret+0(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_clock_create(options uint64, args unsafe.Pointer, out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_clock_create(SB),NOSPLIT,$8-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVQ options+0(FP), DI
+ MOVQ args+8(FP), SI
+ MOVQ out+16(FP), DX
+ MOVQ vdso_zx_clock_create(SB), AX
+ CALL AX
+ MOVL AX, ret+24(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_clock_read(handle uint32, now unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_clock_read(SB),NOSPLIT,$8-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVQ now+8(FP), SI
+ MOVQ vdso_zx_clock_read(SB), AX
+ CALL AX
+ MOVL AX, ret+16(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_clock_get_details(handle uint32, options uint64, details unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_clock_get_details(SB),NOSPLIT,$8-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVQ options+8(FP), SI
+ MOVQ details+16(FP), DX
+ MOVQ vdso_zx_clock_get_details(SB), AX
+ CALL AX
+ MOVL AX, ret+24(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_clock_update(handle uint32, options uint64, args unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_clock_update(SB),NOSPLIT,$8-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVQ options+8(FP), SI
+ MOVQ args+16(FP), DX
+ MOVQ vdso_zx_clock_update(SB), AX
+ CALL AX
+ MOVL AX, ret+24(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_cprng_draw_once(buffer unsafe.Pointer, buffer_size uint) int32
+TEXT runtime·vdsoCall_zx_cprng_draw_once(SB),NOSPLIT,$8-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVQ buffer+0(FP), DI
+ MOVQ buffer_size+8(FP), SI
+ MOVQ vdso_zx_cprng_draw_once(SB), AX
+ CALL AX
+ MOVL AX, ret+16(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_cprng_draw(buffer unsafe.Pointer, buffer_size uint)
+TEXT runtime·vdsoCall_zx_cprng_draw(SB),NOSPLIT,$8-16
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVQ buffer+0(FP), DI
+ MOVQ buffer_size+8(FP), SI
+ MOVQ vdso_zx_cprng_draw(SB), AX
+ CALL AX
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_cprng_add_entropy(buffer unsafe.Pointer, buffer_size uint) int32
+TEXT runtime·vdsoCall_zx_cprng_add_entropy(SB),NOSPLIT,$8-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVQ buffer+0(FP), DI
+ MOVQ buffer_size+8(FP), SI
+ MOVQ vdso_zx_cprng_add_entropy(SB), AX
+ CALL AX
+ MOVL AX, ret+16(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_debug_read(handle uint32, buffer unsafe.Pointer, buffer_size uint, actual unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_debug_read(SB),NOSPLIT,$8-36
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVQ buffer+8(FP), SI
+ MOVQ buffer_size+16(FP), DX
+ MOVQ actual+24(FP), CX
+ MOVQ vdso_zx_debug_read(SB), AX
+ CALL AX
+ MOVL AX, ret+32(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_debug_write(buffer unsafe.Pointer, buffer_size uint) int32
+TEXT runtime·vdsoCall_zx_debug_write(SB),NOSPLIT,$8-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVQ buffer+0(FP), DI
+ MOVQ buffer_size+8(FP), SI
+ MOVQ vdso_zx_debug_write(SB), AX
+ CALL AX
+ MOVL AX, ret+16(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_debug_send_command(resource uint32, buffer unsafe.Pointer, buffer_size uint) int32
+TEXT runtime·vdsoCall_zx_debug_send_command(SB),NOSPLIT,$8-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL resource+0(FP), DI
+ MOVQ buffer+8(FP), SI
+ MOVQ buffer_size+16(FP), DX
+ MOVQ vdso_zx_debug_send_command(SB), AX
+ CALL AX
+ MOVL AX, ret+24(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_debuglog_create(resource uint32, options uint32, out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_debuglog_create(SB),NOSPLIT,$8-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL resource+0(FP), DI
+ MOVL options+4(FP), SI
+ MOVQ out+8(FP), DX
+ MOVQ vdso_zx_debuglog_create(SB), AX
+ CALL AX
+ MOVL AX, ret+16(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_debuglog_write(handle uint32, options uint32, buffer unsafe.Pointer, buffer_size uint) int32
+TEXT runtime·vdsoCall_zx_debuglog_write(SB),NOSPLIT,$8-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL options+4(FP), SI
+ MOVQ buffer+8(FP), DX
+ MOVQ buffer_size+16(FP), CX
+ MOVQ vdso_zx_debuglog_write(SB), AX
+ CALL AX
+ MOVL AX, ret+24(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_debuglog_read(handle uint32, options uint32, buffer unsafe.Pointer, buffer_size uint) int32
+TEXT runtime·vdsoCall_zx_debuglog_read(SB),NOSPLIT,$8-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL options+4(FP), SI
+ MOVQ buffer+8(FP), DX
+ MOVQ buffer_size+16(FP), CX
+ MOVQ vdso_zx_debuglog_read(SB), AX
+ CALL AX
+ MOVL AX, ret+24(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_event_create(options uint32, out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_event_create(SB),NOSPLIT,$8-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL options+0(FP), DI
+ MOVQ out+8(FP), SI
+ MOVQ vdso_zx_event_create(SB), AX
+ CALL AX
+ MOVL AX, ret+16(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_eventpair_create(options uint32, out0 unsafe.Pointer, out1 unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_eventpair_create(SB),NOSPLIT,$8-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL options+0(FP), DI
+ MOVQ out0+8(FP), SI
+ MOVQ out1+16(FP), DX
+ MOVQ vdso_zx_eventpair_create(SB), AX
+ CALL AX
+ MOVL AX, ret+24(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_exception_get_thread(handle uint32, out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_exception_get_thread(SB),NOSPLIT,$8-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVQ out+8(FP), SI
+ MOVQ vdso_zx_exception_get_thread(SB), AX
+ CALL AX
+ MOVL AX, ret+16(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_exception_get_process(handle uint32, out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_exception_get_process(SB),NOSPLIT,$8-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVQ out+8(FP), SI
+ MOVQ vdso_zx_exception_get_process(SB), AX
+ CALL AX
+ MOVL AX, ret+16(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_fifo_create(elem_count uint, elem_size uint, options uint32, out0 unsafe.Pointer, out1 unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_fifo_create(SB),NOSPLIT,$8-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVQ elem_count+0(FP), DI
+ MOVQ elem_size+8(FP), SI
+ MOVL options+16(FP), DX
+ MOVQ out0+24(FP), CX
+ MOVQ out1+32(FP), R8
+ MOVQ vdso_zx_fifo_create(SB), AX
+ CALL AX
+ MOVL AX, ret+40(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_fifo_read(handle uint32, elem_size uint, data unsafe.Pointer, data_size uint, actual_count unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_fifo_read(SB),NOSPLIT,$8-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVQ elem_size+8(FP), SI
+ MOVQ data+16(FP), DX
+ MOVQ data_size+24(FP), CX
+ MOVQ actual_count+32(FP), R8
+ MOVQ vdso_zx_fifo_read(SB), AX
+ CALL AX
+ MOVL AX, ret+40(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_fifo_write(handle uint32, elem_size uint, data unsafe.Pointer, count uint, actual_count unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_fifo_write(SB),NOSPLIT,$8-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVQ elem_size+8(FP), SI
+ MOVQ data+16(FP), DX
+ MOVQ count+24(FP), CX
+ MOVQ actual_count+32(FP), R8
+ MOVQ vdso_zx_fifo_write(SB), AX
+ CALL AX
+ MOVL AX, ret+40(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_framebuffer_get_info(resource uint32, format unsafe.Pointer, width unsafe.Pointer, height unsafe.Pointer, stride unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_framebuffer_get_info(SB),NOSPLIT,$8-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL resource+0(FP), DI
+ MOVQ format+8(FP), SI
+ MOVQ width+16(FP), DX
+ MOVQ height+24(FP), CX
+ MOVQ stride+32(FP), R8
+ MOVQ vdso_zx_framebuffer_get_info(SB), AX
+ CALL AX
+ MOVL AX, ret+40(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_framebuffer_set_range(resource uint32, vmo uint32, len uint32, format uint32, width uint32, height uint32, stride uint32) int32
+TEXT runtime·vdsoCall_zx_framebuffer_set_range(SB),NOSPLIT,$32-36
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 48(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 48(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL resource+0(FP), DI
+ MOVL vmo+4(FP), SI
+ MOVL len+8(FP), DX
+ MOVL format+12(FP), CX
+ MOVL width+16(FP), R8
+ MOVL height+20(FP), R9
+ MOVL stride+24(FP), R12
+ MOVQ SP, BP // BP is preserved across vsdo call by the x86-64 ABI
+ ANDQ $~15, SP // stack alignment for x86-64 ABI
+ PUSHQ R12
+ MOVQ vdso_zx_framebuffer_set_range(SB), AX
+ CALL AX
+ POPQ R12
+ MOVQ BP, SP
+ MOVL AX, ret+32(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_futex_wait(value_ptr unsafe.Pointer, current_value int32, new_futex_owner uint32, deadline int64) int32
+TEXT runtime·vdsoCall_zx_futex_wait(SB),NOSPLIT,$8-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVQ value_ptr+0(FP), DI
+ MOVL current_value+8(FP), SI
+ MOVL new_futex_owner+12(FP), DX
+ MOVQ deadline+16(FP), CX
+ MOVQ vdso_zx_futex_wait(SB), AX
+ CALL AX
+ MOVL AX, ret+24(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_futex_wake(value_ptr unsafe.Pointer, wake_count uint32) int32
+TEXT runtime·vdsoCall_zx_futex_wake(SB),NOSPLIT,$8-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVQ value_ptr+0(FP), DI
+ MOVL wake_count+8(FP), SI
+ MOVQ vdso_zx_futex_wake(SB), AX
+ CALL AX
+ MOVL AX, ret+16(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_futex_requeue(value_ptr unsafe.Pointer, wake_count uint32, current_value int32, requeue_ptr unsafe.Pointer, requeue_count uint32, new_requeue_owner uint32) int32
+TEXT runtime·vdsoCall_zx_futex_requeue(SB),NOSPLIT,$8-36
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVQ value_ptr+0(FP), DI
+ MOVL wake_count+8(FP), SI
+ MOVL current_value+12(FP), DX
+ MOVQ requeue_ptr+16(FP), CX
+ MOVL requeue_count+24(FP), R8
+ MOVL new_requeue_owner+28(FP), R9
+ MOVQ vdso_zx_futex_requeue(SB), AX
+ CALL AX
+ MOVL AX, ret+32(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_futex_wake_single_owner(value_ptr unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_futex_wake_single_owner(SB),NOSPLIT,$8-12
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVQ value_ptr+0(FP), DI
+ MOVQ vdso_zx_futex_wake_single_owner(SB), AX
+ CALL AX
+ MOVL AX, ret+8(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_futex_requeue_single_owner(value_ptr unsafe.Pointer, current_value int32, requeue_ptr unsafe.Pointer, requeue_count uint32, new_requeue_owner uint32) int32
+TEXT runtime·vdsoCall_zx_futex_requeue_single_owner(SB),NOSPLIT,$8-36
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVQ value_ptr+0(FP), DI
+ MOVL current_value+8(FP), SI
+ MOVQ requeue_ptr+16(FP), DX
+ MOVL requeue_count+24(FP), CX
+ MOVL new_requeue_owner+28(FP), R8
+ MOVQ vdso_zx_futex_requeue_single_owner(SB), AX
+ CALL AX
+ MOVL AX, ret+32(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_futex_get_owner(value_ptr unsafe.Pointer, koid unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_futex_get_owner(SB),NOSPLIT,$8-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVQ value_ptr+0(FP), DI
+ MOVQ koid+8(FP), SI
+ MOVQ vdso_zx_futex_get_owner(SB), AX
+ CALL AX
+ MOVL AX, ret+16(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_guest_create(resource uint32, options uint32, guest_handle unsafe.Pointer, vmar_handle unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_guest_create(SB),NOSPLIT,$8-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL resource+0(FP), DI
+ MOVL options+4(FP), SI
+ MOVQ guest_handle+8(FP), DX
+ MOVQ vmar_handle+16(FP), CX
+ MOVQ vdso_zx_guest_create(SB), AX
+ CALL AX
+ MOVL AX, ret+24(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_guest_set_trap(handle uint32, kind uint32, addr uintptr, size uint, port_handle uint32, key uint64) int32
+TEXT runtime·vdsoCall_zx_guest_set_trap(SB),NOSPLIT,$8-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL kind+4(FP), SI
+ MOVQ addr+8(FP), DX
+ MOVQ size+16(FP), CX
+ MOVL port_handle+24(FP), R8
+ MOVQ key+32(FP), R9
+ MOVQ vdso_zx_guest_set_trap(SB), AX
+ CALL AX
+ MOVL AX, ret+40(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_handle_close(handle uint32) int32
+TEXT runtime·vdsoCall_zx_handle_close(SB),NOSPLIT,$8-12
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVQ vdso_zx_handle_close(SB), AX
+ CALL AX
+ MOVL AX, ret+8(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_handle_close_many(handles unsafe.Pointer, num_handles uint) int32
+TEXT runtime·vdsoCall_zx_handle_close_many(SB),NOSPLIT,$8-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVQ handles+0(FP), DI
+ MOVQ num_handles+8(FP), SI
+ MOVQ vdso_zx_handle_close_many(SB), AX
+ CALL AX
+ MOVL AX, ret+16(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_handle_duplicate(handle uint32, rights uint32, out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_handle_duplicate(SB),NOSPLIT,$8-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL rights+4(FP), SI
+ MOVQ out+8(FP), DX
+ MOVQ vdso_zx_handle_duplicate(SB), AX
+ CALL AX
+ MOVL AX, ret+16(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_handle_replace(handle uint32, rights uint32, out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_handle_replace(SB),NOSPLIT,$8-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL rights+4(FP), SI
+ MOVQ out+8(FP), DX
+ MOVQ vdso_zx_handle_replace(SB), AX
+ CALL AX
+ MOVL AX, ret+16(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_interrupt_create(src_obj uint32, src_num uint32, options uint32, out_handle unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_interrupt_create(SB),NOSPLIT,$8-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL src_obj+0(FP), DI
+ MOVL src_num+4(FP), SI
+ MOVL options+8(FP), DX
+ MOVQ out_handle+16(FP), CX
+ MOVQ vdso_zx_interrupt_create(SB), AX
+ CALL AX
+ MOVL AX, ret+24(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_interrupt_bind(handle uint32, port_handle uint32, key uint64, options uint32) int32
+TEXT runtime·vdsoCall_zx_interrupt_bind(SB),NOSPLIT,$8-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL port_handle+4(FP), SI
+ MOVQ key+8(FP), DX
+ MOVL options+16(FP), CX
+ MOVQ vdso_zx_interrupt_bind(SB), AX
+ CALL AX
+ MOVL AX, ret+24(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_interrupt_wait(handle uint32, out_timestamp unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_interrupt_wait(SB),NOSPLIT,$8-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ CALL runtime·entersyscall(SB)
+ MOVL handle+0(FP), DI
+ MOVQ out_timestamp+8(FP), SI
+ MOVQ vdso_zx_interrupt_wait(SB), AX
+ CALL AX
+ MOVL AX, ret+16(FP)
+ CALL runtime·exitsyscall(SB)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_interrupt_destroy(handle uint32) int32
+TEXT runtime·vdsoCall_zx_interrupt_destroy(SB),NOSPLIT,$8-12
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVQ vdso_zx_interrupt_destroy(SB), AX
+ CALL AX
+ MOVL AX, ret+8(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_interrupt_ack(handle uint32) int32
+TEXT runtime·vdsoCall_zx_interrupt_ack(SB),NOSPLIT,$8-12
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVQ vdso_zx_interrupt_ack(SB), AX
+ CALL AX
+ MOVL AX, ret+8(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_interrupt_trigger(handle uint32, options uint32, timestamp int64) int32
+TEXT runtime·vdsoCall_zx_interrupt_trigger(SB),NOSPLIT,$8-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL options+4(FP), SI
+ MOVQ timestamp+8(FP), DX
+ MOVQ vdso_zx_interrupt_trigger(SB), AX
+ CALL AX
+ MOVL AX, ret+16(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_interrupt_bind_vcpu(handle uint32, vcpu uint32, options uint32) int32
+TEXT runtime·vdsoCall_zx_interrupt_bind_vcpu(SB),NOSPLIT,$8-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL vcpu+4(FP), SI
+ MOVL options+8(FP), DX
+ MOVQ vdso_zx_interrupt_bind_vcpu(SB), AX
+ CALL AX
+ MOVL AX, ret+16(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_iommu_create(resource uint32, typ uint32, desc unsafe.Pointer, desc_size uint, out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_iommu_create(SB),NOSPLIT,$8-36
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL resource+0(FP), DI
+ MOVL typ+4(FP), SI
+ MOVQ desc+8(FP), DX
+ MOVQ desc_size+16(FP), CX
+ MOVQ out+24(FP), R8
+ MOVQ vdso_zx_iommu_create(SB), AX
+ CALL AX
+ MOVL AX, ret+32(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_ioports_request(resource uint32, io_addr uint16, len uint32) int32
+TEXT runtime·vdsoCall_zx_ioports_request(SB),NOSPLIT,$8-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL resource+0(FP), DI
+ MOVQ io_addr+4(FP), SI
+ MOVL len+8(FP), DX
+ MOVQ vdso_zx_ioports_request(SB), AX
+ CALL AX
+ MOVL AX, ret+16(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_ioports_release(resource uint32, io_addr uint16, len uint32) int32
+TEXT runtime·vdsoCall_zx_ioports_release(SB),NOSPLIT,$8-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL resource+0(FP), DI
+ MOVQ io_addr+4(FP), SI
+ MOVL len+8(FP), DX
+ MOVQ vdso_zx_ioports_release(SB), AX
+ CALL AX
+ MOVL AX, ret+16(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_job_create(parent_job uint32, options uint32, out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_job_create(SB),NOSPLIT,$8-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL parent_job+0(FP), DI
+ MOVL options+4(FP), SI
+ MOVQ out+8(FP), DX
+ MOVQ vdso_zx_job_create(SB), AX
+ CALL AX
+ MOVL AX, ret+16(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_job_set_policy(handle uint32, options uint32, topic uint32, policy unsafe.Pointer, policy_size uint32) int32
+TEXT runtime·vdsoCall_zx_job_set_policy(SB),NOSPLIT,$8-36
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL options+4(FP), SI
+ MOVL topic+8(FP), DX
+ MOVQ policy+16(FP), CX
+ MOVL policy_size+24(FP), R8
+ MOVQ vdso_zx_job_set_policy(SB), AX
+ CALL AX
+ MOVL AX, ret+32(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_job_set_critical(job uint32, options uint32, process uint32) int32
+TEXT runtime·vdsoCall_zx_job_set_critical(SB),NOSPLIT,$8-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL job+0(FP), DI
+ MOVL options+4(FP), SI
+ MOVL process+8(FP), DX
+ MOVQ vdso_zx_job_set_critical(SB), AX
+ CALL AX
+ MOVL AX, ret+16(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_ktrace_read(handle uint32, data unsafe.Pointer, offset uint32, data_size uint, actual unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_ktrace_read(SB),NOSPLIT,$8-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVQ data+8(FP), SI
+ MOVL offset+16(FP), DX
+ MOVQ data_size+24(FP), CX
+ MOVQ actual+32(FP), R8
+ MOVQ vdso_zx_ktrace_read(SB), AX
+ CALL AX
+ MOVL AX, ret+40(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_ktrace_control(handle uint32, action uint32, options uint32, ptr unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_ktrace_control(SB),NOSPLIT,$8-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL action+4(FP), SI
+ MOVL options+8(FP), DX
+ MOVQ ptr+16(FP), CX
+ MOVQ vdso_zx_ktrace_control(SB), AX
+ CALL AX
+ MOVL AX, ret+24(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_ktrace_write(handle uint32, id uint32, arg0 uint32, arg1 uint32) int32
+TEXT runtime·vdsoCall_zx_ktrace_write(SB),NOSPLIT,$8-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL id+4(FP), SI
+ MOVL arg0+8(FP), DX
+ MOVL arg1+12(FP), CX
+ MOVQ vdso_zx_ktrace_write(SB), AX
+ CALL AX
+ MOVL AX, ret+16(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_nanosleep(deadline int64) int32
+TEXT runtime·vdsoCall_zx_nanosleep(SB),NOSPLIT,$8-12
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVQ deadline+0(FP), DI
+ MOVQ vdso_zx_nanosleep(SB), AX
+ CALL AX
+ MOVL AX, ret+8(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_ticks_get() int64
+TEXT runtime·vdsoCall_zx_ticks_get(SB),NOSPLIT,$8-8
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVQ vdso_zx_ticks_get(SB), AX
+ CALL AX
+ MOVQ AX, ret+0(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_ticks_per_second() int64
+TEXT runtime·vdsoCall_zx_ticks_per_second(SB),NOSPLIT,$8-8
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVQ vdso_zx_ticks_per_second(SB), AX
+ CALL AX
+ MOVQ AX, ret+0(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_deadline_after(nanoseconds int64) int64
+TEXT runtime·vdsoCall_zx_deadline_after(SB),NOSPLIT,$8-16
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVQ nanoseconds+0(FP), DI
+ MOVQ vdso_zx_deadline_after(SB), AX
+ CALL AX
+ MOVQ AX, ret+8(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_vmar_unmap_handle_close_thread_exit(vmar_handle uint32, addr uintptr, size uint, close_handle uint32) int32
+TEXT runtime·vdsoCall_zx_vmar_unmap_handle_close_thread_exit(SB),NOSPLIT,$8-36
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL vmar_handle+0(FP), DI
+ MOVQ addr+8(FP), SI
+ MOVQ size+16(FP), DX
+ MOVL close_handle+24(FP), CX
+ MOVQ vdso_zx_vmar_unmap_handle_close_thread_exit(SB), AX
+ CALL AX
+ MOVL AX, ret+32(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_futex_wake_handle_close_thread_exit(value_ptr unsafe.Pointer, wake_count uint32, new_value int32, close_handle uint32)
+TEXT runtime·vdsoCall_zx_futex_wake_handle_close_thread_exit(SB),NOSPLIT,$8-24
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVQ value_ptr+0(FP), DI
+ MOVL wake_count+8(FP), SI
+ MOVL new_value+12(FP), DX
+ MOVL close_handle+16(FP), CX
+ MOVQ vdso_zx_futex_wake_handle_close_thread_exit(SB), AX
+ CALL AX
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_ticks_get_via_kernel() int64
+TEXT runtime·vdsoCall_zx_ticks_get_via_kernel(SB),NOSPLIT,$8-8
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVQ vdso_zx_ticks_get_via_kernel(SB), AX
+ CALL AX
+ MOVQ AX, ret+0(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_msi_allocate(handle uint32, count uint32, out_allocation unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_msi_allocate(SB),NOSPLIT,$8-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL count+4(FP), SI
+ MOVQ out_allocation+8(FP), DX
+ MOVQ vdso_zx_msi_allocate(SB), AX
+ CALL AX
+ MOVL AX, ret+16(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_msi_create(handle uint32, options uint32, msi_id uint32, vmo uint32, vmo_offset uint, out_interrupt unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_msi_create(SB),NOSPLIT,$8-36
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL options+4(FP), SI
+ MOVL msi_id+8(FP), DX
+ MOVL vmo+12(FP), CX
+ MOVQ vmo_offset+16(FP), R8
+ MOVQ out_interrupt+24(FP), R9
+ MOVQ vdso_zx_msi_create(SB), AX
+ CALL AX
+ MOVL AX, ret+32(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_mtrace_control(handle uint32, kind uint32, action uint32, options uint32, ptr unsafe.Pointer, ptr_size uint) int32
+TEXT runtime·vdsoCall_zx_mtrace_control(SB),NOSPLIT,$8-36
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL kind+4(FP), SI
+ MOVL action+8(FP), DX
+ MOVL options+12(FP), CX
+ MOVQ ptr+16(FP), R8
+ MOVQ ptr_size+24(FP), R9
+ MOVQ vdso_zx_mtrace_control(SB), AX
+ CALL AX
+ MOVL AX, ret+32(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_object_wait_one(handle uint32, signals uint32, deadline int64, observed unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_object_wait_one(SB),NOSPLIT,$8-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ CALL runtime·entersyscall(SB)
+ MOVL handle+0(FP), DI
+ MOVL signals+4(FP), SI
+ MOVQ deadline+8(FP), DX
+ MOVQ observed+16(FP), CX
+ MOVQ vdso_zx_object_wait_one(SB), AX
+ CALL AX
+ MOVL AX, ret+24(FP)
+ CALL runtime·exitsyscall(SB)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_object_wait_many(items unsafe.Pointer, num_items uint, deadline int64) int32
+TEXT runtime·vdsoCall_zx_object_wait_many(SB),NOSPLIT,$8-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ CALL runtime·entersyscall(SB)
+ MOVQ items+0(FP), DI
+ MOVQ num_items+8(FP), SI
+ MOVQ deadline+16(FP), DX
+ MOVQ vdso_zx_object_wait_many(SB), AX
+ CALL AX
+ MOVL AX, ret+24(FP)
+ CALL runtime·exitsyscall(SB)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_object_wait_async(handle uint32, port uint32, key uint64, signals uint32, options uint32) int32
+TEXT runtime·vdsoCall_zx_object_wait_async(SB),NOSPLIT,$8-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL port+4(FP), SI
+ MOVQ key+8(FP), DX
+ MOVL signals+16(FP), CX
+ MOVL options+20(FP), R8
+ MOVQ vdso_zx_object_wait_async(SB), AX
+ CALL AX
+ MOVL AX, ret+24(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_object_signal(handle uint32, clear_mask uint32, set_mask uint32) int32
+TEXT runtime·vdsoCall_zx_object_signal(SB),NOSPLIT,$8-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL clear_mask+4(FP), SI
+ MOVL set_mask+8(FP), DX
+ MOVQ vdso_zx_object_signal(SB), AX
+ CALL AX
+ MOVL AX, ret+16(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_object_signal_peer(handle uint32, clear_mask uint32, set_mask uint32) int32
+TEXT runtime·vdsoCall_zx_object_signal_peer(SB),NOSPLIT,$8-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL clear_mask+4(FP), SI
+ MOVL set_mask+8(FP), DX
+ MOVQ vdso_zx_object_signal_peer(SB), AX
+ CALL AX
+ MOVL AX, ret+16(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_object_get_property(handle uint32, property uint32, value unsafe.Pointer, value_size uint) int32
+TEXT runtime·vdsoCall_zx_object_get_property(SB),NOSPLIT,$8-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL property+4(FP), SI
+ MOVQ value+8(FP), DX
+ MOVQ value_size+16(FP), CX
+ MOVQ vdso_zx_object_get_property(SB), AX
+ CALL AX
+ MOVL AX, ret+24(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_object_set_property(handle uint32, property uint32, value unsafe.Pointer, value_size uint) int32
+TEXT runtime·vdsoCall_zx_object_set_property(SB),NOSPLIT,$8-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL property+4(FP), SI
+ MOVQ value+8(FP), DX
+ MOVQ value_size+16(FP), CX
+ MOVQ vdso_zx_object_set_property(SB), AX
+ CALL AX
+ MOVL AX, ret+24(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_object_get_info(handle uint32, topic uint32, buffer unsafe.Pointer, buffer_size uint, actual unsafe.Pointer, avail unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_object_get_info(SB),NOSPLIT,$8-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL topic+4(FP), SI
+ MOVQ buffer+8(FP), DX
+ MOVQ buffer_size+16(FP), CX
+ MOVQ actual+24(FP), R8
+ MOVQ avail+32(FP), R9
+ MOVQ vdso_zx_object_get_info(SB), AX
+ CALL AX
+ MOVL AX, ret+40(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_object_get_child(handle uint32, koid uint64, rights uint32, out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_object_get_child(SB),NOSPLIT,$8-36
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVQ koid+8(FP), SI
+ MOVL rights+16(FP), DX
+ MOVQ out+24(FP), CX
+ MOVQ vdso_zx_object_get_child(SB), AX
+ CALL AX
+ MOVL AX, ret+32(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_object_set_profile(handle uint32, profile uint32, options uint32) int32
+TEXT runtime·vdsoCall_zx_object_set_profile(SB),NOSPLIT,$8-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL profile+4(FP), SI
+ MOVL options+8(FP), DX
+ MOVQ vdso_zx_object_set_profile(SB), AX
+ CALL AX
+ MOVL AX, ret+16(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_pager_create(options uint32, out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_pager_create(SB),NOSPLIT,$8-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL options+0(FP), DI
+ MOVQ out+8(FP), SI
+ MOVQ vdso_zx_pager_create(SB), AX
+ CALL AX
+ MOVL AX, ret+16(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_pager_create_vmo(pager uint32, options uint32, port uint32, key uint64, size uint64, out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_pager_create_vmo(SB),NOSPLIT,$8-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL pager+0(FP), DI
+ MOVL options+4(FP), SI
+ MOVL port+8(FP), DX
+ MOVQ key+16(FP), CX
+ MOVQ size+24(FP), R8
+ MOVQ out+32(FP), R9
+ MOVQ vdso_zx_pager_create_vmo(SB), AX
+ CALL AX
+ MOVL AX, ret+40(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_pager_detach_vmo(pager uint32, vmo uint32) int32
+TEXT runtime·vdsoCall_zx_pager_detach_vmo(SB),NOSPLIT,$8-12
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL pager+0(FP), DI
+ MOVL vmo+4(FP), SI
+ MOVQ vdso_zx_pager_detach_vmo(SB), AX
+ CALL AX
+ MOVL AX, ret+8(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_pager_supply_pages(pager uint32, pager_vmo uint32, offset uint64, length uint64, aux_vmo uint32, aux_offset uint64) int32
+TEXT runtime·vdsoCall_zx_pager_supply_pages(SB),NOSPLIT,$8-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL pager+0(FP), DI
+ MOVL pager_vmo+4(FP), SI
+ MOVQ offset+8(FP), DX
+ MOVQ length+16(FP), CX
+ MOVL aux_vmo+24(FP), R8
+ MOVQ aux_offset+32(FP), R9
+ MOVQ vdso_zx_pager_supply_pages(SB), AX
+ CALL AX
+ MOVL AX, ret+40(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_pager_op_range(pager uint32, op uint32, pager_vmo uint32, offset uint64, length uint64, data uint64) int32
+TEXT runtime·vdsoCall_zx_pager_op_range(SB),NOSPLIT,$8-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL pager+0(FP), DI
+ MOVL op+4(FP), SI
+ MOVL pager_vmo+8(FP), DX
+ MOVQ offset+16(FP), CX
+ MOVQ length+24(FP), R8
+ MOVQ data+32(FP), R9
+ MOVQ vdso_zx_pager_op_range(SB), AX
+ CALL AX
+ MOVL AX, ret+40(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_pc_firmware_tables(handle uint32, acpi_rsdp unsafe.Pointer, smbios unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_pc_firmware_tables(SB),NOSPLIT,$8-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVQ acpi_rsdp+8(FP), SI
+ MOVQ smbios+16(FP), DX
+ MOVQ vdso_zx_pc_firmware_tables(SB), AX
+ CALL AX
+ MOVL AX, ret+24(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_pci_get_nth_device(handle uint32, index uint32, out_info unsafe.Pointer, out_handle unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_pci_get_nth_device(SB),NOSPLIT,$8-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL index+4(FP), SI
+ MOVQ out_info+8(FP), DX
+ MOVQ out_handle+16(FP), CX
+ MOVQ vdso_zx_pci_get_nth_device(SB), AX
+ CALL AX
+ MOVL AX, ret+24(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_pci_enable_bus_master(handle uint32, enable uint32) int32
+TEXT runtime·vdsoCall_zx_pci_enable_bus_master(SB),NOSPLIT,$8-12
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL enable+4(FP), SI
+ MOVQ vdso_zx_pci_enable_bus_master(SB), AX
+ CALL AX
+ MOVL AX, ret+8(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_pci_reset_device(handle uint32) int32
+TEXT runtime·vdsoCall_zx_pci_reset_device(SB),NOSPLIT,$8-12
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVQ vdso_zx_pci_reset_device(SB), AX
+ CALL AX
+ MOVL AX, ret+8(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_pci_config_read(handle uint32, offset uint16, width uint, out_val unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_pci_config_read(SB),NOSPLIT,$8-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVQ offset+4(FP), SI
+ MOVQ width+8(FP), DX
+ MOVQ out_val+16(FP), CX
+ MOVQ vdso_zx_pci_config_read(SB), AX
+ CALL AX
+ MOVL AX, ret+24(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_pci_config_write(handle uint32, offset uint16, width uint, val uint32) int32
+TEXT runtime·vdsoCall_zx_pci_config_write(SB),NOSPLIT,$8-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVQ offset+4(FP), SI
+ MOVQ width+8(FP), DX
+ MOVL val+16(FP), CX
+ MOVQ vdso_zx_pci_config_write(SB), AX
+ CALL AX
+ MOVL AX, ret+24(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_pci_cfg_pio_rw(handle uint32, bus uint8, dev uint8, funk uint8, offset uint8, val unsafe.Pointer, width uint, write uint32) int32
+TEXT runtime·vdsoCall_zx_pci_cfg_pio_rw(SB),NOSPLIT,$40-36
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 56(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 56(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVQ bus+4(FP), SI
+ MOVQ dev+5(FP), DX
+ MOVQ funk+6(FP), CX
+ MOVQ offset+7(FP), R8
+ MOVQ val+8(FP), R9
+ MOVQ width+16(FP), R12
+ MOVL write+24(FP), R13
+ MOVQ SP, BP // BP is preserved across vsdo call by the x86-64 ABI
+ ANDQ $~15, SP // stack alignment for x86-64 ABI
+ PUSHQ R13
+ PUSHQ R12
+ MOVQ vdso_zx_pci_cfg_pio_rw(SB), AX
+ CALL AX
+ POPQ R12
+ POPQ R13
+ MOVQ BP, SP
+ MOVL AX, ret+32(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_pci_get_bar(handle uint32, bar_num uint32, out_bar unsafe.Pointer, out_handle unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_pci_get_bar(SB),NOSPLIT,$8-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL bar_num+4(FP), SI
+ MOVQ out_bar+8(FP), DX
+ MOVQ out_handle+16(FP), CX
+ MOVQ vdso_zx_pci_get_bar(SB), AX
+ CALL AX
+ MOVL AX, ret+24(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_pci_map_interrupt(handle uint32, which_irq int32, out_handle unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_pci_map_interrupt(SB),NOSPLIT,$8-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL which_irq+4(FP), SI
+ MOVQ out_handle+8(FP), DX
+ MOVQ vdso_zx_pci_map_interrupt(SB), AX
+ CALL AX
+ MOVL AX, ret+16(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_pci_query_irq_mode(handle uint32, mode uint32, out_max_irqs unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_pci_query_irq_mode(SB),NOSPLIT,$8-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL mode+4(FP), SI
+ MOVQ out_max_irqs+8(FP), DX
+ MOVQ vdso_zx_pci_query_irq_mode(SB), AX
+ CALL AX
+ MOVL AX, ret+16(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_pci_set_irq_mode(handle uint32, mode uint32, requested_irq_count uint32) int32
+TEXT runtime·vdsoCall_zx_pci_set_irq_mode(SB),NOSPLIT,$8-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL mode+4(FP), SI
+ MOVL requested_irq_count+8(FP), DX
+ MOVQ vdso_zx_pci_set_irq_mode(SB), AX
+ CALL AX
+ MOVL AX, ret+16(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_pci_init(handle uint32, init_buf unsafe.Pointer, len uint32) int32
+TEXT runtime·vdsoCall_zx_pci_init(SB),NOSPLIT,$8-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVQ init_buf+8(FP), SI
+ MOVL len+16(FP), DX
+ MOVQ vdso_zx_pci_init(SB), AX
+ CALL AX
+ MOVL AX, ret+24(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_pci_add_subtract_io_range(handle uint32, mmio uint32, base uint64, len uint64, add uint32) int32
+TEXT runtime·vdsoCall_zx_pci_add_subtract_io_range(SB),NOSPLIT,$8-36
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL mmio+4(FP), SI
+ MOVQ base+8(FP), DX
+ MOVQ len+16(FP), CX
+ MOVL add+24(FP), R8
+ MOVQ vdso_zx_pci_add_subtract_io_range(SB), AX
+ CALL AX
+ MOVL AX, ret+32(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_pmt_unpin(handle uint32) int32
+TEXT runtime·vdsoCall_zx_pmt_unpin(SB),NOSPLIT,$8-12
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVQ vdso_zx_pmt_unpin(SB), AX
+ CALL AX
+ MOVL AX, ret+8(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_port_create(options uint32, out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_port_create(SB),NOSPLIT,$8-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL options+0(FP), DI
+ MOVQ out+8(FP), SI
+ MOVQ vdso_zx_port_create(SB), AX
+ CALL AX
+ MOVL AX, ret+16(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_port_queue(handle uint32, packet unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_port_queue(SB),NOSPLIT,$8-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVQ packet+8(FP), SI
+ MOVQ vdso_zx_port_queue(SB), AX
+ CALL AX
+ MOVL AX, ret+16(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_port_wait(handle uint32, deadline int64, packet unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_port_wait(SB),NOSPLIT,$8-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ CALL runtime·entersyscall(SB)
+ MOVL handle+0(FP), DI
+ MOVQ deadline+8(FP), SI
+ MOVQ packet+16(FP), DX
+ MOVQ vdso_zx_port_wait(SB), AX
+ CALL AX
+ MOVL AX, ret+24(FP)
+ CALL runtime·exitsyscall(SB)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_port_cancel(handle uint32, source uint32, key uint64) int32
+TEXT runtime·vdsoCall_zx_port_cancel(SB),NOSPLIT,$8-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL source+4(FP), SI
+ MOVQ key+8(FP), DX
+ MOVQ vdso_zx_port_cancel(SB), AX
+ CALL AX
+ MOVL AX, ret+16(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_process_exit(retcode int64)
+TEXT runtime·vdsoCall_zx_process_exit(SB),NOSPLIT,$8-8
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVQ retcode+0(FP), DI
+ MOVQ vdso_zx_process_exit(SB), AX
+ CALL AX
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_process_create(job uint32, name unsafe.Pointer, name_size uint, options uint32, proc_handle unsafe.Pointer, vmar_handle unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_process_create(SB),NOSPLIT,$8-52
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL job+0(FP), DI
+ MOVQ name+8(FP), SI
+ MOVQ name_size+16(FP), DX
+ MOVL options+24(FP), CX
+ MOVQ proc_handle+32(FP), R8
+ MOVQ vmar_handle+40(FP), R9
+ MOVQ vdso_zx_process_create(SB), AX
+ CALL AX
+ MOVL AX, ret+48(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_process_start(handle uint32, thread uint32, entry uintptr, stack uintptr, arg1 uint32, arg2 uintptr) int32
+TEXT runtime·vdsoCall_zx_process_start(SB),NOSPLIT,$8-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL thread+4(FP), SI
+ MOVQ entry+8(FP), DX
+ MOVQ stack+16(FP), CX
+ MOVL arg1+24(FP), R8
+ MOVQ arg2+32(FP), R9
+ MOVQ vdso_zx_process_start(SB), AX
+ CALL AX
+ MOVL AX, ret+40(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_process_read_memory(handle uint32, vaddr uintptr, buffer unsafe.Pointer, buffer_size uint, actual unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_process_read_memory(SB),NOSPLIT,$8-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVQ vaddr+8(FP), SI
+ MOVQ buffer+16(FP), DX
+ MOVQ buffer_size+24(FP), CX
+ MOVQ actual+32(FP), R8
+ MOVQ vdso_zx_process_read_memory(SB), AX
+ CALL AX
+ MOVL AX, ret+40(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_process_write_memory(handle uint32, vaddr uintptr, buffer unsafe.Pointer, buffer_size uint, actual unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_process_write_memory(SB),NOSPLIT,$8-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVQ vaddr+8(FP), SI
+ MOVQ buffer+16(FP), DX
+ MOVQ buffer_size+24(FP), CX
+ MOVQ actual+32(FP), R8
+ MOVQ vdso_zx_process_write_memory(SB), AX
+ CALL AX
+ MOVL AX, ret+40(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_profile_create(root_job uint32, options uint32, profile unsafe.Pointer, out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_profile_create(SB),NOSPLIT,$8-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL root_job+0(FP), DI
+ MOVL options+4(FP), SI
+ MOVQ profile+8(FP), DX
+ MOVQ out+16(FP), CX
+ MOVQ vdso_zx_profile_create(SB), AX
+ CALL AX
+ MOVL AX, ret+24(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_resource_create(parent_rsrc uint32, options uint32, base uint64, size uint, name unsafe.Pointer, name_size uint, resource_out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_resource_create(SB),NOSPLIT,$32-52
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 48(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 48(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL parent_rsrc+0(FP), DI
+ MOVL options+4(FP), SI
+ MOVQ base+8(FP), DX
+ MOVQ size+16(FP), CX
+ MOVQ name+24(FP), R8
+ MOVQ name_size+32(FP), R9
+ MOVQ resource_out+40(FP), R12
+ MOVQ SP, BP // BP is preserved across vsdo call by the x86-64 ABI
+ ANDQ $~15, SP // stack alignment for x86-64 ABI
+ PUSHQ R12
+ MOVQ vdso_zx_resource_create(SB), AX
+ CALL AX
+ POPQ R12
+ MOVQ BP, SP
+ MOVL AX, ret+48(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_smc_call(handle uint32, parameters unsafe.Pointer, out_smc_result unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_smc_call(SB),NOSPLIT,$8-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVQ parameters+8(FP), SI
+ MOVQ out_smc_result+16(FP), DX
+ MOVQ vdso_zx_smc_call(SB), AX
+ CALL AX
+ MOVL AX, ret+24(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_socket_create(options uint32, out0 unsafe.Pointer, out1 unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_socket_create(SB),NOSPLIT,$8-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL options+0(FP), DI
+ MOVQ out0+8(FP), SI
+ MOVQ out1+16(FP), DX
+ MOVQ vdso_zx_socket_create(SB), AX
+ CALL AX
+ MOVL AX, ret+24(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_socket_write(handle uint32, options uint32, buffer unsafe.Pointer, buffer_size uint, actual unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_socket_write(SB),NOSPLIT,$8-36
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL options+4(FP), SI
+ MOVQ buffer+8(FP), DX
+ MOVQ buffer_size+16(FP), CX
+ MOVQ actual+24(FP), R8
+ MOVQ vdso_zx_socket_write(SB), AX
+ CALL AX
+ MOVL AX, ret+32(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_socket_read(handle uint32, options uint32, buffer unsafe.Pointer, buffer_size uint, actual unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_socket_read(SB),NOSPLIT,$8-36
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL options+4(FP), SI
+ MOVQ buffer+8(FP), DX
+ MOVQ buffer_size+16(FP), CX
+ MOVQ actual+24(FP), R8
+ MOVQ vdso_zx_socket_read(SB), AX
+ CALL AX
+ MOVL AX, ret+32(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_socket_shutdown(handle uint32, options uint32) int32
+TEXT runtime·vdsoCall_zx_socket_shutdown(SB),NOSPLIT,$8-12
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL options+4(FP), SI
+ MOVQ vdso_zx_socket_shutdown(SB), AX
+ CALL AX
+ MOVL AX, ret+8(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_stream_create(options uint32, vmo uint32, seek uint64, out_stream unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_stream_create(SB),NOSPLIT,$8-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL options+0(FP), DI
+ MOVL vmo+4(FP), SI
+ MOVQ seek+8(FP), DX
+ MOVQ out_stream+16(FP), CX
+ MOVQ vdso_zx_stream_create(SB), AX
+ CALL AX
+ MOVL AX, ret+24(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_stream_writev(handle uint32, options uint32, vector unsafe.Pointer, num_vector uint, actual unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_stream_writev(SB),NOSPLIT,$8-36
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL options+4(FP), SI
+ MOVQ vector+8(FP), DX
+ MOVQ num_vector+16(FP), CX
+ MOVQ actual+24(FP), R8
+ MOVQ vdso_zx_stream_writev(SB), AX
+ CALL AX
+ MOVL AX, ret+32(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_stream_writev_at(handle uint32, options uint32, offset uint64, vector unsafe.Pointer, num_vector uint, actual unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_stream_writev_at(SB),NOSPLIT,$8-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL options+4(FP), SI
+ MOVQ offset+8(FP), DX
+ MOVQ vector+16(FP), CX
+ MOVQ num_vector+24(FP), R8
+ MOVQ actual+32(FP), R9
+ MOVQ vdso_zx_stream_writev_at(SB), AX
+ CALL AX
+ MOVL AX, ret+40(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_stream_readv(handle uint32, options uint32, vector unsafe.Pointer, num_vector uint, actual unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_stream_readv(SB),NOSPLIT,$8-36
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL options+4(FP), SI
+ MOVQ vector+8(FP), DX
+ MOVQ num_vector+16(FP), CX
+ MOVQ actual+24(FP), R8
+ MOVQ vdso_zx_stream_readv(SB), AX
+ CALL AX
+ MOVL AX, ret+32(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_stream_readv_at(handle uint32, options uint32, offset uint64, vector unsafe.Pointer, num_vector uint, actual unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_stream_readv_at(SB),NOSPLIT,$8-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL options+4(FP), SI
+ MOVQ offset+8(FP), DX
+ MOVQ vector+16(FP), CX
+ MOVQ num_vector+24(FP), R8
+ MOVQ actual+32(FP), R9
+ MOVQ vdso_zx_stream_readv_at(SB), AX
+ CALL AX
+ MOVL AX, ret+40(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_stream_seek(handle uint32, whence uint32, offset int64, out_seek unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_stream_seek(SB),NOSPLIT,$8-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL whence+4(FP), SI
+ MOVQ offset+8(FP), DX
+ MOVQ out_seek+16(FP), CX
+ MOVQ vdso_zx_stream_seek(SB), AX
+ CALL AX
+ MOVL AX, ret+24(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_syscall_test_0() int32
+TEXT runtime·vdsoCall_zx_syscall_test_0(SB),NOSPLIT,$8-4
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVQ vdso_zx_syscall_test_0(SB), AX
+ CALL AX
+ MOVL AX, ret+0(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_syscall_test_1(a int32) int32
+TEXT runtime·vdsoCall_zx_syscall_test_1(SB),NOSPLIT,$8-12
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL a+0(FP), DI
+ MOVQ vdso_zx_syscall_test_1(SB), AX
+ CALL AX
+ MOVL AX, ret+8(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_syscall_test_2(a int32, b int32) int32
+TEXT runtime·vdsoCall_zx_syscall_test_2(SB),NOSPLIT,$8-12
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL a+0(FP), DI
+ MOVL b+4(FP), SI
+ MOVQ vdso_zx_syscall_test_2(SB), AX
+ CALL AX
+ MOVL AX, ret+8(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_syscall_test_3(a int32, b int32, c int32) int32
+TEXT runtime·vdsoCall_zx_syscall_test_3(SB),NOSPLIT,$8-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL a+0(FP), DI
+ MOVL b+4(FP), SI
+ MOVL c+8(FP), DX
+ MOVQ vdso_zx_syscall_test_3(SB), AX
+ CALL AX
+ MOVL AX, ret+16(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_syscall_test_4(a int32, b int32, c int32, d int32) int32
+TEXT runtime·vdsoCall_zx_syscall_test_4(SB),NOSPLIT,$8-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL a+0(FP), DI
+ MOVL b+4(FP), SI
+ MOVL c+8(FP), DX
+ MOVL d+12(FP), CX
+ MOVQ vdso_zx_syscall_test_4(SB), AX
+ CALL AX
+ MOVL AX, ret+16(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_syscall_test_5(a int32, b int32, c int32, d int32, e int32) int32
+TEXT runtime·vdsoCall_zx_syscall_test_5(SB),NOSPLIT,$8-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL a+0(FP), DI
+ MOVL b+4(FP), SI
+ MOVL c+8(FP), DX
+ MOVL d+12(FP), CX
+ MOVL e+16(FP), R8
+ MOVQ vdso_zx_syscall_test_5(SB), AX
+ CALL AX
+ MOVL AX, ret+24(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_syscall_test_6(a int32, b int32, c int32, d int32, e int32, f int32) int32
+TEXT runtime·vdsoCall_zx_syscall_test_6(SB),NOSPLIT,$8-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL a+0(FP), DI
+ MOVL b+4(FP), SI
+ MOVL c+8(FP), DX
+ MOVL d+12(FP), CX
+ MOVL e+16(FP), R8
+ MOVL f+20(FP), R9
+ MOVQ vdso_zx_syscall_test_6(SB), AX
+ CALL AX
+ MOVL AX, ret+24(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_syscall_test_7(a int32, b int32, c int32, d int32, e int32, f int32, g_ int32) int32
+TEXT runtime·vdsoCall_zx_syscall_test_7(SB),NOSPLIT,$32-36
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 48(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 48(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL a+0(FP), DI
+ MOVL b+4(FP), SI
+ MOVL c+8(FP), DX
+ MOVL d+12(FP), CX
+ MOVL e+16(FP), R8
+ MOVL f+20(FP), R9
+ MOVL g_+24(FP), R12
+ MOVQ SP, BP // BP is preserved across vsdo call by the x86-64 ABI
+ ANDQ $~15, SP // stack alignment for x86-64 ABI
+ PUSHQ R12
+ MOVQ vdso_zx_syscall_test_7(SB), AX
+ CALL AX
+ POPQ R12
+ MOVQ BP, SP
+ MOVL AX, ret+32(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_syscall_test_8(a int32, b int32, c int32, d int32, e int32, f int32, g_ int32, h int32) int32
+TEXT runtime·vdsoCall_zx_syscall_test_8(SB),NOSPLIT,$40-36
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 56(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 56(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL a+0(FP), DI
+ MOVL b+4(FP), SI
+ MOVL c+8(FP), DX
+ MOVL d+12(FP), CX
+ MOVL e+16(FP), R8
+ MOVL f+20(FP), R9
+ MOVL g_+24(FP), R12
+ MOVL h+28(FP), R13
+ MOVQ SP, BP // BP is preserved across vsdo call by the x86-64 ABI
+ ANDQ $~15, SP // stack alignment for x86-64 ABI
+ PUSHQ R13
+ PUSHQ R12
+ MOVQ vdso_zx_syscall_test_8(SB), AX
+ CALL AX
+ POPQ R12
+ POPQ R13
+ MOVQ BP, SP
+ MOVL AX, ret+32(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_syscall_test_wrapper(a int32, b int32, c int32) int32
+TEXT runtime·vdsoCall_zx_syscall_test_wrapper(SB),NOSPLIT,$8-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL a+0(FP), DI
+ MOVL b+4(FP), SI
+ MOVL c+8(FP), DX
+ MOVQ vdso_zx_syscall_test_wrapper(SB), AX
+ CALL AX
+ MOVL AX, ret+16(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_syscall_test_handle_create(return_value int32, out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_syscall_test_handle_create(SB),NOSPLIT,$8-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL return_value+0(FP), DI
+ MOVQ out+8(FP), SI
+ MOVQ vdso_zx_syscall_test_handle_create(SB), AX
+ CALL AX
+ MOVL AX, ret+16(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_system_get_dcache_line_size() uint32
+TEXT runtime·vdsoCall_zx_system_get_dcache_line_size(SB),NOSPLIT,$8-4
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVQ vdso_zx_system_get_dcache_line_size(SB), AX
+ CALL AX
+ MOVL AX, ret+0(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_system_get_num_cpus() uint32
+TEXT runtime·vdsoCall_zx_system_get_num_cpus(SB),NOSPLIT,$8-4
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVQ vdso_zx_system_get_num_cpus(SB), AX
+ CALL AX
+ MOVL AX, ret+0(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_system_get_version_string() unsafe.Pointer
+TEXT runtime·vdsoCall_zx_system_get_version_string(SB),NOSPLIT,$8-8
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVQ vdso_zx_system_get_version_string(SB), AX
+ CALL AX
+ MOVQ AX, ret+0(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_system_get_page_size() uint32
+TEXT runtime·vdsoCall_zx_system_get_page_size(SB),NOSPLIT,$8-4
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVQ vdso_zx_system_get_page_size(SB), AX
+ CALL AX
+ MOVL AX, ret+0(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_system_get_physmem() uint64
+TEXT runtime·vdsoCall_zx_system_get_physmem(SB),NOSPLIT,$8-8
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVQ vdso_zx_system_get_physmem(SB), AX
+ CALL AX
+ MOVQ AX, ret+0(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_system_get_features(kind uint32, features unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_system_get_features(SB),NOSPLIT,$8-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL kind+0(FP), DI
+ MOVQ features+8(FP), SI
+ MOVQ vdso_zx_system_get_features(SB), AX
+ CALL AX
+ MOVL AX, ret+16(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_system_get_event(root_job uint32, kind uint32, event unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_system_get_event(SB),NOSPLIT,$8-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL root_job+0(FP), DI
+ MOVL kind+4(FP), SI
+ MOVQ event+8(FP), DX
+ MOVQ vdso_zx_system_get_event(SB), AX
+ CALL AX
+ MOVL AX, ret+16(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_system_mexec(resource uint32, kernel_vmo uint32, bootimage_vmo uint32) int32
+TEXT runtime·vdsoCall_zx_system_mexec(SB),NOSPLIT,$8-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL resource+0(FP), DI
+ MOVL kernel_vmo+4(FP), SI
+ MOVL bootimage_vmo+8(FP), DX
+ MOVQ vdso_zx_system_mexec(SB), AX
+ CALL AX
+ MOVL AX, ret+16(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_system_mexec_payload_get(resource uint32, buffer unsafe.Pointer, buffer_size uint) int32
+TEXT runtime·vdsoCall_zx_system_mexec_payload_get(SB),NOSPLIT,$8-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL resource+0(FP), DI
+ MOVQ buffer+8(FP), SI
+ MOVQ buffer_size+16(FP), DX
+ MOVQ vdso_zx_system_mexec_payload_get(SB), AX
+ CALL AX
+ MOVL AX, ret+24(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_system_powerctl(resource uint32, cmd uint32, arg unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_system_powerctl(SB),NOSPLIT,$8-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL resource+0(FP), DI
+ MOVL cmd+4(FP), SI
+ MOVQ arg+8(FP), DX
+ MOVQ vdso_zx_system_powerctl(SB), AX
+ CALL AX
+ MOVL AX, ret+16(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_task_suspend(handle uint32, token unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_task_suspend(SB),NOSPLIT,$8-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVQ token+8(FP), SI
+ MOVQ vdso_zx_task_suspend(SB), AX
+ CALL AX
+ MOVL AX, ret+16(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_task_suspend_token(handle uint32, token unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_task_suspend_token(SB),NOSPLIT,$8-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVQ token+8(FP), SI
+ MOVQ vdso_zx_task_suspend_token(SB), AX
+ CALL AX
+ MOVL AX, ret+16(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_task_create_exception_channel(handle uint32, options uint32, out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_task_create_exception_channel(SB),NOSPLIT,$8-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL options+4(FP), SI
+ MOVQ out+8(FP), DX
+ MOVQ vdso_zx_task_create_exception_channel(SB), AX
+ CALL AX
+ MOVL AX, ret+16(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_task_kill(handle uint32) int32
+TEXT runtime·vdsoCall_zx_task_kill(SB),NOSPLIT,$8-12
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVQ vdso_zx_task_kill(SB), AX
+ CALL AX
+ MOVL AX, ret+8(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_thread_exit()
+TEXT runtime·vdsoCall_zx_thread_exit(SB),NOSPLIT,$8-0
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVQ vdso_zx_thread_exit(SB), AX
+ CALL AX
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_thread_create(process uint32, name unsafe.Pointer, name_size uint, options uint32, out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_thread_create(SB),NOSPLIT,$8-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL process+0(FP), DI
+ MOVQ name+8(FP), SI
+ MOVQ name_size+16(FP), DX
+ MOVL options+24(FP), CX
+ MOVQ out+32(FP), R8
+ MOVQ vdso_zx_thread_create(SB), AX
+ CALL AX
+ MOVL AX, ret+40(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_thread_start(handle uint32, thread_entry uintptr, stack uintptr, arg1 uintptr, arg2 uintptr) int32
+TEXT runtime·vdsoCall_zx_thread_start(SB),NOSPLIT,$8-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVQ thread_entry+8(FP), SI
+ MOVQ stack+16(FP), DX
+ MOVQ arg1+24(FP), CX
+ MOVQ arg2+32(FP), R8
+ MOVQ vdso_zx_thread_start(SB), AX
+ CALL AX
+ MOVL AX, ret+40(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_thread_read_state(handle uint32, kind uint32, buffer unsafe.Pointer, buffer_size uint) int32
+TEXT runtime·vdsoCall_zx_thread_read_state(SB),NOSPLIT,$8-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL kind+4(FP), SI
+ MOVQ buffer+8(FP), DX
+ MOVQ buffer_size+16(FP), CX
+ MOVQ vdso_zx_thread_read_state(SB), AX
+ CALL AX
+ MOVL AX, ret+24(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_thread_write_state(handle uint32, kind uint32, buffer unsafe.Pointer, buffer_size uint) int32
+TEXT runtime·vdsoCall_zx_thread_write_state(SB),NOSPLIT,$8-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL kind+4(FP), SI
+ MOVQ buffer+8(FP), DX
+ MOVQ buffer_size+16(FP), CX
+ MOVQ vdso_zx_thread_write_state(SB), AX
+ CALL AX
+ MOVL AX, ret+24(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_timer_create(options uint32, clock_id uint32, out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_timer_create(SB),NOSPLIT,$8-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL options+0(FP), DI
+ MOVL clock_id+4(FP), SI
+ MOVQ out+8(FP), DX
+ MOVQ vdso_zx_timer_create(SB), AX
+ CALL AX
+ MOVL AX, ret+16(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_timer_set(handle uint32, deadline int64, slack int64) int32
+TEXT runtime·vdsoCall_zx_timer_set(SB),NOSPLIT,$8-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVQ deadline+8(FP), SI
+ MOVQ slack+16(FP), DX
+ MOVQ vdso_zx_timer_set(SB), AX
+ CALL AX
+ MOVL AX, ret+24(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_timer_cancel(handle uint32) int32
+TEXT runtime·vdsoCall_zx_timer_cancel(SB),NOSPLIT,$8-12
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVQ vdso_zx_timer_cancel(SB), AX
+ CALL AX
+ MOVL AX, ret+8(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_vcpu_create(guest uint32, options uint32, entry uintptr, out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_vcpu_create(SB),NOSPLIT,$8-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL guest+0(FP), DI
+ MOVL options+4(FP), SI
+ MOVQ entry+8(FP), DX
+ MOVQ out+16(FP), CX
+ MOVQ vdso_zx_vcpu_create(SB), AX
+ CALL AX
+ MOVL AX, ret+24(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_vcpu_resume(handle uint32, packet unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_vcpu_resume(SB),NOSPLIT,$8-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ CALL runtime·entersyscall(SB)
+ MOVL handle+0(FP), DI
+ MOVQ packet+8(FP), SI
+ MOVQ vdso_zx_vcpu_resume(SB), AX
+ CALL AX
+ MOVL AX, ret+16(FP)
+ CALL runtime·exitsyscall(SB)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_vcpu_interrupt(handle uint32, vector uint32) int32
+TEXT runtime·vdsoCall_zx_vcpu_interrupt(SB),NOSPLIT,$8-12
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL vector+4(FP), SI
+ MOVQ vdso_zx_vcpu_interrupt(SB), AX
+ CALL AX
+ MOVL AX, ret+8(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_vcpu_read_state(handle uint32, kind uint32, buffer unsafe.Pointer, buffer_size uint) int32
+TEXT runtime·vdsoCall_zx_vcpu_read_state(SB),NOSPLIT,$8-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL kind+4(FP), SI
+ MOVQ buffer+8(FP), DX
+ MOVQ buffer_size+16(FP), CX
+ MOVQ vdso_zx_vcpu_read_state(SB), AX
+ CALL AX
+ MOVL AX, ret+24(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_vcpu_write_state(handle uint32, kind uint32, buffer unsafe.Pointer, buffer_size uint) int32
+TEXT runtime·vdsoCall_zx_vcpu_write_state(SB),NOSPLIT,$8-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL kind+4(FP), SI
+ MOVQ buffer+8(FP), DX
+ MOVQ buffer_size+16(FP), CX
+ MOVQ vdso_zx_vcpu_write_state(SB), AX
+ CALL AX
+ MOVL AX, ret+24(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_vmar_allocate(parent_vmar uint32, options uint32, offset uint, size uint, child_vmar unsafe.Pointer, child_addr unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_vmar_allocate(SB),NOSPLIT,$8-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL parent_vmar+0(FP), DI
+ MOVL options+4(FP), SI
+ MOVQ offset+8(FP), DX
+ MOVQ size+16(FP), CX
+ MOVQ child_vmar+24(FP), R8
+ MOVQ child_addr+32(FP), R9
+ MOVQ vdso_zx_vmar_allocate(SB), AX
+ CALL AX
+ MOVL AX, ret+40(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_vmar_destroy(handle uint32) int32
+TEXT runtime·vdsoCall_zx_vmar_destroy(SB),NOSPLIT,$8-12
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVQ vdso_zx_vmar_destroy(SB), AX
+ CALL AX
+ MOVL AX, ret+8(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_vmar_map(handle uint32, options uint32, vmar_offset uint, vmo uint32, vmo_offset uint64, len uint, mapped_addr unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_vmar_map(SB),NOSPLIT,$32-52
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 48(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 48(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL options+4(FP), SI
+ MOVQ vmar_offset+8(FP), DX
+ MOVL vmo+16(FP), CX
+ MOVQ vmo_offset+24(FP), R8
+ MOVQ len+32(FP), R9
+ MOVQ mapped_addr+40(FP), R12
+ MOVQ SP, BP // BP is preserved across vsdo call by the x86-64 ABI
+ ANDQ $~15, SP // stack alignment for x86-64 ABI
+ PUSHQ R12
+ MOVQ vdso_zx_vmar_map(SB), AX
+ CALL AX
+ POPQ R12
+ MOVQ BP, SP
+ MOVL AX, ret+48(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_vmar_unmap(handle uint32, addr uintptr, len uint) int32
+TEXT runtime·vdsoCall_zx_vmar_unmap(SB),NOSPLIT,$8-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVQ addr+8(FP), SI
+ MOVQ len+16(FP), DX
+ MOVQ vdso_zx_vmar_unmap(SB), AX
+ CALL AX
+ MOVL AX, ret+24(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_vmar_protect(handle uint32, options uint32, addr uintptr, len uint) int32
+TEXT runtime·vdsoCall_zx_vmar_protect(SB),NOSPLIT,$8-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL options+4(FP), SI
+ MOVQ addr+8(FP), DX
+ MOVQ len+16(FP), CX
+ MOVQ vdso_zx_vmar_protect(SB), AX
+ CALL AX
+ MOVL AX, ret+24(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_vmar_op_range(handle uint32, op uint32, address uintptr, size uint, buffer unsafe.Pointer, buffer_size uint) int32
+TEXT runtime·vdsoCall_zx_vmar_op_range(SB),NOSPLIT,$8-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL op+4(FP), SI
+ MOVQ address+8(FP), DX
+ MOVQ size+16(FP), CX
+ MOVQ buffer+24(FP), R8
+ MOVQ buffer_size+32(FP), R9
+ MOVQ vdso_zx_vmar_op_range(SB), AX
+ CALL AX
+ MOVL AX, ret+40(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_vmo_create(size uint64, options uint32, out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_vmo_create(SB),NOSPLIT,$8-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVQ size+0(FP), DI
+ MOVL options+8(FP), SI
+ MOVQ out+16(FP), DX
+ MOVQ vdso_zx_vmo_create(SB), AX
+ CALL AX
+ MOVL AX, ret+24(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_vmo_read(handle uint32, buffer unsafe.Pointer, offset uint64, buffer_size uint) int32
+TEXT runtime·vdsoCall_zx_vmo_read(SB),NOSPLIT,$8-36
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ CALL runtime·entersyscall(SB)
+ MOVL handle+0(FP), DI
+ MOVQ buffer+8(FP), SI
+ MOVQ offset+16(FP), DX
+ MOVQ buffer_size+24(FP), CX
+ MOVQ vdso_zx_vmo_read(SB), AX
+ CALL AX
+ MOVL AX, ret+32(FP)
+ CALL runtime·exitsyscall(SB)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_vmo_write(handle uint32, buffer unsafe.Pointer, offset uint64, buffer_size uint) int32
+TEXT runtime·vdsoCall_zx_vmo_write(SB),NOSPLIT,$8-36
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ CALL runtime·entersyscall(SB)
+ MOVL handle+0(FP), DI
+ MOVQ buffer+8(FP), SI
+ MOVQ offset+16(FP), DX
+ MOVQ buffer_size+24(FP), CX
+ MOVQ vdso_zx_vmo_write(SB), AX
+ CALL AX
+ MOVL AX, ret+32(FP)
+ CALL runtime·exitsyscall(SB)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_vmo_get_size(handle uint32, size unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_vmo_get_size(SB),NOSPLIT,$8-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVQ size+8(FP), SI
+ MOVQ vdso_zx_vmo_get_size(SB), AX
+ CALL AX
+ MOVL AX, ret+16(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_vmo_set_size(handle uint32, size uint64) int32
+TEXT runtime·vdsoCall_zx_vmo_set_size(SB),NOSPLIT,$8-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVQ size+8(FP), SI
+ MOVQ vdso_zx_vmo_set_size(SB), AX
+ CALL AX
+ MOVL AX, ret+16(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_vmo_op_range(handle uint32, op uint32, offset uint64, size uint64, buffer unsafe.Pointer, buffer_size uint) int32
+TEXT runtime·vdsoCall_zx_vmo_op_range(SB),NOSPLIT,$8-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ CALL runtime·entersyscall(SB)
+ MOVL handle+0(FP), DI
+ MOVL op+4(FP), SI
+ MOVQ offset+8(FP), DX
+ MOVQ size+16(FP), CX
+ MOVQ buffer+24(FP), R8
+ MOVQ buffer_size+32(FP), R9
+ MOVQ vdso_zx_vmo_op_range(SB), AX
+ CALL AX
+ MOVL AX, ret+40(FP)
+ CALL runtime·exitsyscall(SB)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_vmo_create_child(handle uint32, options uint32, offset uint64, size uint64, out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_vmo_create_child(SB),NOSPLIT,$8-36
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL options+4(FP), SI
+ MOVQ offset+8(FP), DX
+ MOVQ size+16(FP), CX
+ MOVQ out+24(FP), R8
+ MOVQ vdso_zx_vmo_create_child(SB), AX
+ CALL AX
+ MOVL AX, ret+32(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_vmo_set_cache_policy(handle uint32, cache_policy uint32) int32
+TEXT runtime·vdsoCall_zx_vmo_set_cache_policy(SB),NOSPLIT,$8-12
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL cache_policy+4(FP), SI
+ MOVQ vdso_zx_vmo_set_cache_policy(SB), AX
+ CALL AX
+ MOVL AX, ret+8(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_vmo_replace_as_executable(handle uint32, vmex uint32, out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_vmo_replace_as_executable(SB),NOSPLIT,$8-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL handle+0(FP), DI
+ MOVL vmex+4(FP), SI
+ MOVQ out+8(FP), DX
+ MOVQ vdso_zx_vmo_replace_as_executable(SB), AX
+ CALL AX
+ MOVL AX, ret+16(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_vmo_create_contiguous(bti uint32, size uint, alignment_log2 uint32, out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_vmo_create_contiguous(SB),NOSPLIT,$8-36
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL bti+0(FP), DI
+ MOVQ size+8(FP), SI
+ MOVL alignment_log2+16(FP), DX
+ MOVQ out+24(FP), CX
+ MOVQ vdso_zx_vmo_create_contiguous(SB), AX
+ CALL AX
+ MOVL AX, ret+32(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
+// func vdsoCall_zx_vmo_create_physical(resource uint32, paddr uintptr, size uint, out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_vmo_create_physical(SB),NOSPLIT,$8-36
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ get_tls(CX)
+ MOVQ g(CX), AX
+ MOVQ g_m(AX), R14
+ PUSHQ R14
+ MOVQ 24(SP), DX
+ MOVQ DX, m_vdsoPC(R14)
+ LEAQ 24(SP), DX
+ MOVQ DX, m_vdsoSP(R14)
+ MOVL resource+0(FP), DI
+ MOVQ paddr+8(FP), SI
+ MOVQ size+16(FP), DX
+ MOVQ out+24(FP), CX
+ MOVQ vdso_zx_vmo_create_physical(SB), AX
+ CALL AX
+ MOVL AX, ret+32(FP)
+ POPQ R14
+ MOVQ $0, m_vdsoSP(R14)
+ RET
+
diff --git a/src/runtime/vdsocalls_fuchsia_arm64.s b/src/runtime/vdsocalls_fuchsia_arm64.s
new file mode 100644
index 0000000..075ad49
--- /dev/null
+++ b/src/runtime/vdsocalls_fuchsia_arm64.s
@@ -0,0 +1,3412 @@
+// Copyright 2019 The Fuchsia Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// WARNING: THIS FILE IS MACHINE GENERATED BY //tools/kazoo. DO NOT EDIT.
+
+#include "go_asm.h"
+#include "go_tls.h"
+#include "textflag.h"
+#include "funcdata.h"
+
+// func vdsoCall_zx_bti_create(iommu uint32, options uint32, bti_id uint64, out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_bti_create(SB),NOSPLIT,$0-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW iommu+0(FP), R0
+ MOVW options+4(FP), R1
+ MOVD bti_id+8(FP), R2
+ MOVD out+16(FP), R3
+ BL vdso_zx_bti_create(SB)
+ MOVW R0, ret+24(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_bti_pin(handle uint32, options uint32, vmo uint32, offset uint64, size uint64, addrs unsafe.Pointer, num_addrs uint, pmt unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_bti_pin(SB),NOSPLIT,$0-60
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW options+4(FP), R1
+ MOVW vmo+8(FP), R2
+ MOVD offset+16(FP), R3
+ MOVD size+24(FP), R4
+ MOVD addrs+32(FP), R5
+ MOVD num_addrs+40(FP), R6
+ MOVD pmt+48(FP), R7
+ BL vdso_zx_bti_pin(SB)
+ MOVW R0, ret+56(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_bti_release_quarantine(handle uint32) int32
+TEXT runtime·vdsoCall_zx_bti_release_quarantine(SB),NOSPLIT,$0-12
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ BL vdso_zx_bti_release_quarantine(SB)
+ MOVW R0, ret+8(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_cache_flush(addr unsafe.Pointer, size uint, options uint32) int32
+TEXT runtime·vdsoCall_zx_cache_flush(SB),NOSPLIT,$0-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVD addr+0(FP), R0
+ MOVD size+8(FP), R1
+ MOVW options+16(FP), R2
+ BL vdso_zx_cache_flush(SB)
+ MOVW R0, ret+24(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_channel_create(options uint32, out0 unsafe.Pointer, out1 unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_channel_create(SB),NOSPLIT,$0-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW options+0(FP), R0
+ MOVD out0+8(FP), R1
+ MOVD out1+16(FP), R2
+ BL vdso_zx_channel_create(SB)
+ MOVW R0, ret+24(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_channel_read(handle uint32, options uint32, bytes unsafe.Pointer, handles unsafe.Pointer, num_bytes uint32, num_handles uint32, actual_bytes unsafe.Pointer, actual_handles unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_channel_read(SB),NOSPLIT,$0-52
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW options+4(FP), R1
+ MOVD bytes+8(FP), R2
+ MOVD handles+16(FP), R3
+ MOVW num_bytes+24(FP), R4
+ MOVW num_handles+28(FP), R5
+ MOVD actual_bytes+32(FP), R6
+ MOVD actual_handles+40(FP), R7
+ BL vdso_zx_channel_read(SB)
+ MOVW R0, ret+48(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_channel_read_etc(handle uint32, options uint32, bytes unsafe.Pointer, handles unsafe.Pointer, num_bytes uint32, num_handles uint32, actual_bytes unsafe.Pointer, actual_handles unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_channel_read_etc(SB),NOSPLIT,$0-52
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW options+4(FP), R1
+ MOVD bytes+8(FP), R2
+ MOVD handles+16(FP), R3
+ MOVW num_bytes+24(FP), R4
+ MOVW num_handles+28(FP), R5
+ MOVD actual_bytes+32(FP), R6
+ MOVD actual_handles+40(FP), R7
+ BL vdso_zx_channel_read_etc(SB)
+ MOVW R0, ret+48(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_channel_write(handle uint32, options uint32, bytes unsafe.Pointer, num_bytes uint32, handles unsafe.Pointer, num_handles uint32) int32
+TEXT runtime·vdsoCall_zx_channel_write(SB),NOSPLIT,$0-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW options+4(FP), R1
+ MOVD bytes+8(FP), R2
+ MOVW num_bytes+16(FP), R3
+ MOVD handles+24(FP), R4
+ MOVW num_handles+32(FP), R5
+ BL vdso_zx_channel_write(SB)
+ MOVW R0, ret+40(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_channel_write_etc(handle uint32, options uint32, bytes unsafe.Pointer, num_bytes uint32, handles unsafe.Pointer, num_handles uint32) int32
+TEXT runtime·vdsoCall_zx_channel_write_etc(SB),NOSPLIT,$0-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW options+4(FP), R1
+ MOVD bytes+8(FP), R2
+ MOVW num_bytes+16(FP), R3
+ MOVD handles+24(FP), R4
+ MOVW num_handles+32(FP), R5
+ BL vdso_zx_channel_write_etc(SB)
+ MOVW R0, ret+40(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_channel_call_noretry(handle uint32, options uint32, deadline int64, args unsafe.Pointer, actual_bytes unsafe.Pointer, actual_handles unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_channel_call_noretry(SB),NOSPLIT,$0-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW options+4(FP), R1
+ MOVD deadline+8(FP), R2
+ MOVD args+16(FP), R3
+ MOVD actual_bytes+24(FP), R4
+ MOVD actual_handles+32(FP), R5
+ BL vdso_zx_channel_call_noretry(SB)
+ MOVW R0, ret+40(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_channel_call_finish(deadline int64, args unsafe.Pointer, actual_bytes unsafe.Pointer, actual_handles unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_channel_call_finish(SB),NOSPLIT,$0-36
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVD deadline+0(FP), R0
+ MOVD args+8(FP), R1
+ MOVD actual_bytes+16(FP), R2
+ MOVD actual_handles+24(FP), R3
+ BL vdso_zx_channel_call_finish(SB)
+ MOVW R0, ret+32(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_channel_call(handle uint32, options uint32, deadline int64, args unsafe.Pointer, actual_bytes unsafe.Pointer, actual_handles unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_channel_call(SB),NOSPLIT,$0-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ CALL runtime·entersyscall(SB)
+ MOVW handle+0(FP), R0
+ MOVW options+4(FP), R1
+ MOVD deadline+8(FP), R2
+ MOVD args+16(FP), R3
+ MOVD actual_bytes+24(FP), R4
+ MOVD actual_handles+32(FP), R5
+ BL vdso_zx_channel_call(SB)
+ MOVW R0, ret+40(FP)
+ BL runtime·exitsyscall(SB)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_channel_call_etc_noretry(handle uint32, options uint32, deadline int64, args unsafe.Pointer, actual_bytes unsafe.Pointer, actual_handles unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_channel_call_etc_noretry(SB),NOSPLIT,$0-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW options+4(FP), R1
+ MOVD deadline+8(FP), R2
+ MOVD args+16(FP), R3
+ MOVD actual_bytes+24(FP), R4
+ MOVD actual_handles+32(FP), R5
+ BL vdso_zx_channel_call_etc_noretry(SB)
+ MOVW R0, ret+40(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_channel_call_etc_finish(deadline int64, args unsafe.Pointer, actual_bytes unsafe.Pointer, actual_handles unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_channel_call_etc_finish(SB),NOSPLIT,$0-36
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVD deadline+0(FP), R0
+ MOVD args+8(FP), R1
+ MOVD actual_bytes+16(FP), R2
+ MOVD actual_handles+24(FP), R3
+ BL vdso_zx_channel_call_etc_finish(SB)
+ MOVW R0, ret+32(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_channel_call_etc(handle uint32, options uint32, deadline int64, args unsafe.Pointer, actual_bytes unsafe.Pointer, actual_handles unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_channel_call_etc(SB),NOSPLIT,$0-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ CALL runtime·entersyscall(SB)
+ MOVW handle+0(FP), R0
+ MOVW options+4(FP), R1
+ MOVD deadline+8(FP), R2
+ MOVD args+16(FP), R3
+ MOVD actual_bytes+24(FP), R4
+ MOVD actual_handles+32(FP), R5
+ BL vdso_zx_channel_call_etc(SB)
+ MOVW R0, ret+40(FP)
+ BL runtime·exitsyscall(SB)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_clock_get_monotonic() int64
+TEXT runtime·vdsoCall_zx_clock_get_monotonic(SB),NOSPLIT,$0-8
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ BL vdso_zx_clock_get_monotonic(SB)
+ MOVD R0, ret+0(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_clock_get_monotonic_via_kernel() int64
+TEXT runtime·vdsoCall_zx_clock_get_monotonic_via_kernel(SB),NOSPLIT,$0-8
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ BL vdso_zx_clock_get_monotonic_via_kernel(SB)
+ MOVD R0, ret+0(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_clock_create(options uint64, args unsafe.Pointer, out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_clock_create(SB),NOSPLIT,$0-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVD options+0(FP), R0
+ MOVD args+8(FP), R1
+ MOVD out+16(FP), R2
+ BL vdso_zx_clock_create(SB)
+ MOVW R0, ret+24(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_clock_read(handle uint32, now unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_clock_read(SB),NOSPLIT,$0-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVD now+8(FP), R1
+ BL vdso_zx_clock_read(SB)
+ MOVW R0, ret+16(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_clock_get_details(handle uint32, options uint64, details unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_clock_get_details(SB),NOSPLIT,$0-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVD options+8(FP), R1
+ MOVD details+16(FP), R2
+ BL vdso_zx_clock_get_details(SB)
+ MOVW R0, ret+24(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_clock_update(handle uint32, options uint64, args unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_clock_update(SB),NOSPLIT,$0-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVD options+8(FP), R1
+ MOVD args+16(FP), R2
+ BL vdso_zx_clock_update(SB)
+ MOVW R0, ret+24(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_cprng_draw_once(buffer unsafe.Pointer, buffer_size uint) int32
+TEXT runtime·vdsoCall_zx_cprng_draw_once(SB),NOSPLIT,$0-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVD buffer+0(FP), R0
+ MOVD buffer_size+8(FP), R1
+ BL vdso_zx_cprng_draw_once(SB)
+ MOVW R0, ret+16(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_cprng_draw(buffer unsafe.Pointer, buffer_size uint)
+TEXT runtime·vdsoCall_zx_cprng_draw(SB),NOSPLIT,$0-16
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVD buffer+0(FP), R0
+ MOVD buffer_size+8(FP), R1
+ BL vdso_zx_cprng_draw(SB)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_cprng_add_entropy(buffer unsafe.Pointer, buffer_size uint) int32
+TEXT runtime·vdsoCall_zx_cprng_add_entropy(SB),NOSPLIT,$0-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVD buffer+0(FP), R0
+ MOVD buffer_size+8(FP), R1
+ BL vdso_zx_cprng_add_entropy(SB)
+ MOVW R0, ret+16(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_debug_read(handle uint32, buffer unsafe.Pointer, buffer_size uint, actual unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_debug_read(SB),NOSPLIT,$0-36
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVD buffer+8(FP), R1
+ MOVD buffer_size+16(FP), R2
+ MOVD actual+24(FP), R3
+ BL vdso_zx_debug_read(SB)
+ MOVW R0, ret+32(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_debug_write(buffer unsafe.Pointer, buffer_size uint) int32
+TEXT runtime·vdsoCall_zx_debug_write(SB),NOSPLIT,$0-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVD buffer+0(FP), R0
+ MOVD buffer_size+8(FP), R1
+ BL vdso_zx_debug_write(SB)
+ MOVW R0, ret+16(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_debug_send_command(resource uint32, buffer unsafe.Pointer, buffer_size uint) int32
+TEXT runtime·vdsoCall_zx_debug_send_command(SB),NOSPLIT,$0-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW resource+0(FP), R0
+ MOVD buffer+8(FP), R1
+ MOVD buffer_size+16(FP), R2
+ BL vdso_zx_debug_send_command(SB)
+ MOVW R0, ret+24(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_debuglog_create(resource uint32, options uint32, out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_debuglog_create(SB),NOSPLIT,$0-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW resource+0(FP), R0
+ MOVW options+4(FP), R1
+ MOVD out+8(FP), R2
+ BL vdso_zx_debuglog_create(SB)
+ MOVW R0, ret+16(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_debuglog_write(handle uint32, options uint32, buffer unsafe.Pointer, buffer_size uint) int32
+TEXT runtime·vdsoCall_zx_debuglog_write(SB),NOSPLIT,$0-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW options+4(FP), R1
+ MOVD buffer+8(FP), R2
+ MOVD buffer_size+16(FP), R3
+ BL vdso_zx_debuglog_write(SB)
+ MOVW R0, ret+24(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_debuglog_read(handle uint32, options uint32, buffer unsafe.Pointer, buffer_size uint) int32
+TEXT runtime·vdsoCall_zx_debuglog_read(SB),NOSPLIT,$0-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW options+4(FP), R1
+ MOVD buffer+8(FP), R2
+ MOVD buffer_size+16(FP), R3
+ BL vdso_zx_debuglog_read(SB)
+ MOVW R0, ret+24(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_event_create(options uint32, out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_event_create(SB),NOSPLIT,$0-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW options+0(FP), R0
+ MOVD out+8(FP), R1
+ BL vdso_zx_event_create(SB)
+ MOVW R0, ret+16(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_eventpair_create(options uint32, out0 unsafe.Pointer, out1 unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_eventpair_create(SB),NOSPLIT,$0-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW options+0(FP), R0
+ MOVD out0+8(FP), R1
+ MOVD out1+16(FP), R2
+ BL vdso_zx_eventpair_create(SB)
+ MOVW R0, ret+24(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_exception_get_thread(handle uint32, out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_exception_get_thread(SB),NOSPLIT,$0-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVD out+8(FP), R1
+ BL vdso_zx_exception_get_thread(SB)
+ MOVW R0, ret+16(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_exception_get_process(handle uint32, out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_exception_get_process(SB),NOSPLIT,$0-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVD out+8(FP), R1
+ BL vdso_zx_exception_get_process(SB)
+ MOVW R0, ret+16(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_fifo_create(elem_count uint, elem_size uint, options uint32, out0 unsafe.Pointer, out1 unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_fifo_create(SB),NOSPLIT,$0-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVD elem_count+0(FP), R0
+ MOVD elem_size+8(FP), R1
+ MOVW options+16(FP), R2
+ MOVD out0+24(FP), R3
+ MOVD out1+32(FP), R4
+ BL vdso_zx_fifo_create(SB)
+ MOVW R0, ret+40(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_fifo_read(handle uint32, elem_size uint, data unsafe.Pointer, data_size uint, actual_count unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_fifo_read(SB),NOSPLIT,$0-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVD elem_size+8(FP), R1
+ MOVD data+16(FP), R2
+ MOVD data_size+24(FP), R3
+ MOVD actual_count+32(FP), R4
+ BL vdso_zx_fifo_read(SB)
+ MOVW R0, ret+40(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_fifo_write(handle uint32, elem_size uint, data unsafe.Pointer, count uint, actual_count unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_fifo_write(SB),NOSPLIT,$0-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVD elem_size+8(FP), R1
+ MOVD data+16(FP), R2
+ MOVD count+24(FP), R3
+ MOVD actual_count+32(FP), R4
+ BL vdso_zx_fifo_write(SB)
+ MOVW R0, ret+40(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_framebuffer_get_info(resource uint32, format unsafe.Pointer, width unsafe.Pointer, height unsafe.Pointer, stride unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_framebuffer_get_info(SB),NOSPLIT,$0-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW resource+0(FP), R0
+ MOVD format+8(FP), R1
+ MOVD width+16(FP), R2
+ MOVD height+24(FP), R3
+ MOVD stride+32(FP), R4
+ BL vdso_zx_framebuffer_get_info(SB)
+ MOVW R0, ret+40(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_framebuffer_set_range(resource uint32, vmo uint32, len uint32, format uint32, width uint32, height uint32, stride uint32) int32
+TEXT runtime·vdsoCall_zx_framebuffer_set_range(SB),NOSPLIT,$0-36
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW resource+0(FP), R0
+ MOVW vmo+4(FP), R1
+ MOVW len+8(FP), R2
+ MOVW format+12(FP), R3
+ MOVW width+16(FP), R4
+ MOVW height+20(FP), R5
+ MOVW stride+24(FP), R6
+ BL vdso_zx_framebuffer_set_range(SB)
+ MOVW R0, ret+32(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_futex_wait(value_ptr unsafe.Pointer, current_value int32, new_futex_owner uint32, deadline int64) int32
+TEXT runtime·vdsoCall_zx_futex_wait(SB),NOSPLIT,$0-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVD value_ptr+0(FP), R0
+ MOVW current_value+8(FP), R1
+ MOVW new_futex_owner+12(FP), R2
+ MOVD deadline+16(FP), R3
+ BL vdso_zx_futex_wait(SB)
+ MOVW R0, ret+24(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_futex_wake(value_ptr unsafe.Pointer, wake_count uint32) int32
+TEXT runtime·vdsoCall_zx_futex_wake(SB),NOSPLIT,$0-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVD value_ptr+0(FP), R0
+ MOVW wake_count+8(FP), R1
+ BL vdso_zx_futex_wake(SB)
+ MOVW R0, ret+16(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_futex_requeue(value_ptr unsafe.Pointer, wake_count uint32, current_value int32, requeue_ptr unsafe.Pointer, requeue_count uint32, new_requeue_owner uint32) int32
+TEXT runtime·vdsoCall_zx_futex_requeue(SB),NOSPLIT,$0-36
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVD value_ptr+0(FP), R0
+ MOVW wake_count+8(FP), R1
+ MOVW current_value+12(FP), R2
+ MOVD requeue_ptr+16(FP), R3
+ MOVW requeue_count+24(FP), R4
+ MOVW new_requeue_owner+28(FP), R5
+ BL vdso_zx_futex_requeue(SB)
+ MOVW R0, ret+32(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_futex_wake_single_owner(value_ptr unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_futex_wake_single_owner(SB),NOSPLIT,$0-12
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVD value_ptr+0(FP), R0
+ BL vdso_zx_futex_wake_single_owner(SB)
+ MOVW R0, ret+8(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_futex_requeue_single_owner(value_ptr unsafe.Pointer, current_value int32, requeue_ptr unsafe.Pointer, requeue_count uint32, new_requeue_owner uint32) int32
+TEXT runtime·vdsoCall_zx_futex_requeue_single_owner(SB),NOSPLIT,$0-36
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVD value_ptr+0(FP), R0
+ MOVW current_value+8(FP), R1
+ MOVD requeue_ptr+16(FP), R2
+ MOVW requeue_count+24(FP), R3
+ MOVW new_requeue_owner+28(FP), R4
+ BL vdso_zx_futex_requeue_single_owner(SB)
+ MOVW R0, ret+32(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_futex_get_owner(value_ptr unsafe.Pointer, koid unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_futex_get_owner(SB),NOSPLIT,$0-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVD value_ptr+0(FP), R0
+ MOVD koid+8(FP), R1
+ BL vdso_zx_futex_get_owner(SB)
+ MOVW R0, ret+16(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_guest_create(resource uint32, options uint32, guest_handle unsafe.Pointer, vmar_handle unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_guest_create(SB),NOSPLIT,$0-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW resource+0(FP), R0
+ MOVW options+4(FP), R1
+ MOVD guest_handle+8(FP), R2
+ MOVD vmar_handle+16(FP), R3
+ BL vdso_zx_guest_create(SB)
+ MOVW R0, ret+24(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_guest_set_trap(handle uint32, kind uint32, addr uintptr, size uint, port_handle uint32, key uint64) int32
+TEXT runtime·vdsoCall_zx_guest_set_trap(SB),NOSPLIT,$0-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW kind+4(FP), R1
+ MOVD addr+8(FP), R2
+ MOVD size+16(FP), R3
+ MOVW port_handle+24(FP), R4
+ MOVD key+32(FP), R5
+ BL vdso_zx_guest_set_trap(SB)
+ MOVW R0, ret+40(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_handle_close(handle uint32) int32
+TEXT runtime·vdsoCall_zx_handle_close(SB),NOSPLIT,$0-12
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ BL vdso_zx_handle_close(SB)
+ MOVW R0, ret+8(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_handle_close_many(handles unsafe.Pointer, num_handles uint) int32
+TEXT runtime·vdsoCall_zx_handle_close_many(SB),NOSPLIT,$0-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVD handles+0(FP), R0
+ MOVD num_handles+8(FP), R1
+ BL vdso_zx_handle_close_many(SB)
+ MOVW R0, ret+16(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_handle_duplicate(handle uint32, rights uint32, out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_handle_duplicate(SB),NOSPLIT,$0-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW rights+4(FP), R1
+ MOVD out+8(FP), R2
+ BL vdso_zx_handle_duplicate(SB)
+ MOVW R0, ret+16(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_handle_replace(handle uint32, rights uint32, out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_handle_replace(SB),NOSPLIT,$0-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW rights+4(FP), R1
+ MOVD out+8(FP), R2
+ BL vdso_zx_handle_replace(SB)
+ MOVW R0, ret+16(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_interrupt_create(src_obj uint32, src_num uint32, options uint32, out_handle unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_interrupt_create(SB),NOSPLIT,$0-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW src_obj+0(FP), R0
+ MOVW src_num+4(FP), R1
+ MOVW options+8(FP), R2
+ MOVD out_handle+16(FP), R3
+ BL vdso_zx_interrupt_create(SB)
+ MOVW R0, ret+24(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_interrupt_bind(handle uint32, port_handle uint32, key uint64, options uint32) int32
+TEXT runtime·vdsoCall_zx_interrupt_bind(SB),NOSPLIT,$0-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW port_handle+4(FP), R1
+ MOVD key+8(FP), R2
+ MOVW options+16(FP), R3
+ BL vdso_zx_interrupt_bind(SB)
+ MOVW R0, ret+24(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_interrupt_wait(handle uint32, out_timestamp unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_interrupt_wait(SB),NOSPLIT,$0-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ CALL runtime·entersyscall(SB)
+ MOVW handle+0(FP), R0
+ MOVD out_timestamp+8(FP), R1
+ BL vdso_zx_interrupt_wait(SB)
+ MOVW R0, ret+16(FP)
+ BL runtime·exitsyscall(SB)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_interrupt_destroy(handle uint32) int32
+TEXT runtime·vdsoCall_zx_interrupt_destroy(SB),NOSPLIT,$0-12
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ BL vdso_zx_interrupt_destroy(SB)
+ MOVW R0, ret+8(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_interrupt_ack(handle uint32) int32
+TEXT runtime·vdsoCall_zx_interrupt_ack(SB),NOSPLIT,$0-12
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ BL vdso_zx_interrupt_ack(SB)
+ MOVW R0, ret+8(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_interrupt_trigger(handle uint32, options uint32, timestamp int64) int32
+TEXT runtime·vdsoCall_zx_interrupt_trigger(SB),NOSPLIT,$0-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW options+4(FP), R1
+ MOVD timestamp+8(FP), R2
+ BL vdso_zx_interrupt_trigger(SB)
+ MOVW R0, ret+16(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_interrupt_bind_vcpu(handle uint32, vcpu uint32, options uint32) int32
+TEXT runtime·vdsoCall_zx_interrupt_bind_vcpu(SB),NOSPLIT,$0-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW vcpu+4(FP), R1
+ MOVW options+8(FP), R2
+ BL vdso_zx_interrupt_bind_vcpu(SB)
+ MOVW R0, ret+16(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_iommu_create(resource uint32, typ uint32, desc unsafe.Pointer, desc_size uint, out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_iommu_create(SB),NOSPLIT,$0-36
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW resource+0(FP), R0
+ MOVW typ+4(FP), R1
+ MOVD desc+8(FP), R2
+ MOVD desc_size+16(FP), R3
+ MOVD out+24(FP), R4
+ BL vdso_zx_iommu_create(SB)
+ MOVW R0, ret+32(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_ioports_request(resource uint32, io_addr uint16, len uint32) int32
+TEXT runtime·vdsoCall_zx_ioports_request(SB),NOSPLIT,$0-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW resource+0(FP), R0
+ MOVD io_addr+4(FP), R1
+ MOVW len+8(FP), R2
+ BL vdso_zx_ioports_request(SB)
+ MOVW R0, ret+16(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_ioports_release(resource uint32, io_addr uint16, len uint32) int32
+TEXT runtime·vdsoCall_zx_ioports_release(SB),NOSPLIT,$0-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW resource+0(FP), R0
+ MOVD io_addr+4(FP), R1
+ MOVW len+8(FP), R2
+ BL vdso_zx_ioports_release(SB)
+ MOVW R0, ret+16(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_job_create(parent_job uint32, options uint32, out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_job_create(SB),NOSPLIT,$0-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW parent_job+0(FP), R0
+ MOVW options+4(FP), R1
+ MOVD out+8(FP), R2
+ BL vdso_zx_job_create(SB)
+ MOVW R0, ret+16(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_job_set_policy(handle uint32, options uint32, topic uint32, policy unsafe.Pointer, policy_size uint32) int32
+TEXT runtime·vdsoCall_zx_job_set_policy(SB),NOSPLIT,$0-36
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW options+4(FP), R1
+ MOVW topic+8(FP), R2
+ MOVD policy+16(FP), R3
+ MOVW policy_size+24(FP), R4
+ BL vdso_zx_job_set_policy(SB)
+ MOVW R0, ret+32(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_job_set_critical(job uint32, options uint32, process uint32) int32
+TEXT runtime·vdsoCall_zx_job_set_critical(SB),NOSPLIT,$0-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW job+0(FP), R0
+ MOVW options+4(FP), R1
+ MOVW process+8(FP), R2
+ BL vdso_zx_job_set_critical(SB)
+ MOVW R0, ret+16(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_ktrace_read(handle uint32, data unsafe.Pointer, offset uint32, data_size uint, actual unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_ktrace_read(SB),NOSPLIT,$0-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVD data+8(FP), R1
+ MOVW offset+16(FP), R2
+ MOVD data_size+24(FP), R3
+ MOVD actual+32(FP), R4
+ BL vdso_zx_ktrace_read(SB)
+ MOVW R0, ret+40(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_ktrace_control(handle uint32, action uint32, options uint32, ptr unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_ktrace_control(SB),NOSPLIT,$0-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW action+4(FP), R1
+ MOVW options+8(FP), R2
+ MOVD ptr+16(FP), R3
+ BL vdso_zx_ktrace_control(SB)
+ MOVW R0, ret+24(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_ktrace_write(handle uint32, id uint32, arg0 uint32, arg1 uint32) int32
+TEXT runtime·vdsoCall_zx_ktrace_write(SB),NOSPLIT,$0-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW id+4(FP), R1
+ MOVW arg0+8(FP), R2
+ MOVW arg1+12(FP), R3
+ BL vdso_zx_ktrace_write(SB)
+ MOVW R0, ret+16(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_nanosleep(deadline int64) int32
+TEXT runtime·vdsoCall_zx_nanosleep(SB),NOSPLIT,$0-12
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVD deadline+0(FP), R0
+ BL vdso_zx_nanosleep(SB)
+ MOVW R0, ret+8(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_ticks_get() int64
+TEXT runtime·vdsoCall_zx_ticks_get(SB),NOSPLIT,$0-8
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ BL vdso_zx_ticks_get(SB)
+ MOVD R0, ret+0(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_ticks_per_second() int64
+TEXT runtime·vdsoCall_zx_ticks_per_second(SB),NOSPLIT,$0-8
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ BL vdso_zx_ticks_per_second(SB)
+ MOVD R0, ret+0(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_deadline_after(nanoseconds int64) int64
+TEXT runtime·vdsoCall_zx_deadline_after(SB),NOSPLIT,$0-16
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVD nanoseconds+0(FP), R0
+ BL vdso_zx_deadline_after(SB)
+ MOVD R0, ret+8(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_vmar_unmap_handle_close_thread_exit(vmar_handle uint32, addr uintptr, size uint, close_handle uint32) int32
+TEXT runtime·vdsoCall_zx_vmar_unmap_handle_close_thread_exit(SB),NOSPLIT,$0-36
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW vmar_handle+0(FP), R0
+ MOVD addr+8(FP), R1
+ MOVD size+16(FP), R2
+ MOVW close_handle+24(FP), R3
+ BL vdso_zx_vmar_unmap_handle_close_thread_exit(SB)
+ MOVW R0, ret+32(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_futex_wake_handle_close_thread_exit(value_ptr unsafe.Pointer, wake_count uint32, new_value int32, close_handle uint32)
+TEXT runtime·vdsoCall_zx_futex_wake_handle_close_thread_exit(SB),NOSPLIT,$0-24
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVD value_ptr+0(FP), R0
+ MOVW wake_count+8(FP), R1
+ MOVW new_value+12(FP), R2
+ MOVW close_handle+16(FP), R3
+ BL vdso_zx_futex_wake_handle_close_thread_exit(SB)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_ticks_get_via_kernel() int64
+TEXT runtime·vdsoCall_zx_ticks_get_via_kernel(SB),NOSPLIT,$0-8
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ BL vdso_zx_ticks_get_via_kernel(SB)
+ MOVD R0, ret+0(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_msi_allocate(handle uint32, count uint32, out_allocation unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_msi_allocate(SB),NOSPLIT,$0-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW count+4(FP), R1
+ MOVD out_allocation+8(FP), R2
+ BL vdso_zx_msi_allocate(SB)
+ MOVW R0, ret+16(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_msi_create(handle uint32, options uint32, msi_id uint32, vmo uint32, vmo_offset uint, out_interrupt unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_msi_create(SB),NOSPLIT,$0-36
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW options+4(FP), R1
+ MOVW msi_id+8(FP), R2
+ MOVW vmo+12(FP), R3
+ MOVD vmo_offset+16(FP), R4
+ MOVD out_interrupt+24(FP), R5
+ BL vdso_zx_msi_create(SB)
+ MOVW R0, ret+32(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_mtrace_control(handle uint32, kind uint32, action uint32, options uint32, ptr unsafe.Pointer, ptr_size uint) int32
+TEXT runtime·vdsoCall_zx_mtrace_control(SB),NOSPLIT,$0-36
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW kind+4(FP), R1
+ MOVW action+8(FP), R2
+ MOVW options+12(FP), R3
+ MOVD ptr+16(FP), R4
+ MOVD ptr_size+24(FP), R5
+ BL vdso_zx_mtrace_control(SB)
+ MOVW R0, ret+32(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_object_wait_one(handle uint32, signals uint32, deadline int64, observed unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_object_wait_one(SB),NOSPLIT,$0-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ CALL runtime·entersyscall(SB)
+ MOVW handle+0(FP), R0
+ MOVW signals+4(FP), R1
+ MOVD deadline+8(FP), R2
+ MOVD observed+16(FP), R3
+ BL vdso_zx_object_wait_one(SB)
+ MOVW R0, ret+24(FP)
+ BL runtime·exitsyscall(SB)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_object_wait_many(items unsafe.Pointer, num_items uint, deadline int64) int32
+TEXT runtime·vdsoCall_zx_object_wait_many(SB),NOSPLIT,$0-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ CALL runtime·entersyscall(SB)
+ MOVD items+0(FP), R0
+ MOVD num_items+8(FP), R1
+ MOVD deadline+16(FP), R2
+ BL vdso_zx_object_wait_many(SB)
+ MOVW R0, ret+24(FP)
+ BL runtime·exitsyscall(SB)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_object_wait_async(handle uint32, port uint32, key uint64, signals uint32, options uint32) int32
+TEXT runtime·vdsoCall_zx_object_wait_async(SB),NOSPLIT,$0-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW port+4(FP), R1
+ MOVD key+8(FP), R2
+ MOVW signals+16(FP), R3
+ MOVW options+20(FP), R4
+ BL vdso_zx_object_wait_async(SB)
+ MOVW R0, ret+24(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_object_signal(handle uint32, clear_mask uint32, set_mask uint32) int32
+TEXT runtime·vdsoCall_zx_object_signal(SB),NOSPLIT,$0-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW clear_mask+4(FP), R1
+ MOVW set_mask+8(FP), R2
+ BL vdso_zx_object_signal(SB)
+ MOVW R0, ret+16(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_object_signal_peer(handle uint32, clear_mask uint32, set_mask uint32) int32
+TEXT runtime·vdsoCall_zx_object_signal_peer(SB),NOSPLIT,$0-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW clear_mask+4(FP), R1
+ MOVW set_mask+8(FP), R2
+ BL vdso_zx_object_signal_peer(SB)
+ MOVW R0, ret+16(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_object_get_property(handle uint32, property uint32, value unsafe.Pointer, value_size uint) int32
+TEXT runtime·vdsoCall_zx_object_get_property(SB),NOSPLIT,$0-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW property+4(FP), R1
+ MOVD value+8(FP), R2
+ MOVD value_size+16(FP), R3
+ BL vdso_zx_object_get_property(SB)
+ MOVW R0, ret+24(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_object_set_property(handle uint32, property uint32, value unsafe.Pointer, value_size uint) int32
+TEXT runtime·vdsoCall_zx_object_set_property(SB),NOSPLIT,$0-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW property+4(FP), R1
+ MOVD value+8(FP), R2
+ MOVD value_size+16(FP), R3
+ BL vdso_zx_object_set_property(SB)
+ MOVW R0, ret+24(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_object_get_info(handle uint32, topic uint32, buffer unsafe.Pointer, buffer_size uint, actual unsafe.Pointer, avail unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_object_get_info(SB),NOSPLIT,$0-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW topic+4(FP), R1
+ MOVD buffer+8(FP), R2
+ MOVD buffer_size+16(FP), R3
+ MOVD actual+24(FP), R4
+ MOVD avail+32(FP), R5
+ BL vdso_zx_object_get_info(SB)
+ MOVW R0, ret+40(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_object_get_child(handle uint32, koid uint64, rights uint32, out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_object_get_child(SB),NOSPLIT,$0-36
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVD koid+8(FP), R1
+ MOVW rights+16(FP), R2
+ MOVD out+24(FP), R3
+ BL vdso_zx_object_get_child(SB)
+ MOVW R0, ret+32(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_object_set_profile(handle uint32, profile uint32, options uint32) int32
+TEXT runtime·vdsoCall_zx_object_set_profile(SB),NOSPLIT,$0-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW profile+4(FP), R1
+ MOVW options+8(FP), R2
+ BL vdso_zx_object_set_profile(SB)
+ MOVW R0, ret+16(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_pager_create(options uint32, out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_pager_create(SB),NOSPLIT,$0-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW options+0(FP), R0
+ MOVD out+8(FP), R1
+ BL vdso_zx_pager_create(SB)
+ MOVW R0, ret+16(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_pager_create_vmo(pager uint32, options uint32, port uint32, key uint64, size uint64, out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_pager_create_vmo(SB),NOSPLIT,$0-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW pager+0(FP), R0
+ MOVW options+4(FP), R1
+ MOVW port+8(FP), R2
+ MOVD key+16(FP), R3
+ MOVD size+24(FP), R4
+ MOVD out+32(FP), R5
+ BL vdso_zx_pager_create_vmo(SB)
+ MOVW R0, ret+40(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_pager_detach_vmo(pager uint32, vmo uint32) int32
+TEXT runtime·vdsoCall_zx_pager_detach_vmo(SB),NOSPLIT,$0-12
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW pager+0(FP), R0
+ MOVW vmo+4(FP), R1
+ BL vdso_zx_pager_detach_vmo(SB)
+ MOVW R0, ret+8(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_pager_supply_pages(pager uint32, pager_vmo uint32, offset uint64, length uint64, aux_vmo uint32, aux_offset uint64) int32
+TEXT runtime·vdsoCall_zx_pager_supply_pages(SB),NOSPLIT,$0-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW pager+0(FP), R0
+ MOVW pager_vmo+4(FP), R1
+ MOVD offset+8(FP), R2
+ MOVD length+16(FP), R3
+ MOVW aux_vmo+24(FP), R4
+ MOVD aux_offset+32(FP), R5
+ BL vdso_zx_pager_supply_pages(SB)
+ MOVW R0, ret+40(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_pager_op_range(pager uint32, op uint32, pager_vmo uint32, offset uint64, length uint64, data uint64) int32
+TEXT runtime·vdsoCall_zx_pager_op_range(SB),NOSPLIT,$0-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW pager+0(FP), R0
+ MOVW op+4(FP), R1
+ MOVW pager_vmo+8(FP), R2
+ MOVD offset+16(FP), R3
+ MOVD length+24(FP), R4
+ MOVD data+32(FP), R5
+ BL vdso_zx_pager_op_range(SB)
+ MOVW R0, ret+40(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_pc_firmware_tables(handle uint32, acpi_rsdp unsafe.Pointer, smbios unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_pc_firmware_tables(SB),NOSPLIT,$0-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVD acpi_rsdp+8(FP), R1
+ MOVD smbios+16(FP), R2
+ BL vdso_zx_pc_firmware_tables(SB)
+ MOVW R0, ret+24(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_pci_get_nth_device(handle uint32, index uint32, out_info unsafe.Pointer, out_handle unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_pci_get_nth_device(SB),NOSPLIT,$0-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW index+4(FP), R1
+ MOVD out_info+8(FP), R2
+ MOVD out_handle+16(FP), R3
+ BL vdso_zx_pci_get_nth_device(SB)
+ MOVW R0, ret+24(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_pci_enable_bus_master(handle uint32, enable uint32) int32
+TEXT runtime·vdsoCall_zx_pci_enable_bus_master(SB),NOSPLIT,$0-12
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW enable+4(FP), R1
+ BL vdso_zx_pci_enable_bus_master(SB)
+ MOVW R0, ret+8(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_pci_reset_device(handle uint32) int32
+TEXT runtime·vdsoCall_zx_pci_reset_device(SB),NOSPLIT,$0-12
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ BL vdso_zx_pci_reset_device(SB)
+ MOVW R0, ret+8(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_pci_config_read(handle uint32, offset uint16, width uint, out_val unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_pci_config_read(SB),NOSPLIT,$0-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVD offset+4(FP), R1
+ MOVD width+8(FP), R2
+ MOVD out_val+16(FP), R3
+ BL vdso_zx_pci_config_read(SB)
+ MOVW R0, ret+24(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_pci_config_write(handle uint32, offset uint16, width uint, val uint32) int32
+TEXT runtime·vdsoCall_zx_pci_config_write(SB),NOSPLIT,$0-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVD offset+4(FP), R1
+ MOVD width+8(FP), R2
+ MOVW val+16(FP), R3
+ BL vdso_zx_pci_config_write(SB)
+ MOVW R0, ret+24(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_pci_cfg_pio_rw(handle uint32, bus uint8, dev uint8, funk uint8, offset uint8, val unsafe.Pointer, width uint, write uint32) int32
+TEXT runtime·vdsoCall_zx_pci_cfg_pio_rw(SB),NOSPLIT,$0-68
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVD bus+8(FP), R1
+ MOVD dev+16(FP), R2
+ MOVD funk+24(FP), R3
+ MOVD offset+32(FP), R4
+ MOVD val+40(FP), R5
+ MOVD width+48(FP), R6
+ MOVW write+56(FP), R7
+ BL vdso_zx_pci_cfg_pio_rw(SB)
+ MOVW R0, ret+64(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_pci_get_bar(handle uint32, bar_num uint32, out_bar unsafe.Pointer, out_handle unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_pci_get_bar(SB),NOSPLIT,$0-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW bar_num+4(FP), R1
+ MOVD out_bar+8(FP), R2
+ MOVD out_handle+16(FP), R3
+ BL vdso_zx_pci_get_bar(SB)
+ MOVW R0, ret+24(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_pci_map_interrupt(handle uint32, which_irq int32, out_handle unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_pci_map_interrupt(SB),NOSPLIT,$0-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW which_irq+4(FP), R1
+ MOVD out_handle+8(FP), R2
+ BL vdso_zx_pci_map_interrupt(SB)
+ MOVW R0, ret+16(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_pci_query_irq_mode(handle uint32, mode uint32, out_max_irqs unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_pci_query_irq_mode(SB),NOSPLIT,$0-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW mode+4(FP), R1
+ MOVD out_max_irqs+8(FP), R2
+ BL vdso_zx_pci_query_irq_mode(SB)
+ MOVW R0, ret+16(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_pci_set_irq_mode(handle uint32, mode uint32, requested_irq_count uint32) int32
+TEXT runtime·vdsoCall_zx_pci_set_irq_mode(SB),NOSPLIT,$0-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW mode+4(FP), R1
+ MOVW requested_irq_count+8(FP), R2
+ BL vdso_zx_pci_set_irq_mode(SB)
+ MOVW R0, ret+16(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_pci_init(handle uint32, init_buf unsafe.Pointer, len uint32) int32
+TEXT runtime·vdsoCall_zx_pci_init(SB),NOSPLIT,$0-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVD init_buf+8(FP), R1
+ MOVW len+16(FP), R2
+ BL vdso_zx_pci_init(SB)
+ MOVW R0, ret+24(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_pci_add_subtract_io_range(handle uint32, mmio uint32, base uint64, len uint64, add uint32) int32
+TEXT runtime·vdsoCall_zx_pci_add_subtract_io_range(SB),NOSPLIT,$0-36
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW mmio+4(FP), R1
+ MOVD base+8(FP), R2
+ MOVD len+16(FP), R3
+ MOVW add+24(FP), R4
+ BL vdso_zx_pci_add_subtract_io_range(SB)
+ MOVW R0, ret+32(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_pmt_unpin(handle uint32) int32
+TEXT runtime·vdsoCall_zx_pmt_unpin(SB),NOSPLIT,$0-12
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ BL vdso_zx_pmt_unpin(SB)
+ MOVW R0, ret+8(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_port_create(options uint32, out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_port_create(SB),NOSPLIT,$0-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW options+0(FP), R0
+ MOVD out+8(FP), R1
+ BL vdso_zx_port_create(SB)
+ MOVW R0, ret+16(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_port_queue(handle uint32, packet unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_port_queue(SB),NOSPLIT,$0-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVD packet+8(FP), R1
+ BL vdso_zx_port_queue(SB)
+ MOVW R0, ret+16(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_port_wait(handle uint32, deadline int64, packet unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_port_wait(SB),NOSPLIT,$0-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ CALL runtime·entersyscall(SB)
+ MOVW handle+0(FP), R0
+ MOVD deadline+8(FP), R1
+ MOVD packet+16(FP), R2
+ BL vdso_zx_port_wait(SB)
+ MOVW R0, ret+24(FP)
+ BL runtime·exitsyscall(SB)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_port_cancel(handle uint32, source uint32, key uint64) int32
+TEXT runtime·vdsoCall_zx_port_cancel(SB),NOSPLIT,$0-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW source+4(FP), R1
+ MOVD key+8(FP), R2
+ BL vdso_zx_port_cancel(SB)
+ MOVW R0, ret+16(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_process_exit(retcode int64)
+TEXT runtime·vdsoCall_zx_process_exit(SB),NOSPLIT,$0-8
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVD retcode+0(FP), R0
+ BL vdso_zx_process_exit(SB)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_process_create(job uint32, name unsafe.Pointer, name_size uint, options uint32, proc_handle unsafe.Pointer, vmar_handle unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_process_create(SB),NOSPLIT,$0-52
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW job+0(FP), R0
+ MOVD name+8(FP), R1
+ MOVD name_size+16(FP), R2
+ MOVW options+24(FP), R3
+ MOVD proc_handle+32(FP), R4
+ MOVD vmar_handle+40(FP), R5
+ BL vdso_zx_process_create(SB)
+ MOVW R0, ret+48(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_process_start(handle uint32, thread uint32, entry uintptr, stack uintptr, arg1 uint32, arg2 uintptr) int32
+TEXT runtime·vdsoCall_zx_process_start(SB),NOSPLIT,$0-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW thread+4(FP), R1
+ MOVD entry+8(FP), R2
+ MOVD stack+16(FP), R3
+ MOVW arg1+24(FP), R4
+ MOVD arg2+32(FP), R5
+ BL vdso_zx_process_start(SB)
+ MOVW R0, ret+40(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_process_read_memory(handle uint32, vaddr uintptr, buffer unsafe.Pointer, buffer_size uint, actual unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_process_read_memory(SB),NOSPLIT,$0-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVD vaddr+8(FP), R1
+ MOVD buffer+16(FP), R2
+ MOVD buffer_size+24(FP), R3
+ MOVD actual+32(FP), R4
+ BL vdso_zx_process_read_memory(SB)
+ MOVW R0, ret+40(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_process_write_memory(handle uint32, vaddr uintptr, buffer unsafe.Pointer, buffer_size uint, actual unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_process_write_memory(SB),NOSPLIT,$0-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVD vaddr+8(FP), R1
+ MOVD buffer+16(FP), R2
+ MOVD buffer_size+24(FP), R3
+ MOVD actual+32(FP), R4
+ BL vdso_zx_process_write_memory(SB)
+ MOVW R0, ret+40(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_profile_create(root_job uint32, options uint32, profile unsafe.Pointer, out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_profile_create(SB),NOSPLIT,$0-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW root_job+0(FP), R0
+ MOVW options+4(FP), R1
+ MOVD profile+8(FP), R2
+ MOVD out+16(FP), R3
+ BL vdso_zx_profile_create(SB)
+ MOVW R0, ret+24(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_resource_create(parent_rsrc uint32, options uint32, base uint64, size uint, name unsafe.Pointer, name_size uint, resource_out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_resource_create(SB),NOSPLIT,$0-52
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW parent_rsrc+0(FP), R0
+ MOVW options+4(FP), R1
+ MOVD base+8(FP), R2
+ MOVD size+16(FP), R3
+ MOVD name+24(FP), R4
+ MOVD name_size+32(FP), R5
+ MOVD resource_out+40(FP), R6
+ BL vdso_zx_resource_create(SB)
+ MOVW R0, ret+48(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_smc_call(handle uint32, parameters unsafe.Pointer, out_smc_result unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_smc_call(SB),NOSPLIT,$0-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVD parameters+8(FP), R1
+ MOVD out_smc_result+16(FP), R2
+ BL vdso_zx_smc_call(SB)
+ MOVW R0, ret+24(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_socket_create(options uint32, out0 unsafe.Pointer, out1 unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_socket_create(SB),NOSPLIT,$0-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW options+0(FP), R0
+ MOVD out0+8(FP), R1
+ MOVD out1+16(FP), R2
+ BL vdso_zx_socket_create(SB)
+ MOVW R0, ret+24(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_socket_write(handle uint32, options uint32, buffer unsafe.Pointer, buffer_size uint, actual unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_socket_write(SB),NOSPLIT,$0-36
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW options+4(FP), R1
+ MOVD buffer+8(FP), R2
+ MOVD buffer_size+16(FP), R3
+ MOVD actual+24(FP), R4
+ BL vdso_zx_socket_write(SB)
+ MOVW R0, ret+32(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_socket_read(handle uint32, options uint32, buffer unsafe.Pointer, buffer_size uint, actual unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_socket_read(SB),NOSPLIT,$0-36
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW options+4(FP), R1
+ MOVD buffer+8(FP), R2
+ MOVD buffer_size+16(FP), R3
+ MOVD actual+24(FP), R4
+ BL vdso_zx_socket_read(SB)
+ MOVW R0, ret+32(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_socket_shutdown(handle uint32, options uint32) int32
+TEXT runtime·vdsoCall_zx_socket_shutdown(SB),NOSPLIT,$0-12
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW options+4(FP), R1
+ BL vdso_zx_socket_shutdown(SB)
+ MOVW R0, ret+8(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_stream_create(options uint32, vmo uint32, seek uint64, out_stream unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_stream_create(SB),NOSPLIT,$0-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW options+0(FP), R0
+ MOVW vmo+4(FP), R1
+ MOVD seek+8(FP), R2
+ MOVD out_stream+16(FP), R3
+ BL vdso_zx_stream_create(SB)
+ MOVW R0, ret+24(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_stream_writev(handle uint32, options uint32, vector unsafe.Pointer, num_vector uint, actual unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_stream_writev(SB),NOSPLIT,$0-36
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW options+4(FP), R1
+ MOVD vector+8(FP), R2
+ MOVD num_vector+16(FP), R3
+ MOVD actual+24(FP), R4
+ BL vdso_zx_stream_writev(SB)
+ MOVW R0, ret+32(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_stream_writev_at(handle uint32, options uint32, offset uint64, vector unsafe.Pointer, num_vector uint, actual unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_stream_writev_at(SB),NOSPLIT,$0-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW options+4(FP), R1
+ MOVD offset+8(FP), R2
+ MOVD vector+16(FP), R3
+ MOVD num_vector+24(FP), R4
+ MOVD actual+32(FP), R5
+ BL vdso_zx_stream_writev_at(SB)
+ MOVW R0, ret+40(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_stream_readv(handle uint32, options uint32, vector unsafe.Pointer, num_vector uint, actual unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_stream_readv(SB),NOSPLIT,$0-36
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW options+4(FP), R1
+ MOVD vector+8(FP), R2
+ MOVD num_vector+16(FP), R3
+ MOVD actual+24(FP), R4
+ BL vdso_zx_stream_readv(SB)
+ MOVW R0, ret+32(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_stream_readv_at(handle uint32, options uint32, offset uint64, vector unsafe.Pointer, num_vector uint, actual unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_stream_readv_at(SB),NOSPLIT,$0-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW options+4(FP), R1
+ MOVD offset+8(FP), R2
+ MOVD vector+16(FP), R3
+ MOVD num_vector+24(FP), R4
+ MOVD actual+32(FP), R5
+ BL vdso_zx_stream_readv_at(SB)
+ MOVW R0, ret+40(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_stream_seek(handle uint32, whence uint32, offset int64, out_seek unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_stream_seek(SB),NOSPLIT,$0-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW whence+4(FP), R1
+ MOVD offset+8(FP), R2
+ MOVD out_seek+16(FP), R3
+ BL vdso_zx_stream_seek(SB)
+ MOVW R0, ret+24(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_syscall_test_0() int32
+TEXT runtime·vdsoCall_zx_syscall_test_0(SB),NOSPLIT,$0-4
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ BL vdso_zx_syscall_test_0(SB)
+ MOVW R0, ret+0(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_syscall_test_1(a int32) int32
+TEXT runtime·vdsoCall_zx_syscall_test_1(SB),NOSPLIT,$0-12
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW a+0(FP), R0
+ BL vdso_zx_syscall_test_1(SB)
+ MOVW R0, ret+8(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_syscall_test_2(a int32, b int32) int32
+TEXT runtime·vdsoCall_zx_syscall_test_2(SB),NOSPLIT,$0-12
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW a+0(FP), R0
+ MOVW b+4(FP), R1
+ BL vdso_zx_syscall_test_2(SB)
+ MOVW R0, ret+8(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_syscall_test_3(a int32, b int32, c int32) int32
+TEXT runtime·vdsoCall_zx_syscall_test_3(SB),NOSPLIT,$0-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW a+0(FP), R0
+ MOVW b+4(FP), R1
+ MOVW c+8(FP), R2
+ BL vdso_zx_syscall_test_3(SB)
+ MOVW R0, ret+16(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_syscall_test_4(a int32, b int32, c int32, d int32) int32
+TEXT runtime·vdsoCall_zx_syscall_test_4(SB),NOSPLIT,$0-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW a+0(FP), R0
+ MOVW b+4(FP), R1
+ MOVW c+8(FP), R2
+ MOVW d+12(FP), R3
+ BL vdso_zx_syscall_test_4(SB)
+ MOVW R0, ret+16(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_syscall_test_5(a int32, b int32, c int32, d int32, e int32) int32
+TEXT runtime·vdsoCall_zx_syscall_test_5(SB),NOSPLIT,$0-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW a+0(FP), R0
+ MOVW b+4(FP), R1
+ MOVW c+8(FP), R2
+ MOVW d+12(FP), R3
+ MOVW e+16(FP), R4
+ BL vdso_zx_syscall_test_5(SB)
+ MOVW R0, ret+24(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_syscall_test_6(a int32, b int32, c int32, d int32, e int32, f int32) int32
+TEXT runtime·vdsoCall_zx_syscall_test_6(SB),NOSPLIT,$0-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW a+0(FP), R0
+ MOVW b+4(FP), R1
+ MOVW c+8(FP), R2
+ MOVW d+12(FP), R3
+ MOVW e+16(FP), R4
+ MOVW f+20(FP), R5
+ BL vdso_zx_syscall_test_6(SB)
+ MOVW R0, ret+24(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_syscall_test_7(a int32, b int32, c int32, d int32, e int32, f int32, g_ int32) int32
+TEXT runtime·vdsoCall_zx_syscall_test_7(SB),NOSPLIT,$0-36
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW a+0(FP), R0
+ MOVW b+4(FP), R1
+ MOVW c+8(FP), R2
+ MOVW d+12(FP), R3
+ MOVW e+16(FP), R4
+ MOVW f+20(FP), R5
+ MOVW g_+24(FP), R6
+ BL vdso_zx_syscall_test_7(SB)
+ MOVW R0, ret+32(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_syscall_test_8(a int32, b int32, c int32, d int32, e int32, f int32, g_ int32, h int32) int32
+TEXT runtime·vdsoCall_zx_syscall_test_8(SB),NOSPLIT,$0-36
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW a+0(FP), R0
+ MOVW b+4(FP), R1
+ MOVW c+8(FP), R2
+ MOVW d+12(FP), R3
+ MOVW e+16(FP), R4
+ MOVW f+20(FP), R5
+ MOVW g_+24(FP), R6
+ MOVW h+28(FP), R7
+ BL vdso_zx_syscall_test_8(SB)
+ MOVW R0, ret+32(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_syscall_test_wrapper(a int32, b int32, c int32) int32
+TEXT runtime·vdsoCall_zx_syscall_test_wrapper(SB),NOSPLIT,$0-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW a+0(FP), R0
+ MOVW b+4(FP), R1
+ MOVW c+8(FP), R2
+ BL vdso_zx_syscall_test_wrapper(SB)
+ MOVW R0, ret+16(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_syscall_test_handle_create(return_value int32, out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_syscall_test_handle_create(SB),NOSPLIT,$0-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW return_value+0(FP), R0
+ MOVD out+8(FP), R1
+ BL vdso_zx_syscall_test_handle_create(SB)
+ MOVW R0, ret+16(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_system_get_dcache_line_size() uint32
+TEXT runtime·vdsoCall_zx_system_get_dcache_line_size(SB),NOSPLIT,$0-4
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ BL vdso_zx_system_get_dcache_line_size(SB)
+ MOVW R0, ret+0(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_system_get_num_cpus() uint32
+TEXT runtime·vdsoCall_zx_system_get_num_cpus(SB),NOSPLIT,$0-4
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ BL vdso_zx_system_get_num_cpus(SB)
+ MOVW R0, ret+0(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_system_get_version_string() unsafe.Pointer
+TEXT runtime·vdsoCall_zx_system_get_version_string(SB),NOSPLIT,$0-8
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ BL vdso_zx_system_get_version_string(SB)
+ MOVD R0, ret+0(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_system_get_page_size() uint32
+TEXT runtime·vdsoCall_zx_system_get_page_size(SB),NOSPLIT,$0-4
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ BL vdso_zx_system_get_page_size(SB)
+ MOVW R0, ret+0(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_system_get_physmem() uint64
+TEXT runtime·vdsoCall_zx_system_get_physmem(SB),NOSPLIT,$0-8
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ BL vdso_zx_system_get_physmem(SB)
+ MOVD R0, ret+0(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_system_get_features(kind uint32, features unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_system_get_features(SB),NOSPLIT,$0-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW kind+0(FP), R0
+ MOVD features+8(FP), R1
+ BL vdso_zx_system_get_features(SB)
+ MOVW R0, ret+16(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_system_get_event(root_job uint32, kind uint32, event unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_system_get_event(SB),NOSPLIT,$0-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW root_job+0(FP), R0
+ MOVW kind+4(FP), R1
+ MOVD event+8(FP), R2
+ BL vdso_zx_system_get_event(SB)
+ MOVW R0, ret+16(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_system_mexec(resource uint32, kernel_vmo uint32, bootimage_vmo uint32) int32
+TEXT runtime·vdsoCall_zx_system_mexec(SB),NOSPLIT,$0-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW resource+0(FP), R0
+ MOVW kernel_vmo+4(FP), R1
+ MOVW bootimage_vmo+8(FP), R2
+ BL vdso_zx_system_mexec(SB)
+ MOVW R0, ret+16(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_system_mexec_payload_get(resource uint32, buffer unsafe.Pointer, buffer_size uint) int32
+TEXT runtime·vdsoCall_zx_system_mexec_payload_get(SB),NOSPLIT,$0-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW resource+0(FP), R0
+ MOVD buffer+8(FP), R1
+ MOVD buffer_size+16(FP), R2
+ BL vdso_zx_system_mexec_payload_get(SB)
+ MOVW R0, ret+24(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_system_powerctl(resource uint32, cmd uint32, arg unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_system_powerctl(SB),NOSPLIT,$0-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW resource+0(FP), R0
+ MOVW cmd+4(FP), R1
+ MOVD arg+8(FP), R2
+ BL vdso_zx_system_powerctl(SB)
+ MOVW R0, ret+16(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_task_suspend(handle uint32, token unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_task_suspend(SB),NOSPLIT,$0-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVD token+8(FP), R1
+ BL vdso_zx_task_suspend(SB)
+ MOVW R0, ret+16(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_task_suspend_token(handle uint32, token unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_task_suspend_token(SB),NOSPLIT,$0-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVD token+8(FP), R1
+ BL vdso_zx_task_suspend_token(SB)
+ MOVW R0, ret+16(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_task_create_exception_channel(handle uint32, options uint32, out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_task_create_exception_channel(SB),NOSPLIT,$0-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW options+4(FP), R1
+ MOVD out+8(FP), R2
+ BL vdso_zx_task_create_exception_channel(SB)
+ MOVW R0, ret+16(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_task_kill(handle uint32) int32
+TEXT runtime·vdsoCall_zx_task_kill(SB),NOSPLIT,$0-12
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ BL vdso_zx_task_kill(SB)
+ MOVW R0, ret+8(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_thread_exit()
+TEXT runtime·vdsoCall_zx_thread_exit(SB),NOSPLIT,$0-0
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ BL vdso_zx_thread_exit(SB)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_thread_create(process uint32, name unsafe.Pointer, name_size uint, options uint32, out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_thread_create(SB),NOSPLIT,$0-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW process+0(FP), R0
+ MOVD name+8(FP), R1
+ MOVD name_size+16(FP), R2
+ MOVW options+24(FP), R3
+ MOVD out+32(FP), R4
+ BL vdso_zx_thread_create(SB)
+ MOVW R0, ret+40(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_thread_start(handle uint32, thread_entry uintptr, stack uintptr, arg1 uintptr, arg2 uintptr) int32
+TEXT runtime·vdsoCall_zx_thread_start(SB),NOSPLIT,$0-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVD thread_entry+8(FP), R1
+ MOVD stack+16(FP), R2
+ MOVD arg1+24(FP), R3
+ MOVD arg2+32(FP), R4
+ BL vdso_zx_thread_start(SB)
+ MOVW R0, ret+40(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_thread_read_state(handle uint32, kind uint32, buffer unsafe.Pointer, buffer_size uint) int32
+TEXT runtime·vdsoCall_zx_thread_read_state(SB),NOSPLIT,$0-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW kind+4(FP), R1
+ MOVD buffer+8(FP), R2
+ MOVD buffer_size+16(FP), R3
+ BL vdso_zx_thread_read_state(SB)
+ MOVW R0, ret+24(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_thread_write_state(handle uint32, kind uint32, buffer unsafe.Pointer, buffer_size uint) int32
+TEXT runtime·vdsoCall_zx_thread_write_state(SB),NOSPLIT,$0-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW kind+4(FP), R1
+ MOVD buffer+8(FP), R2
+ MOVD buffer_size+16(FP), R3
+ BL vdso_zx_thread_write_state(SB)
+ MOVW R0, ret+24(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_timer_create(options uint32, clock_id uint32, out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_timer_create(SB),NOSPLIT,$0-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW options+0(FP), R0
+ MOVW clock_id+4(FP), R1
+ MOVD out+8(FP), R2
+ BL vdso_zx_timer_create(SB)
+ MOVW R0, ret+16(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_timer_set(handle uint32, deadline int64, slack int64) int32
+TEXT runtime·vdsoCall_zx_timer_set(SB),NOSPLIT,$0-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVD deadline+8(FP), R1
+ MOVD slack+16(FP), R2
+ BL vdso_zx_timer_set(SB)
+ MOVW R0, ret+24(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_timer_cancel(handle uint32) int32
+TEXT runtime·vdsoCall_zx_timer_cancel(SB),NOSPLIT,$0-12
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ BL vdso_zx_timer_cancel(SB)
+ MOVW R0, ret+8(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_vcpu_create(guest uint32, options uint32, entry uintptr, out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_vcpu_create(SB),NOSPLIT,$0-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW guest+0(FP), R0
+ MOVW options+4(FP), R1
+ MOVD entry+8(FP), R2
+ MOVD out+16(FP), R3
+ BL vdso_zx_vcpu_create(SB)
+ MOVW R0, ret+24(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_vcpu_resume(handle uint32, packet unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_vcpu_resume(SB),NOSPLIT,$0-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ CALL runtime·entersyscall(SB)
+ MOVW handle+0(FP), R0
+ MOVD packet+8(FP), R1
+ BL vdso_zx_vcpu_resume(SB)
+ MOVW R0, ret+16(FP)
+ BL runtime·exitsyscall(SB)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_vcpu_interrupt(handle uint32, vector uint32) int32
+TEXT runtime·vdsoCall_zx_vcpu_interrupt(SB),NOSPLIT,$0-12
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW vector+4(FP), R1
+ BL vdso_zx_vcpu_interrupt(SB)
+ MOVW R0, ret+8(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_vcpu_read_state(handle uint32, kind uint32, buffer unsafe.Pointer, buffer_size uint) int32
+TEXT runtime·vdsoCall_zx_vcpu_read_state(SB),NOSPLIT,$0-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW kind+4(FP), R1
+ MOVD buffer+8(FP), R2
+ MOVD buffer_size+16(FP), R3
+ BL vdso_zx_vcpu_read_state(SB)
+ MOVW R0, ret+24(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_vcpu_write_state(handle uint32, kind uint32, buffer unsafe.Pointer, buffer_size uint) int32
+TEXT runtime·vdsoCall_zx_vcpu_write_state(SB),NOSPLIT,$0-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW kind+4(FP), R1
+ MOVD buffer+8(FP), R2
+ MOVD buffer_size+16(FP), R3
+ BL vdso_zx_vcpu_write_state(SB)
+ MOVW R0, ret+24(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_vmar_allocate(parent_vmar uint32, options uint32, offset uint, size uint, child_vmar unsafe.Pointer, child_addr unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_vmar_allocate(SB),NOSPLIT,$0-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW parent_vmar+0(FP), R0
+ MOVW options+4(FP), R1
+ MOVD offset+8(FP), R2
+ MOVD size+16(FP), R3
+ MOVD child_vmar+24(FP), R4
+ MOVD child_addr+32(FP), R5
+ BL vdso_zx_vmar_allocate(SB)
+ MOVW R0, ret+40(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_vmar_destroy(handle uint32) int32
+TEXT runtime·vdsoCall_zx_vmar_destroy(SB),NOSPLIT,$0-12
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ BL vdso_zx_vmar_destroy(SB)
+ MOVW R0, ret+8(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_vmar_map(handle uint32, options uint32, vmar_offset uint, vmo uint32, vmo_offset uint64, len uint, mapped_addr unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_vmar_map(SB),NOSPLIT,$0-52
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW options+4(FP), R1
+ MOVD vmar_offset+8(FP), R2
+ MOVW vmo+16(FP), R3
+ MOVD vmo_offset+24(FP), R4
+ MOVD len+32(FP), R5
+ MOVD mapped_addr+40(FP), R6
+ BL vdso_zx_vmar_map(SB)
+ MOVW R0, ret+48(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_vmar_unmap(handle uint32, addr uintptr, len uint) int32
+TEXT runtime·vdsoCall_zx_vmar_unmap(SB),NOSPLIT,$0-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVD addr+8(FP), R1
+ MOVD len+16(FP), R2
+ BL vdso_zx_vmar_unmap(SB)
+ MOVW R0, ret+24(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_vmar_protect(handle uint32, options uint32, addr uintptr, len uint) int32
+TEXT runtime·vdsoCall_zx_vmar_protect(SB),NOSPLIT,$0-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW options+4(FP), R1
+ MOVD addr+8(FP), R2
+ MOVD len+16(FP), R3
+ BL vdso_zx_vmar_protect(SB)
+ MOVW R0, ret+24(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_vmar_op_range(handle uint32, op uint32, address uintptr, size uint, buffer unsafe.Pointer, buffer_size uint) int32
+TEXT runtime·vdsoCall_zx_vmar_op_range(SB),NOSPLIT,$0-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW op+4(FP), R1
+ MOVD address+8(FP), R2
+ MOVD size+16(FP), R3
+ MOVD buffer+24(FP), R4
+ MOVD buffer_size+32(FP), R5
+ BL vdso_zx_vmar_op_range(SB)
+ MOVW R0, ret+40(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_vmo_create(size uint64, options uint32, out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_vmo_create(SB),NOSPLIT,$0-28
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVD size+0(FP), R0
+ MOVW options+8(FP), R1
+ MOVD out+16(FP), R2
+ BL vdso_zx_vmo_create(SB)
+ MOVW R0, ret+24(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_vmo_read(handle uint32, buffer unsafe.Pointer, offset uint64, buffer_size uint) int32
+TEXT runtime·vdsoCall_zx_vmo_read(SB),NOSPLIT,$0-36
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ CALL runtime·entersyscall(SB)
+ MOVW handle+0(FP), R0
+ MOVD buffer+8(FP), R1
+ MOVD offset+16(FP), R2
+ MOVD buffer_size+24(FP), R3
+ BL vdso_zx_vmo_read(SB)
+ MOVW R0, ret+32(FP)
+ BL runtime·exitsyscall(SB)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_vmo_write(handle uint32, buffer unsafe.Pointer, offset uint64, buffer_size uint) int32
+TEXT runtime·vdsoCall_zx_vmo_write(SB),NOSPLIT,$0-36
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ CALL runtime·entersyscall(SB)
+ MOVW handle+0(FP), R0
+ MOVD buffer+8(FP), R1
+ MOVD offset+16(FP), R2
+ MOVD buffer_size+24(FP), R3
+ BL vdso_zx_vmo_write(SB)
+ MOVW R0, ret+32(FP)
+ BL runtime·exitsyscall(SB)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_vmo_get_size(handle uint32, size unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_vmo_get_size(SB),NOSPLIT,$0-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVD size+8(FP), R1
+ BL vdso_zx_vmo_get_size(SB)
+ MOVW R0, ret+16(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_vmo_set_size(handle uint32, size uint64) int32
+TEXT runtime·vdsoCall_zx_vmo_set_size(SB),NOSPLIT,$0-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVD size+8(FP), R1
+ BL vdso_zx_vmo_set_size(SB)
+ MOVW R0, ret+16(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_vmo_op_range(handle uint32, op uint32, offset uint64, size uint64, buffer unsafe.Pointer, buffer_size uint) int32
+TEXT runtime·vdsoCall_zx_vmo_op_range(SB),NOSPLIT,$0-44
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ CALL runtime·entersyscall(SB)
+ MOVW handle+0(FP), R0
+ MOVW op+4(FP), R1
+ MOVD offset+8(FP), R2
+ MOVD size+16(FP), R3
+ MOVD buffer+24(FP), R4
+ MOVD buffer_size+32(FP), R5
+ BL vdso_zx_vmo_op_range(SB)
+ MOVW R0, ret+40(FP)
+ BL runtime·exitsyscall(SB)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_vmo_create_child(handle uint32, options uint32, offset uint64, size uint64, out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_vmo_create_child(SB),NOSPLIT,$0-36
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW options+4(FP), R1
+ MOVD offset+8(FP), R2
+ MOVD size+16(FP), R3
+ MOVD out+24(FP), R4
+ BL vdso_zx_vmo_create_child(SB)
+ MOVW R0, ret+32(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_vmo_set_cache_policy(handle uint32, cache_policy uint32) int32
+TEXT runtime·vdsoCall_zx_vmo_set_cache_policy(SB),NOSPLIT,$0-12
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW cache_policy+4(FP), R1
+ BL vdso_zx_vmo_set_cache_policy(SB)
+ MOVW R0, ret+8(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_vmo_replace_as_executable(handle uint32, vmex uint32, out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_vmo_replace_as_executable(SB),NOSPLIT,$0-20
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW handle+0(FP), R0
+ MOVW vmex+4(FP), R1
+ MOVD out+8(FP), R2
+ BL vdso_zx_vmo_replace_as_executable(SB)
+ MOVW R0, ret+16(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_vmo_create_contiguous(bti uint32, size uint, alignment_log2 uint32, out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_vmo_create_contiguous(SB),NOSPLIT,$0-36
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW bti+0(FP), R0
+ MOVD size+8(FP), R1
+ MOVW alignment_log2+16(FP), R2
+ MOVD out+24(FP), R3
+ BL vdso_zx_vmo_create_contiguous(SB)
+ MOVW R0, ret+32(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
+// func vdsoCall_zx_vmo_create_physical(resource uint32, paddr uintptr, size uint, out unsafe.Pointer) int32
+TEXT runtime·vdsoCall_zx_vmo_create_physical(SB),NOSPLIT,$0-36
+ GO_ARGS
+ NO_LOCAL_POINTERS
+ MOVD g_m(g), R21
+ MOVD LR, m_vdsoPC(R21)
+ DMB $0xe
+ MOVD RSP, R20
+ MOVD R20, m_vdsoSP(R21)
+ MOVW resource+0(FP), R0
+ MOVD paddr+8(FP), R1
+ MOVD size+16(FP), R2
+ MOVD out+24(FP), R3
+ BL vdso_zx_vmo_create_physical(SB)
+ MOVW R0, ret+32(FP)
+ MOVD g_m(g), R21
+ MOVD $0, m_vdsoSP(R21)
+ RET
+
diff --git a/src/syscall/dirent.go b/src/syscall/dirent.go
index 9e1222e..9ecde2b 100644
--- a/src/syscall/dirent.go
+++ b/src/syscall/dirent.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build aix || darwin || dragonfly || freebsd || (js && wasm) || linux || netbsd || openbsd || solaris
-// +build aix darwin dragonfly freebsd js,wasm linux netbsd openbsd solaris
+//go:build aix || darwin || dragonfly || freebsd || fuchsia || (js && wasm) || linux || netbsd || openbsd || solaris
+// +build aix darwin dragonfly freebsd fuchsia js,wasm linux netbsd openbsd solaris
package syscall
diff --git a/src/syscall/env_unix.go b/src/syscall/env_unix.go
index 022ef6e..c270346 100644
--- a/src/syscall/env_unix.go
+++ b/src/syscall/env_unix.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build aix || darwin || dragonfly || freebsd || (js && wasm) || linux || netbsd || openbsd || solaris || plan9
-// +build aix darwin dragonfly freebsd js,wasm linux netbsd openbsd solaris plan9
+//go:build aix || darwin || dragonfly || freebsd || fuchsia || (js && wasm) || linux || netbsd || openbsd || solaris || plan9
+// +build aix darwin dragonfly freebsd fuchsia js,wasm linux netbsd openbsd solaris plan9
// Unix environment variables.
diff --git a/src/syscall/exec_fuchsia.go b/src/syscall/exec_fuchsia.go
new file mode 100644
index 0000000..d63ef8d
--- /dev/null
+++ b/src/syscall/exec_fuchsia.go
@@ -0,0 +1,8 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package syscall
+
+type SysProcAttr struct {
+}
diff --git a/src/syscall/syscall_fuchsia.go b/src/syscall/syscall_fuchsia.go
new file mode 100644
index 0000000..b4cd5983
--- /dev/null
+++ b/src/syscall/syscall_fuchsia.go
@@ -0,0 +1,751 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// `go mod` ignores file names for the purpose of resolving
+// dependencies, and fdio doesn't build on not-Fuchsia.
+// +build fuchsia
+
+package syscall
+
+import (
+ "errors"
+ "internal/itoa"
+ "io"
+ "path"
+ "strings"
+ "sync"
+ "unsafe"
+
+ "syscall/zx"
+ "syscall/zx/fdio"
+ fidlIo "syscall/zx/io"
+)
+
+var (
+ Stdin = 0
+ Stdout = 1
+ Stderr = 2
+)
+
+const (
+ FsRightReadable = 0x00000001
+ FsRightWritable = 0x00000002
+ FsRightAdmin = 0x00000004
+ FsRightExecutable = 0x00000008
+ FsRights = FsRightReadable | FsRightWritable | FsRightAdmin | FsRightExecutable
+ FsRightSpace = 0x0000FFFF
+ FsFlagCreate = 0x00010000
+ FsFlagExclusive = 0x00020000
+ FsFlagTruncate = 0x00040000
+ FsFlagDirectory = 0x00080000
+ FsFlagAppend = 0x00100000
+ FsFlagNoRemote = 0x00200000
+ FsFlagPath = 0x00400000
+ FsFlagDescribe = 0x00800000
+ FsFlagPosix = 0x01000000
+ FsFlagNotDirectory = 0x02000000
+ FsFlagCloneSameRights = 0x04000000
+
+ FsFlagsAllowedWithPath = FsFlagPath | FsFlagDirectory |
+ FsFlagNotDirectory | FsFlagDescribe
+)
+
+const (
+ O_RDONLY = 0x0
+ O_WRONLY = 0x1
+ O_RDWR = 0x2
+
+ // Flags which align with ZXIO_FS_*
+ O_ADMIN = FsRightAdmin
+ O_CREAT = FsFlagCreate
+ O_EXCL = FsFlagExclusive
+ O_TRUNC = FsFlagTruncate
+ O_DIRECTORY = FsFlagDirectory
+ O_APPEND = FsFlagAppend
+ O_NOREMOTE = FsFlagNoRemote
+ O_PATH = FsFlagPath
+
+ FdioAlignedFlags = O_ADMIN | O_CREAT | O_EXCL | O_TRUNC | O_DIRECTORY | O_APPEND |
+ O_NOREMOTE | O_PATH
+
+ // Flags which do not align with ZXIO_FS_*
+ O_NONBLOCK = 0x00000010
+ O_DSYNC = 0x00000020
+ O_SYNC = 0x00000040 | O_DSYNC
+ O_RSYNC = O_SYNC
+ O_NOFOLLOW = 0x00000080
+ O_CLOEXEC = 0x00000100
+ O_NOCTTY = 0x00000200
+ O_ASYNC = 0x00000400
+ O_DIRECT = 0x00000800
+ O_LARGEFILE = 0x00001000
+ O_NOATIME = 0x00002000
+ O_TMPFILE = 0x00004000
+)
+
+func FdioFlagsToZxio(flags uint32) (zflags uint32) {
+ perms := uint32(O_RDONLY | O_WRONLY | O_RDWR)
+ switch flags & perms {
+ case O_RDONLY:
+ zflags |= FsRightReadable
+ case O_WRONLY:
+ zflags |= FsRightWritable
+ case O_RDWR:
+ zflags |= FsRightReadable | FsRightWritable
+ }
+
+ zflags |= FsFlagDescribe
+ zflags |= (flags & FdioAlignedFlags)
+ if (zflags & FsFlagPath) == 0 {
+ zflags |= FsFlagPosix
+ } else {
+ zflags &= FsFlagsAllowedWithPath
+ }
+ return zflags
+}
+
+const (
+ S_IFMT = fdio.S_IFMT
+ S_IFDIR = fdio.S_IFDIR
+ S_IFREG = fdio.S_IFREG
+ S_IFIFO = fdio.S_IFIFO
+)
+
+// TODO(crawshaw): generate a zerrors file once cgo is working
+const (
+ EPERM = Errno(0x01)
+ ENOENT = Errno(0x02)
+ EINTR = Errno(0x04)
+ EIO = Errno(0x05)
+ EBADF = Errno(0x09)
+ EACCES = Errno(0x0d)
+ EEXIST = Errno(0x11)
+ ENOTDIR = Errno(0x14)
+ EISDIR = Errno(0x15)
+ EINVAL = Errno(0x16)
+ EMFILE = Errno(0x18)
+ ESPIPE = Errno(0x1d)
+ ERANGE = Errno(0x22)
+ ENAMETOOLONG = Errno(0x24)
+ ENOTEMPTY = Errno(0x27)
+ ENOPROTOOPT = Errno(0x5c)
+ EOPNOTSUPP = Errno(0x5f)
+ ENOTSUP = EOPNOTSUPP
+ EADDRINUSE = Errno(0x62)
+ EADDRNOTAVAIL = Errno(0x63)
+ ETIMEDOUT = Errno(0x6e)
+ ECONNABORTED = Errno(0x67)
+ EHOSTUNREACH = Errno(0x71)
+ EFUCHSIA = Errno(0xfa)
+)
+
+var EPIPE error = Errno(0x20)
+
+const (
+ SOMAXCONN = 0x80
+)
+
+const (
+ PathMax = 4096
+)
+
+type Stat_t struct {
+ Dev uint64
+ Ino uint64
+ Size uint64
+ CreateTime uint64
+ ModifyTime uint64
+ Mode uint64
+}
+
+func Getpid() (pid int) {
+ var info zx.InfoHandleBasic
+ if err := zx.ProcHandle.GetInfo(zx.ObjectInfoHandleBasic, unsafe.Pointer(&info), uint(unsafe.Sizeof(info))); err != nil {
+ return 0
+ }
+ return int(info.Koid)
+}
+
+func Getppid() (ppid int) {
+ return 0
+}
+
+func Getuid() (uid int) {
+ return 0
+}
+
+func Geteuid() (uid int) {
+ return 0
+}
+
+func Getgid() (uid int) {
+ return 0
+}
+
+func Getegid() (uid int) {
+ return 0
+}
+
+func Getgroups() (gids []int, err error) {
+ return nil, errors.New("Getgroups unimplemented")
+}
+
+//func Exit(code int) {
+//zx.Sys_process_exit(int64(code))
+//}
+
+const ImplementsGetwd = true
+
+func Getwd() (wd string, err error) {
+ cwdMu.Lock()
+ wd = cwdStr
+ cwdMu.Unlock()
+ return wd, nil
+}
+
+func Chdir(dir string) (err error) {
+ // TODO: if cgo enabled, change the working directory there too.
+ f, err := OpenPath(dir, 0, 0)
+ if err != nil {
+ return err
+ }
+ cwdMu.Lock()
+ var old fdio.FDIO
+ old, cwd = cwd, f
+ // cwd starts as a reference to root, which should remain open.
+ if old != nil && old != root {
+ defer old.Close()
+ }
+ if path.IsAbs(dir) {
+ cwdStr = path.Clean(dir)
+ } else {
+ cwdStr = path.Join(cwdStr, dir)
+ }
+ cwdMu.Unlock()
+ return nil
+}
+
+func Rmdir(path string) error {
+ return Unlink(path)
+}
+
+func Unlink(p string) error {
+ dir, relp := fdioPath(path.Clean(p))
+ return dir.Unlink(relp)
+}
+
+func makeAbs(paths ...string) []string {
+ cwdMu.Lock()
+ dir := cwdStr
+ cwdMu.Unlock()
+ for i := range paths {
+ if !path.IsAbs(paths[i]) {
+ paths[i] = path.Join(dir, paths[i])
+ }
+ }
+ return paths
+}
+
+func Rename(oldpath, newpath string) error {
+ abs := makeAbs(oldpath, newpath)
+ rootMu.Lock()
+ r := root
+ rootMu.Unlock()
+ return r.Rename(abs[0][1:], abs[1][1:])
+}
+
+func Link(oldpath, newpath string) error {
+ abs := makeAbs(oldpath, newpath)
+ rootMu.Lock()
+ r := root
+ rootMu.Unlock()
+ return r.Link(abs[0][1:], abs[1][1:])
+}
+
+func Fsync(fd int) error {
+ fdsMu.Lock()
+ f := fds[fd-fdsOff]
+ fdsMu.Unlock()
+ return f.Sync()
+}
+
+func Fchdir(fd int) (err error) {
+ return errors.New("Fchdir unimplemented")
+}
+
+func CloseOnExec(r int) {
+ panic("syscall.CloseOnExec TODO")
+}
+
+func SetNonblock(fd int, nonblocking bool) (err error) {
+ if nonblocking {
+ return errors.New("syscall.SetNonblock: non-blocking not supported on fuchsia")
+ }
+ return nil
+}
+
+var (
+ rootMu sync.Mutex
+ root fdio.FDIO
+)
+
+var (
+ cwdMu sync.Mutex
+ cwd fdio.FDIO
+ cwdStr string
+)
+
+var (
+ nsMu sync.Mutex
+ ns *fdio.NS
+)
+
+var (
+ stdioMu sync.Mutex
+ stdin fdio.FDIO
+ stdout fdio.FDIO
+ stderr fdio.FDIO
+)
+
+const fdsOff = 1e6 // move outside the fd range of unistd.c FDIO
+
+var (
+ fdsMu sync.Mutex
+ fds []fdio.FDIO
+)
+
+func Read(fd int, p []byte) (n int, err error) {
+ if fd == Stdin {
+ stdioMu.Lock()
+ n, err = stdin.Read(p)
+ stdioMu.Unlock()
+ } else {
+ if fd < fdsOff {
+ return 0, EINVAL
+ }
+ fdsMu.Lock()
+ f := fds[fd-fdsOff]
+ fdsMu.Unlock()
+
+ n, err = f.Read(p)
+ }
+ // An io.Reader can return n < len(p) and io.EOF.
+ // But this is the POSIX syscall read(3), which
+ // returns nil on eof.
+ if err == io.EOF {
+ err = nil
+ }
+ return n, err
+}
+
+func init() {
+ EPIPE = zx.EPIPE
+
+ var err error
+
+ nsMu.Lock()
+ ns, err = fdio.NewNSFromMap(zx.RootNSMap)
+ nsMu.Unlock()
+ if err != nil {
+ println("syscall: failed to create namespace: ", err.Error())
+ }
+
+ rootMu.Lock()
+ root, err = ns.OpenRoot()
+ rootMu.Unlock()
+ if err != nil {
+ println("syscall: failed to create root directory from namespace: ", err.Error())
+ }
+
+ cwdMu.Lock()
+ var found bool
+ cwdStr, found = Getenv("PWD")
+ if !found {
+ cwdStr = "/"
+ } else {
+ // Ensure the incoming cwd is absolute and cleaned
+ cwdStr = path.Join("/", cwdStr)
+ }
+ cwd = root
+ if cwdStr != "/" {
+ cwd, err = OpenPath(cwdStr, 0, 0)
+ }
+ cwdMu.Unlock()
+ if err != nil {
+ println("syscall: failed to create fdio cwd: ", err.Error())
+ }
+
+ initStdio := func(i int) (fdio.FDIO, error) {
+ switch zx.StdioHandleTypes[i] {
+ case 0:
+ return nil, EINVAL
+ case fdio.HandleTypeRemote, fdio.HandleTypeSocket, fdio.HandleTypeLogger, fdio.HandleTypeFileDescriptor:
+ info, err := zx.StdioHandles[i].GetInfoHandleBasic()
+ if err != nil {
+ println("syscall: GetInfoHandleBasic failed", err)
+ return nil, EINVAL
+ }
+ switch info.Type {
+ case zx.ObjectTypeChannel:
+ return fdio.NewFileWithCtx(&fidlIo.FileWithCtxInterface{Channel: zx.Channel(zx.StdioHandles[i])}, 0), nil
+ case zx.ObjectTypeSocket:
+ return fdio.NewPipe(zx.Socket(zx.StdioHandles[i])), nil
+ case zx.ObjectTypeLog:
+ return fdio.NewLogger(zx.Log(zx.StdioHandles[i])), nil
+ default:
+ println("syscall: unknown object type for stdio: ", info.Type)
+ return nil, EINVAL
+ }
+ default:
+ println("syscall: unknown handle type for stdio: " + itoa.Itoa(zx.StdioHandleTypes[i]))
+ return nil, EINVAL
+ }
+ }
+ stdioMu.Lock()
+ stdin, err = initStdio(0)
+ if err != nil {
+ println("syscall: failed to create fdio stdin: ", err.Error())
+ }
+ stdout, err = initStdio(1)
+ if err != nil {
+ println("syscall: failed to create fdio stdout: ", err.Error())
+ }
+ stderr, err = initStdio(2)
+ if err != nil {
+ println("syscall: failed to create fdio stderr: ", err.Error())
+ }
+ stdioMu.Unlock()
+}
+
+func Write(fd int, p []byte) (n int, err error) {
+ switch fd {
+ case Stdout:
+ stdioMu.Lock()
+ n, err := stdout.Write(p)
+ stdioMu.Unlock()
+ return n, err
+ case Stderr:
+ stdioMu.Lock()
+ n, err := stderr.Write(p)
+ stdioMu.Unlock()
+ return n, err
+ default:
+ fdsMu.Lock()
+ f := fds[fd-fdsOff]
+ fdsMu.Unlock()
+ return f.Write(p)
+ }
+}
+
+func Seek(fd int, offset int64, whence int) (int64, error) {
+ fdsMu.Lock()
+ f := fds[fd-fdsOff]
+ fdsMu.Unlock()
+ off, err := f.Seek(offset, whence)
+ if err, ok := err.(*zx.Error); ok && err.Status == zx.ErrNotSupported {
+ if _, ok := f.(*fdio.Pipe); ok {
+ return off, ESPIPE
+ }
+ }
+ return off, err
+}
+
+func Close(fd int) (err error) {
+ if fd < fdsOff {
+ return EINVAL
+ }
+ fdsMu.Lock()
+ if fd-fdsOff > len(fds) {
+ fdsMu.Unlock()
+ return EINVAL
+ }
+ f := fds[fd-fdsOff]
+ fds[fd-fdsOff] = nil
+ fdsMu.Unlock()
+ return f.Close()
+}
+
+func fdioPath(p string) (fdio.FDIO, string) {
+ if path.IsAbs(p) {
+ rootMu.Lock()
+ r := root
+ rootMu.Unlock()
+ return r, p[1:]
+ }
+ cwdMu.Lock()
+ c := cwd
+ cwdMu.Unlock()
+ return c, p
+}
+
+func injectNotDirectoryFlag(flags uint32) uint32 {
+ if flags&FsFlagDirectory == 0 && flags&(FsRightWritable|FsFlagCreate) != 0 {
+ flags |= FsFlagNotDirectory
+ }
+ return flags
+}
+
+func OpenPath(p string, flags int, mode uint32) (fdio.FDIO, error) {
+ if strings.Contains(p, "\x00") {
+ return nil, EINVAL
+ }
+ dir, relp := fdioPath(path.Clean(p))
+ zflags := injectNotDirectoryFlag(FdioFlagsToZxio(uint32(flags)))
+ return dir.Open(relp, zflags, mode)
+}
+
+// Mkdir is implemented as an Open call on Fuchsia. The difference from the regular OpenPath call
+// is that Mkdir does not add the FsFlagNotDirectory flag, and uses O_RDWR as the access mode.
+func Mkdir(p string, mode uint32) error {
+ if strings.Contains(p, "\x00") {
+ return EINVAL
+ }
+ dir, relp := fdioPath(path.Clean(p))
+ zflags := FdioFlagsToZxio(uint32(O_CREAT | O_EXCL | O_RDWR))
+ f, err := dir.Open(relp, zflags, mode&0777|S_IFDIR)
+ if err != nil {
+ return err
+ }
+ f.Close()
+ return nil
+}
+
+func Open(path string, flags int, mode uint32) (fd int, err error) {
+ if path == "" {
+ return -1, EINVAL
+ }
+ f, err := OpenPath(path, flags, mode)
+ if err != nil {
+ return -1, err
+ }
+ return OpenFDIO(f), nil
+}
+
+func OpenAt(fdParent int, path string, flags int, mode uint32) (fd int, err error) {
+ parent := FDIOForFD(fdParent)
+ if parent == nil {
+ return -1, EBADF
+ }
+ zflags := injectNotDirectoryFlag(FdioFlagsToZxio(uint32(flags)))
+ f, err := parent.Open(path, zflags, mode)
+ if err != nil {
+ return -1, err
+ }
+ return OpenFDIO(f), nil
+}
+
+func FDIOForFD(fd int) fdio.FDIO {
+ switch fd {
+ case Stdin:
+ return stdin
+ case Stdout:
+ return stdout
+ case Stderr:
+ return stderr
+ }
+ if fd < fdsOff {
+ return nil
+ }
+ fdsMu.Lock()
+ if fd-fdsOff > len(fds) {
+ fdsMu.Unlock()
+ return nil
+ }
+ f := fds[fd-fdsOff]
+ fdsMu.Unlock()
+ return f
+}
+
+func OpenFDIO(f fdio.FDIO) (fd int) {
+ fdsMu.Lock()
+ i := -1
+ for i = 0; i < len(fds); i++ {
+ if fds[i] == nil {
+ fds[i] = f
+ break
+ }
+ }
+ if i == len(fds) {
+ fds = append(fds, f)
+ }
+ fdsMu.Unlock()
+
+ return i + fdsOff
+}
+
+func Fstat(fd int, stat *Stat_t) (err error) {
+ fdsMu.Lock()
+ f := fds[fd-fdsOff]
+ fdsMu.Unlock()
+
+ attr, err := f.GetAttr()
+ if err != nil {
+ return err
+ }
+ stat.Dev = uint64(attr.Mode)
+ stat.Ino = attr.Id
+ stat.Size = attr.ContentSize
+ stat.CreateTime = attr.CreationTime
+ stat.ModifyTime = attr.ModificationTime
+ return nil
+}
+
+func Chown(path string, uid int, gid int) error {
+ var stat Stat_t
+ return Stat(path, &stat)
+}
+
+func Fchown(fd int, uid int, gid int) error {
+ var stat Stat_t
+ return Fstat(fd, &stat)
+}
+
+func Lchown(path string, uid int, gid int) error {
+ var stat Stat_t
+ return Lstat(path, &stat)
+}
+
+func Chmod(path string, mode uint32) error {
+ var stat Stat_t
+ return Stat(path, &stat)
+}
+
+func Fchmod(fd int, mode uint32) error {
+ var stat Stat_t
+ return Fstat(fd, &stat)
+}
+
+func Shutdown(fd int, how int) error {
+ panic("TODO shutdown")
+}
+
+func Stat(path string, stat *Stat_t) (err error) {
+ fd, err := Open(path, O_RDONLY|O_PATH, 0)
+ if err != nil {
+ return err
+ }
+ err = Fstat(fd, stat)
+ if err2 := Close(fd); err == nil {
+ err = err2
+ }
+ return err
+}
+
+func Lstat(path string, stat *Stat_t) (err error) {
+ // TODO: adjust when there are symlinks
+ return Stat(path, stat)
+}
+
+func Pread(fd int, p []byte, offset int64) (n int, err error) {
+ if fd == Stdout || fd == Stderr {
+ return 0, ESPIPE
+ }
+
+ fdsMu.Lock()
+ f := fds[fd-fdsOff]
+ fdsMu.Unlock()
+
+ // An io.Reader can return n < len(p) and io.EOF.
+ // But this is the POSIX syscall read(3), which
+ // returns nil on eof.
+ n, err = f.ReadAt(p, offset)
+ if err == io.EOF {
+ err = nil
+ }
+ return n, err
+}
+
+func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
+ if fd == Stdout || fd == Stderr {
+ return 0, ESPIPE
+ }
+
+ fdsMu.Lock()
+ f := fds[fd-fdsOff]
+ fdsMu.Unlock()
+ return f.WriteAt(p, offset)
+}
+
+func Ftruncate(fd int, length int64) (err error) {
+ fdsMu.Lock()
+ f := fds[fd-fdsOff]
+ fdsMu.Unlock()
+ return f.Truncate(uint64(length))
+}
+
+func Truncate(path string, length int64) (err error) {
+ fd, err := Open(path, O_WRONLY, 0)
+ if err != nil {
+ return err
+ }
+ err = Ftruncate(fd, length)
+ if err2 := Close(fd); err == nil {
+ err = err2
+ }
+ return err
+}
+
+func Readlink(path string, buf []byte) (n int, err error) {
+ return 0, EOPNOTSUPP // no fuchsia support yet
+}
+
+func Symlink(oldpath string, newpath string) (err error) {
+ return EOPNOTSUPP // no fuchsia support yet
+}
+
+func UtimesNano(path string, ts []Timespec) (err error) {
+ f, err := OpenPath(path, 0, 0)
+ if err != nil {
+ return err
+ }
+ defer f.Close()
+ return f.SetAttr(fidlIo.NodeAttributeFlagModificationTime, fidlIo.NodeAttributes{
+ ModificationTime: uint64(TimespecToNsec(ts[1])),
+ })
+}
+
+func clen(n []byte) int {
+ for i := 0; i < len(n); i++ {
+ if n[i] == 0 {
+ return i
+ }
+ }
+ return len(n)
+}
+
+func ReadDirent(fd int, buf []byte) (n int, err error) {
+ fdsMu.Lock()
+ f := fds[fd-fdsOff]
+ fdsMu.Unlock()
+ dirent, err := f.ReadDirents(uint64(len(buf)))
+ if err != nil {
+ return 0, err
+ }
+ return copy(buf, dirent), nil
+}
+
+func direntIno(buf []byte) (uint64, bool) {
+ return readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino))
+}
+
+func direntReclen(buf []byte) (uint64, bool) {
+ if namelen, ok := direntNamlen(buf); ok {
+ return namelen + uint64(direntSize), true
+ } else {
+ return 0, false
+ }
+}
+
+func direntNamlen(buf []byte) (uint64, bool) {
+ return readInt(buf, unsafe.Offsetof(Dirent{}.Size), unsafe.Sizeof(Dirent{}.Size))
+}
+
+type Dirent struct {
+ Ino uint64
+ Size uint8
+ Type uint8
+ Name [1]byte
+}
+
+const direntSize = int(unsafe.Offsetof(Dirent{}.Name))
diff --git a/src/syscall/syscall_unix_test.go b/src/syscall/syscall_unix_test.go
index af0bc85..e3ec1e9 100644
--- a/src/syscall/syscall_unix_test.go
+++ b/src/syscall/syscall_unix_test.go
@@ -316,6 +316,9 @@
}
func TestRlimit(t *testing.T) {
+ if runtime.GOOS == "darwin" {
+ t.Skip("TODO(https://fxbug.dev/78603): this test fails on Fuchsia's mac bots")
+ }
var rlimit, zero syscall.Rlimit
err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &rlimit)
if err != nil {
diff --git a/src/syscall/timestruct.go b/src/syscall/timestruct.go
index e4f3d50..fe826de 100644
--- a/src/syscall/timestruct.go
+++ b/src/syscall/timestruct.go
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build aix || darwin || dragonfly || freebsd || (js && wasm) || linux || netbsd || openbsd || solaris
-// +build aix darwin dragonfly freebsd js,wasm linux netbsd openbsd solaris
+//go:build aix || darwin || dragonfly || freebsd || fuchsia || (js && wasm) || linux || netbsd || openbsd || solaris
+// +build aix darwin dragonfly freebsd fuchsia js,wasm linux netbsd openbsd solaris
package syscall
diff --git a/src/syscall/types_fuchsia.go b/src/syscall/types_fuchsia.go
new file mode 100644
index 0000000..1009050
--- /dev/null
+++ b/src/syscall/types_fuchsia.go
@@ -0,0 +1,37 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package syscall
+
+import "internal/itoa"
+
+const (
+ S_ISUID = 0
+ S_ISGID = 0
+ S_ISVTX = 0
+)
+
+type Errno uintptr
+
+func (e Errno) Error() string {
+ return "errno(" + itoa.Itoa(int(e)) + ")"
+}
+
+type Timespec struct {
+ Sec int64
+ Nsec int64
+}
+
+type Timeval struct {
+ Sec int64
+ Usec int64
+}
+
+func setTimespec(sec, nsec int64) Timespec {
+ return Timespec{Sec: sec, Nsec: nsec}
+}
+
+func setTimeval(sec, usec int64) Timeval {
+ return Timeval{Sec: sec, Usec: usec}
+}
diff --git a/src/syscall/zerrors_fuchsia.go b/src/syscall/zerrors_fuchsia.go
new file mode 100644
index 0000000..5c21082
--- /dev/null
+++ b/src/syscall/zerrors_fuchsia.go
@@ -0,0 +1,87 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package syscall
+
+const (
+ EAGAIN = Errno(11)
+ EINPROGRESS = Errno(115)
+)
+
+const (
+ SOCK_STREAM = 1
+ SOCK_DGRAM = 2
+ SOCK_RAW = 3
+)
+
+const (
+ IPPROTO_IP = 0
+ IPPROTO_ICMP = 1
+ IPPROTO_TCP = 6
+ IPPROTO_UDP = 17
+ IPPROTO_ICMPV6 = 58
+)
+
+const (
+ AF_INET = 0x2
+ AF_INET6 = 0xa
+)
+
+const (
+ SOL_SOCKET = 0x1
+ SOL_TCP = 0x6
+)
+
+const (
+ SO_ACCEPTCONN = 0x1e
+ SO_BROADCAST = 0x6
+ SO_BSDCOMPAT = 0xe
+ SO_DEBUG = 0x1
+ SO_DOMAIN = 0x27
+ SO_DONTROUTE = 0x5
+ SO_ERROR = 0x4
+ SO_KEEPALIVE = 0x9
+ SO_LINGER = 0xd
+ SO_NO_CHECK = 0xb
+ SO_PASSCRED = 0x10
+ SO_PEERCRED = 0x11
+ SO_PRIORITY = 0xc
+ SO_PROTOCOL = 0x26
+ SO_RCVBUF = 0x8
+ SO_RCVBUFFORCE = 0x21
+ SO_RCVLOWAT = 0x12
+ SO_RCVTIMEO = 0x14
+ SO_REUSEADDR = 0x2
+ SO_REUSEPORT = 0xf
+ SO_SNDBUF = 0x7
+ SO_SNDBUFFORCE = 0x20
+ SO_SNDLOWAT = 0x13
+ SO_SNDTIMEO = 0x15
+ SO_TYPE = 0x3
+)
+
+const (
+ TCP_NODELAY = 1
+ TCP_MAXSEG = 2
+ TCP_CORK = 3
+ TCP_KEEPIDLE = 4
+ TCP_KEEPINTVL = 5
+ TCP_KEEPCNT = 6
+ TCP_SYNCNT = 7
+ TCP_LINGER2 = 8
+ TCP_DEFER_ACCEPT = 9
+ TCP_WINDOW_CLAMP = 10
+ TCP_INFO = 11
+ TCP_QUICKACK = 12
+)
+
+const (
+ DT_FIFO = 1
+ DT_CHR = 2
+ DT_DIR = 4
+ DT_BLK = 6
+ DT_REG = 8
+ DT_LNK = 10
+ DT_SOCK = 12
+)
diff --git a/src/syscall/ztypes_fuchsia_amd64.go b/src/syscall/ztypes_fuchsia_amd64.go
new file mode 100644
index 0000000..74f50ea
--- /dev/null
+++ b/src/syscall/ztypes_fuchsia_amd64.go
@@ -0,0 +1,26 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package syscall
+
+type RawSockaddrInet4 struct {
+ Family uint16
+ Port uint16
+ Addr [4]byte /* in_addr */
+ Zero [8]uint8
+}
+
+type RawSockaddrInet6 struct {
+ Family uint16
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+const (
+ SizeofSockaddrInet4 = 0x10
+ SizeofSockaddrInet6 = 0x1c
+ SizeofSockaddrAny = 0x70
+)
diff --git a/src/syscall/ztypes_fuchsia_arm64.go b/src/syscall/ztypes_fuchsia_arm64.go
new file mode 100644
index 0000000..74f50ea
--- /dev/null
+++ b/src/syscall/ztypes_fuchsia_arm64.go
@@ -0,0 +1,26 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package syscall
+
+type RawSockaddrInet4 struct {
+ Family uint16
+ Port uint16
+ Addr [4]byte /* in_addr */
+ Zero [8]uint8
+}
+
+type RawSockaddrInet6 struct {
+ Family uint16
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+const (
+ SizeofSockaddrInet4 = 0x10
+ SizeofSockaddrInet6 = 0x1c
+ SizeofSockaddrAny = 0x70
+)
diff --git a/src/syscall/zx/diagnostics/impl.go b/src/syscall/zx/diagnostics/impl.go
new file mode 100644
index 0000000..41e7894
--- /dev/null
+++ b/src/syscall/zx/diagnostics/impl.go
@@ -0,0 +1,1501 @@
+// Copyright 2020 The Fuchsia Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// Code generated by third_party/go/regen-fidl; DO NOT EDIT.
+
+package diagnostics
+
+import (
+ _zx "syscall/zx"
+ _bindings "syscall/zx/fidl"
+ fuchsiamem "syscall/zx/mem"
+)
+
+const (
+ // The size bound of 1024 is a reasonably low size restriction that meets most
+ // canonical selectors we've ecountered.
+ MaximumRawSelectorLength uint16 = 1024
+ // The size 64 was chosen because entries in batches are handles to
+ // VMOs and there is a limit of 64 handles per fidl message.
+ MaximumEntriesPerBatch uint16 = 64
+ MaxStringSelectorLength uint16 = 100
+ MaxMonikerSegments uint16 = 25
+ MaxDataHierarchyDepth uint16 = 100
+)
+
+var _ _bindings.Enum = Format(0)
+
+// Enum used to specify the output format for
+// Reader results.
+type Format uint32
+
+const (
+
+ // Dump read results per the Diagnostics Json
+ // Schema specifications.
+ FormatJson Format = 1
+
+ // Dump read results per the Iquery text specifications.
+ FormatText Format = 2
+)
+
+func (_ Format) I_EnumValues() []Format {
+ return []Format{
+ FormatJson,
+ FormatText,
+ }
+}
+
+func (_ Format) I_EnumIsStrict() bool {
+ return true
+}
+
+func (x Format) IsUnknown() bool {
+ switch x {
+ case 1:
+ return true
+ case 2:
+ return true
+ default:
+ return false
+ }
+}
+
+func (x Format) String() string {
+ switch x {
+ case 1:
+ return "Json"
+ case 2:
+ return "Text"
+ }
+ return "Unknown"
+}
+
+var _ _bindings.Enum = ReaderError(0)
+
+// Enum describing the potential failure states of the streaming protocol when serving results
+// to the client over the result iterator.
+type ReaderError uint32
+
+const (
+ ReaderErrorIo ReaderError = 1
+)
+
+func (_ ReaderError) I_EnumValues() []ReaderError {
+ return []ReaderError{
+ ReaderErrorIo,
+ }
+}
+
+func (_ ReaderError) I_EnumIsStrict() bool {
+ return true
+}
+
+func (x ReaderError) IsUnknown() bool {
+ switch x {
+ case 1:
+ return true
+ default:
+ return false
+ }
+}
+
+func (x ReaderError) String() string {
+ switch x {
+ case 1:
+ return "Io"
+ }
+ return "Unknown"
+}
+
+var _ _bindings.Enum = StreamMode(0)
+
+// Enum specifying the modes by which a user can connect to and stream diagnostics metrics.
+type StreamMode uint8
+
+const (
+
+ // The stream will serve a snapshot of the diagnostics data at the time of
+ // connection, then end.
+ StreamModeSnapshot StreamMode = 1
+
+ // The stream will serve a snapshot of the diagnostics data at the time of
+ // connection, then subsequent calls to the stream will hang until
+ // new diagnostics data is available.
+ StreamModeSnapshotThenSubscribe StreamMode = 2
+
+ // Calls to the stream will hang until new diagnostics data is available. Between calls to
+ // the stream, newly arrived data is buffered.
+ StreamModeSubscribe StreamMode = 3
+)
+
+func (_ StreamMode) I_EnumValues() []StreamMode {
+ return []StreamMode{
+ StreamModeSnapshot,
+ StreamModeSnapshotThenSubscribe,
+ StreamModeSubscribe,
+ }
+}
+
+func (_ StreamMode) I_EnumIsStrict() bool {
+ return true
+}
+
+func (x StreamMode) IsUnknown() bool {
+ switch x {
+ case 1:
+ return true
+ case 2:
+ return true
+ case 3:
+ return true
+ default:
+ return false
+ }
+}
+
+func (x StreamMode) String() string {
+ switch x {
+ case 1:
+ return "Snapshot"
+ case 2:
+ return "SnapshotThenSubscribe"
+ case 3:
+ return "Subscribe"
+ }
+ return "Unknown"
+}
+
+var _ _bindings.Enum = DataType(0)
+
+type DataType uint8
+
+const (
+
+ // Complete inspect hierarchies on the system.
+ DataTypeInspect DataType = 1
+
+ // Start|Stop|Running|DiagnosticsReady events on the system.
+ DataTypeLifecycle DataType = 2
+
+ // Log streams on the system.
+ DataTypeLogs DataType = 3
+)
+
+func (_ DataType) I_EnumValues() []DataType {
+ return []DataType{
+ DataTypeInspect,
+ DataTypeLifecycle,
+ DataTypeLogs,
+ }
+}
+
+func (_ DataType) I_EnumIsStrict() bool {
+ return true
+}
+
+func (x DataType) IsUnknown() bool {
+ switch x {
+ case 1:
+ return true
+ case 2:
+ return true
+ case 3:
+ return true
+ default:
+ return false
+ }
+}
+
+func (x DataType) String() string {
+ switch x {
+ case 1:
+ return "Inspect"
+ case 2:
+ return "Lifecycle"
+ case 3:
+ return "Logs"
+ }
+ return "Unknown"
+}
+
+var _ _bindings.Enum = Severity(0)
+
+// The severity of a given record.
+type Severity uint8
+
+const (
+
+ // Trace records include detailed information about program execution.
+ SeverityTrace Severity = 16
+
+ // Debug records include development-facing information about program execution.
+ SeverityDebug Severity = 32
+
+ // Info records include general information about program execution. (default)
+ SeverityInfo Severity = 48
+
+ // Warning records include information about potentially problematic operations.
+ SeverityWarn Severity = 64
+
+ // Error records include information about failed operations.
+ SeverityError Severity = 80
+
+ // Fatal records convey information about operations which cause a program's termination.
+ SeverityFatal Severity = 96
+)
+
+func (_ Severity) I_EnumValues() []Severity {
+ return []Severity{
+ SeverityTrace,
+ SeverityDebug,
+ SeverityInfo,
+ SeverityWarn,
+ SeverityError,
+ SeverityFatal,
+ }
+}
+
+func (_ Severity) I_EnumIsStrict() bool {
+ return true
+}
+
+func (x Severity) IsUnknown() bool {
+ switch x {
+ case 16:
+ return true
+ case 32:
+ return true
+ case 48:
+ return true
+ case 64:
+ return true
+ case 80:
+ return true
+ case 96:
+ return true
+ default:
+ return false
+ }
+}
+
+func (x Severity) String() string {
+ switch x {
+ case 16:
+ return "Trace"
+ case 32:
+ return "Debug"
+ case 48:
+ return "Info"
+ case 64:
+ return "Warn"
+ case 80:
+ return "Error"
+ case 96:
+ return "Fatal"
+ }
+ return "Unknown"
+}
+
+type BatchIteratorGetNextResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Batch []FormattedContent `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"64"`
+}
+
+var _mBatchIteratorGetNextResponse = _bindings.CreateLazyMarshaler(BatchIteratorGetNextResponse{})
+
+func (msg *BatchIteratorGetNextResponse) Marshaler() _bindings.Marshaler {
+ return _mBatchIteratorGetNextResponse
+}
+
+// A selector defining a set of nodes to match, for which the entire subtree including
+// those nodes are selected.
+type SubtreeSelector struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ // A vector of StringSelectors which serve as a pattern matcher
+ // for paths through a hierarchy of named nodes. Each entry in the vector
+ // is a selector for a single named node in a data hierarchy. The vector
+ // of selectors for named nodes, then, defines a selector on paths through the
+ // data hierarchy.
+ //
+ // Node paths support wildcarding, which will glob a single level of a
+ // node hierarchy. eg:
+ // root/a/b/*/d
+ // will match all nodes named d which are below some child of node b.
+ // root/a/b/c*
+ // will match all nodes below b which start with the character "c".
+ NodePath []StringSelector `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"100"`
+}
+
+var _mSubtreeSelector = _bindings.CreateLazyMarshaler(SubtreeSelector{})
+
+func (msg *SubtreeSelector) Marshaler() _bindings.Marshaler {
+ return _mSubtreeSelector
+}
+
+// A selector defining a set of nodes to match, and on those matched nodes a set of named
+// properties to match.
+type PropertySelector struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"40" fidl_alignment_v1:"8" fidl_size_v2:"32" fidl_alignment_v2:"8"`
+ // A vector of StringSelectors which serve as a pattern matcher
+ // for paths through a hierarchy of named nodes. Each entry in the vector
+ // is a selector for a single named node in a data hierarchy. The vector
+ // of selectors for named nodes, then, defines a selector on paths through the
+ // data hierarchy.
+ //
+ // Node paths support wildcarding, which will glob a single level of a
+ // node hierarchy. eg:
+ // root/a/b/*/d
+ // will match all nodes named d which are below some child of node b.
+ // root/a/b/c*
+ // will match all nodes below b which start with the character "c".
+ NodePath []StringSelector `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"100"`
+ // A StringSelector which serves as a pattern matcher for
+ // string-named properties on a node in a data hierarchy.
+ //
+ // target_properties supports wildcarding, which will match against all properties
+ // on any node matched by node_path.
+ TargetProperties StringSelector `fidl_offset_v1:"16" fidl_offset_v2:"16"`
+}
+
+var _mPropertySelector = _bindings.CreateLazyMarshaler(PropertySelector{})
+
+func (msg *PropertySelector) Marshaler() _bindings.Marshaler {
+ return _mPropertySelector
+}
+
+type archiveAccessorWithCtxStreamDiagnosticsRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"24" fidl_alignment_v2:"8"`
+ StreamParameters StreamParameters `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ ResultStream BatchIteratorWithCtxInterfaceRequest `fidl_offset_v1:"16" fidl_offset_v2:"16" fidl_handle_subtype:"4" fidl_bounds:"0"`
+}
+
+var _marchiveAccessorWithCtxStreamDiagnosticsRequest = _bindings.CreateLazyMarshaler(archiveAccessorWithCtxStreamDiagnosticsRequest{})
+
+func (msg *archiveAccessorWithCtxStreamDiagnosticsRequest) Marshaler() _bindings.Marshaler {
+ return _marchiveAccessorWithCtxStreamDiagnosticsRequest
+}
+
+type batchIteratorWithCtxGetNextResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BatchIteratorGetNextResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbatchIteratorWithCtxGetNextResponse = _bindings.CreateLazyMarshaler(batchIteratorWithCtxGetNextResponse{})
+
+func (msg *batchIteratorWithCtxGetNextResponse) Marshaler() _bindings.Marshaler {
+ return _mbatchIteratorWithCtxGetNextResponse
+}
+
+type I_batchIteratorGetNextResultTag uint64
+
+const (
+ BatchIteratorGetNextResultResponse = 1 // 0x00000001
+ BatchIteratorGetNextResultErr = 2 // 0x00000002
+)
+
+type BatchIteratorGetNextResult struct {
+ I_batchIteratorGetNextResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"true"`
+ Response BatchIteratorGetNextResponse `fidl_ordinal:"1"`
+ Err ReaderError `fidl_ordinal:"2"`
+}
+
+func (_m *BatchIteratorGetNextResult) reset() {
+ switch _m.I_batchIteratorGetNextResultTag {
+ case 1:
+ var _zeroed BatchIteratorGetNextResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed ReaderError
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BatchIteratorGetNextResult) Which() I_batchIteratorGetNextResultTag {
+ return _m.I_batchIteratorGetNextResultTag
+}
+
+func (_m *BatchIteratorGetNextResult) Ordinal() uint64 {
+ return uint64(_m.I_batchIteratorGetNextResultTag)
+}
+
+func (_m *BatchIteratorGetNextResult) SetResponse(response BatchIteratorGetNextResponse) {
+ _m.reset()
+ _m.I_batchIteratorGetNextResultTag = BatchIteratorGetNextResultResponse
+ _m.Response = response
+}
+
+func BatchIteratorGetNextResultWithResponse(response BatchIteratorGetNextResponse) BatchIteratorGetNextResult {
+ var _u BatchIteratorGetNextResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BatchIteratorGetNextResult) SetErr(err ReaderError) {
+ _m.reset()
+ _m.I_batchIteratorGetNextResultTag = BatchIteratorGetNextResultErr
+ _m.Err = err
+}
+
+func BatchIteratorGetNextResultWithErr(err ReaderError) BatchIteratorGetNextResult {
+ var _u BatchIteratorGetNextResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_selectorArgumentTag uint64
+
+const (
+ SelectorArgument_unknownData = 0 // 0x00000000
+ SelectorArgumentStructuredSelector = 1 // 0x00000001
+ SelectorArgumentRawSelector = 2 // 0x00000002
+)
+
+// Argument used for Archive selectors, can be either the pre-parsed
+// fidl struct or string representation.
+type SelectorArgument struct {
+ I_selectorArgumentTag `fidl:"x" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ I_unknownData interface{}
+ // A Selector defining a pattern-matcher which selects for components within a hierarchy
+ // and properties in a data hierarchy namespaced by component.
+ StructuredSelector Selector `fidl_ordinal:"1"`
+ // A raw string representing a [fuchsia.diagnostics/Selector].
+ // The Selector defines a pattern-matcher which selects for components within a hierarchy
+ // and properties in a data hierarchy namespaced by component.
+ // NOTE: All StringSelectors parsed from the raw_selector will be interpreted in
+ // string_pattern mode, giving significance to special characters.
+ // See https://fuchsia.dev/fuchsia-src/reference/diagnostics/selectors for more information
+ RawSelector string `fidl_bounds:"1024" fidl_ordinal:"2"`
+}
+
+func (_m *SelectorArgument) reset() {
+ switch _m.I_selectorArgumentTag {
+ case 1:
+ var _zeroed Selector
+ _m.StructuredSelector = _zeroed
+ case 2:
+ var _zeroed string
+ _m.RawSelector = _zeroed
+ default:
+ var _zeroed interface{}
+ _m.I_unknownData = _zeroed
+ }
+}
+
+func (_m *SelectorArgument) Which() I_selectorArgumentTag {
+ switch _m.I_selectorArgumentTag {
+ case 1:
+ return SelectorArgumentStructuredSelector
+ case 2:
+ return SelectorArgumentRawSelector
+ default:
+ return SelectorArgument_unknownData
+ }
+}
+
+func (_m *SelectorArgument) Ordinal() uint64 {
+ return uint64(_m.I_selectorArgumentTag)
+}
+
+func (_m *SelectorArgument) SetStructuredSelector(structuredSelector Selector) {
+ _m.reset()
+ _m.I_selectorArgumentTag = SelectorArgumentStructuredSelector
+ _m.StructuredSelector = structuredSelector
+}
+
+func SelectorArgumentWithStructuredSelector(structuredSelector Selector) SelectorArgument {
+ var _u SelectorArgument
+ _u.SetStructuredSelector(structuredSelector)
+ return _u
+}
+
+func (_m *SelectorArgument) SetRawSelector(rawSelector string) {
+ _m.reset()
+ _m.I_selectorArgumentTag = SelectorArgumentRawSelector
+ _m.RawSelector = rawSelector
+}
+
+func SelectorArgumentWithRawSelector(rawSelector string) SelectorArgument {
+ var _u SelectorArgument
+ _u.SetRawSelector(rawSelector)
+ return _u
+}
+func (_m *SelectorArgument) GetUnknownData() _bindings.UnknownData {
+ return _m.I_unknownData.(_bindings.UnknownData)
+}
+
+type I_formattedContentTag uint64
+
+const (
+ FormattedContent_unknownData = 0 // 0x00000000
+ FormattedContentJson = 1 // 0x00000001
+ FormattedContentText = 2 // 0x00000002
+)
+
+// A fidl union containing a complete hierarchy of structured diagnostics
+// data, such that the content can be parsed into a file by itself.
+type FormattedContent struct {
+ I_formattedContentTag `fidl:"x" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"true"`
+ I_unknownData interface{}
+ // A diagnostics schema encoded as json.
+ // The VMO will contain up to 1mb of diagnostics data.
+ Json fuchsiamem.Buffer `fidl_ordinal:"1"`
+ // A diagnostics schema encoded as text.
+ // The VMO will contain up to 1mb of diagnostics data.
+ Text fuchsiamem.Buffer `fidl_ordinal:"2"`
+}
+
+func (_m *FormattedContent) reset() {
+ switch _m.I_formattedContentTag {
+ case 1:
+ var _zeroed fuchsiamem.Buffer
+ _m.Json = _zeroed
+ case 2:
+ var _zeroed fuchsiamem.Buffer
+ _m.Text = _zeroed
+ default:
+ var _zeroed interface{}
+ _m.I_unknownData = _zeroed
+ }
+}
+
+func (_m *FormattedContent) Which() I_formattedContentTag {
+ switch _m.I_formattedContentTag {
+ case 1:
+ return FormattedContentJson
+ case 2:
+ return FormattedContentText
+ default:
+ return FormattedContent_unknownData
+ }
+}
+
+func (_m *FormattedContent) Ordinal() uint64 {
+ return uint64(_m.I_formattedContentTag)
+}
+
+func (_m *FormattedContent) SetJson(json fuchsiamem.Buffer) {
+ _m.reset()
+ _m.I_formattedContentTag = FormattedContentJson
+ _m.Json = json
+}
+
+func FormattedContentWithJson(json fuchsiamem.Buffer) FormattedContent {
+ var _u FormattedContent
+ _u.SetJson(json)
+ return _u
+}
+
+func (_m *FormattedContent) SetText(text fuchsiamem.Buffer) {
+ _m.reset()
+ _m.I_formattedContentTag = FormattedContentText
+ _m.Text = text
+}
+
+func FormattedContentWithText(text fuchsiamem.Buffer) FormattedContent {
+ var _u FormattedContent
+ _u.SetText(text)
+ return _u
+}
+func (_m *FormattedContent) GetUnknownData() _bindings.UnknownData {
+ return _m.I_unknownData.(_bindings.UnknownData)
+}
+
+type I_clientSelectorConfigurationTag uint64
+
+const (
+ ClientSelectorConfiguration_unknownData = 0 // 0x00000000
+ ClientSelectorConfigurationSelectors = 1 // 0x00000001
+ ClientSelectorConfigurationSelectAll = 2 // 0x00000002
+)
+
+type ClientSelectorConfiguration struct {
+ I_clientSelectorConfigurationTag `fidl:"x" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ I_unknownData interface{}
+ // A vector of [fuchsia.diagnostics/SelectorArgument] which
+ // provide additional filters to scope data streams with. An empty vector is considered
+ // a misconfiguration and will result in an epitaph signaling incorrect parameters.
+ Selectors []SelectorArgument `fidl_bounds:"" fidl_ordinal:"1"`
+ // select_all must be true if set, and specifies that the client wants to retrieve
+ // all data that their connection is able to expose.
+ SelectAll bool `fidl_ordinal:"2"`
+}
+
+func (_m *ClientSelectorConfiguration) reset() {
+ switch _m.I_clientSelectorConfigurationTag {
+ case 1:
+ var _zeroed []SelectorArgument
+ _m.Selectors = _zeroed
+ case 2:
+ var _zeroed bool
+ _m.SelectAll = _zeroed
+ default:
+ var _zeroed interface{}
+ _m.I_unknownData = _zeroed
+ }
+}
+
+func (_m *ClientSelectorConfiguration) Which() I_clientSelectorConfigurationTag {
+ switch _m.I_clientSelectorConfigurationTag {
+ case 1:
+ return ClientSelectorConfigurationSelectors
+ case 2:
+ return ClientSelectorConfigurationSelectAll
+ default:
+ return ClientSelectorConfiguration_unknownData
+ }
+}
+
+func (_m *ClientSelectorConfiguration) Ordinal() uint64 {
+ return uint64(_m.I_clientSelectorConfigurationTag)
+}
+
+func (_m *ClientSelectorConfiguration) SetSelectors(selectors []SelectorArgument) {
+ _m.reset()
+ _m.I_clientSelectorConfigurationTag = ClientSelectorConfigurationSelectors
+ _m.Selectors = selectors
+}
+
+func ClientSelectorConfigurationWithSelectors(selectors []SelectorArgument) ClientSelectorConfiguration {
+ var _u ClientSelectorConfiguration
+ _u.SetSelectors(selectors)
+ return _u
+}
+
+func (_m *ClientSelectorConfiguration) SetSelectAll(selectAll bool) {
+ _m.reset()
+ _m.I_clientSelectorConfigurationTag = ClientSelectorConfigurationSelectAll
+ _m.SelectAll = selectAll
+}
+
+func ClientSelectorConfigurationWithSelectAll(selectAll bool) ClientSelectorConfiguration {
+ var _u ClientSelectorConfiguration
+ _u.SetSelectAll(selectAll)
+ return _u
+}
+func (_m *ClientSelectorConfiguration) GetUnknownData() _bindings.UnknownData {
+ return _m.I_unknownData.(_bindings.UnknownData)
+}
+
+type I_stringSelectorTag uint64
+
+const (
+ StringSelector_unknownData = 0 // 0x00000000
+ StringSelectorStringPattern = 1 // 0x00000001
+ StringSelectorExactMatch = 2 // 0x00000002
+)
+
+// StringSelector is an union defining different ways to describe a pattern to match
+// strings against.
+type StringSelector struct {
+ I_stringSelectorTag `fidl:"x" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ I_unknownData interface{}
+ // This is a provided string that defines a pattern to
+ // match against. The parser treats asterisks (*), colons (:) and backslashes
+ // (\) as special characters.
+ //
+ // If you wish to match against literal asterisks (*), they must be escaped.
+ // If you wish to match against literal backslashes (\), they must be escaped.
+ // If you wish to match against literal colons (:), they must be escaped.
+ //
+ // eg: abc will match any string with the exact name "abc".
+ // eg: a\* will match any string with the exact name "a*".
+ // eg: a\\* will match any that starts with exactly "a\".
+ // eg: a* will match any string that starts with "a".
+ // eg: a*b will match any string that starts with a and ends with b.
+ // eg: a*b*c will match any string that starts with a and ends with c, with `b`
+ // in the middle.
+ //
+ // In addition, the "**" literal is treated as a special sequence that may match
+ // multiple levels in a component selector only. See |ComponentSelector| for
+ // details.
+ StringPattern string `fidl_bounds:"100" fidl_ordinal:"1"`
+ // This is a provided string that defines an exact string to match against. No
+ // characters are treated as special, or carry special syntax.
+ ExactMatch string `fidl_bounds:"100" fidl_ordinal:"2"`
+}
+
+func (_m *StringSelector) reset() {
+ switch _m.I_stringSelectorTag {
+ case 1:
+ var _zeroed string
+ _m.StringPattern = _zeroed
+ case 2:
+ var _zeroed string
+ _m.ExactMatch = _zeroed
+ default:
+ var _zeroed interface{}
+ _m.I_unknownData = _zeroed
+ }
+}
+
+func (_m *StringSelector) Which() I_stringSelectorTag {
+ switch _m.I_stringSelectorTag {
+ case 1:
+ return StringSelectorStringPattern
+ case 2:
+ return StringSelectorExactMatch
+ default:
+ return StringSelector_unknownData
+ }
+}
+
+func (_m *StringSelector) Ordinal() uint64 {
+ return uint64(_m.I_stringSelectorTag)
+}
+
+func (_m *StringSelector) SetStringPattern(stringPattern string) {
+ _m.reset()
+ _m.I_stringSelectorTag = StringSelectorStringPattern
+ _m.StringPattern = stringPattern
+}
+
+func StringSelectorWithStringPattern(stringPattern string) StringSelector {
+ var _u StringSelector
+ _u.SetStringPattern(stringPattern)
+ return _u
+}
+
+func (_m *StringSelector) SetExactMatch(exactMatch string) {
+ _m.reset()
+ _m.I_stringSelectorTag = StringSelectorExactMatch
+ _m.ExactMatch = exactMatch
+}
+
+func StringSelectorWithExactMatch(exactMatch string) StringSelector {
+ var _u StringSelector
+ _u.SetExactMatch(exactMatch)
+ return _u
+}
+func (_m *StringSelector) GetUnknownData() _bindings.UnknownData {
+ return _m.I_unknownData.(_bindings.UnknownData)
+}
+
+type I_treeSelectorTag uint64
+
+const (
+ TreeSelector_unknownData = 0 // 0x00000000
+ TreeSelectorSubtreeSelector = 1 // 0x00000001
+ TreeSelectorPropertySelector = 2 // 0x00000002
+)
+
+// TreeSelector represents a selection request on a hierarchy of named nodes, with
+// named properties on those nodes.
+type TreeSelector struct {
+ I_treeSelectorTag `fidl:"x" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ I_unknownData interface{}
+ // A selector defining a set of nodes to match, for which the entire subtree including
+ // those nodes are selected.
+ SubtreeSelector SubtreeSelector `fidl_ordinal:"1"`
+ // A selector defining a set of nodes to match, and on those matched nodes a set of named
+ // propperties to match.
+ PropertySelector PropertySelector `fidl_ordinal:"2"`
+}
+
+func (_m *TreeSelector) reset() {
+ switch _m.I_treeSelectorTag {
+ case 1:
+ var _zeroed SubtreeSelector
+ _m.SubtreeSelector = _zeroed
+ case 2:
+ var _zeroed PropertySelector
+ _m.PropertySelector = _zeroed
+ default:
+ var _zeroed interface{}
+ _m.I_unknownData = _zeroed
+ }
+}
+
+func (_m *TreeSelector) Which() I_treeSelectorTag {
+ switch _m.I_treeSelectorTag {
+ case 1:
+ return TreeSelectorSubtreeSelector
+ case 2:
+ return TreeSelectorPropertySelector
+ default:
+ return TreeSelector_unknownData
+ }
+}
+
+func (_m *TreeSelector) Ordinal() uint64 {
+ return uint64(_m.I_treeSelectorTag)
+}
+
+func (_m *TreeSelector) SetSubtreeSelector(subtreeSelector SubtreeSelector) {
+ _m.reset()
+ _m.I_treeSelectorTag = TreeSelectorSubtreeSelector
+ _m.SubtreeSelector = subtreeSelector
+}
+
+func TreeSelectorWithSubtreeSelector(subtreeSelector SubtreeSelector) TreeSelector {
+ var _u TreeSelector
+ _u.SetSubtreeSelector(subtreeSelector)
+ return _u
+}
+
+func (_m *TreeSelector) SetPropertySelector(propertySelector PropertySelector) {
+ _m.reset()
+ _m.I_treeSelectorTag = TreeSelectorPropertySelector
+ _m.PropertySelector = propertySelector
+}
+
+func TreeSelectorWithPropertySelector(propertySelector PropertySelector) TreeSelector {
+ var _u TreeSelector
+ _u.SetPropertySelector(propertySelector)
+ return _u
+}
+func (_m *TreeSelector) GetUnknownData() _bindings.UnknownData {
+ return _m.I_unknownData.(_bindings.UnknownData)
+}
+
+// Interest expresses the scope of clients' desired diagnostics data,
+// e.g. for filtering messages or controlling their generation.
+type Interest struct {
+ _ struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ I_unknownData interface{}
+ // Minimum desired severity. Components should include records at or
+ // above this severity.
+ //
+ // If not present, interpreted as Severity.INFO.
+ MinSeverity Severity `fidl_ordinal:"1"`
+ MinSeverityPresent bool
+}
+
+func (u *Interest) SetMinSeverity(minSeverity Severity) {
+ u.MinSeverity = minSeverity
+ u.MinSeverityPresent = true
+}
+
+func (u *Interest) GetMinSeverity() Severity {
+ return u.MinSeverity
+}
+
+func (u *Interest) GetMinSeverityWithDefault(_default Severity) Severity {
+ if !u.HasMinSeverity() {
+ return _default
+ }
+ return u.MinSeverity
+}
+
+func (u *Interest) HasMinSeverity() bool {
+ return u.MinSeverityPresent
+}
+
+func (u *Interest) ClearMinSeverity() {
+ u.MinSeverityPresent = false
+}
+
+func (u *Interest) HasUnknownData() bool {
+ return u.I_unknownData != nil
+}
+
+func (u *Interest) GetUnknownData() map[uint64]_bindings.UnknownData {
+ return u.I_unknownData.(map[uint64]_bindings.UnknownData)
+}
+
+// Parameters which configure a diagnostics stream's performance properties.
+type PerformanceConfiguration struct {
+ _ struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ I_unknownData interface{}
+ // Maximum aggregate size of all formatted contents returned by
+ // the batch iterator for a diagnostics stream. If this value is set for a stream
+ // configured in subscribe mode, the stream will terminate when the max size has
+ // been reached.
+ // NOTE: OPTIONAL
+ MaxAggregateContentSizeBytes uint64 `fidl_ordinal:"1"`
+ MaxAggregateContentSizeBytesPresent bool
+ // Configuration specifying max number of seconds to wait for a single
+ // component to have its diagnostics data "pumped". This value can used
+ // for testing or if you know the component you are interested is in under
+ // heavy load.
+ // If not provided, then PER_COMPONENT_ASYNC_TIMEOUT_SECONDS as defined in
+ // https://fuchsia.googlesource.com/fuchsia/+/refs/heads/master/src/diagnostics/archivist/src/constants.rs
+ // will be used.
+ // NOTE: OPTIONAL
+ BatchRetrievalTimeoutSeconds int64 `fidl_ordinal:"2"`
+ BatchRetrievalTimeoutSecondsPresent bool
+}
+
+func (u *PerformanceConfiguration) SetMaxAggregateContentSizeBytes(maxAggregateContentSizeBytes uint64) {
+ u.MaxAggregateContentSizeBytes = maxAggregateContentSizeBytes
+ u.MaxAggregateContentSizeBytesPresent = true
+}
+
+func (u *PerformanceConfiguration) GetMaxAggregateContentSizeBytes() uint64 {
+ return u.MaxAggregateContentSizeBytes
+}
+
+func (u *PerformanceConfiguration) GetMaxAggregateContentSizeBytesWithDefault(_default uint64) uint64 {
+ if !u.HasMaxAggregateContentSizeBytes() {
+ return _default
+ }
+ return u.MaxAggregateContentSizeBytes
+}
+
+func (u *PerformanceConfiguration) HasMaxAggregateContentSizeBytes() bool {
+ return u.MaxAggregateContentSizeBytesPresent
+}
+
+func (u *PerformanceConfiguration) ClearMaxAggregateContentSizeBytes() {
+ u.MaxAggregateContentSizeBytesPresent = false
+}
+
+func (u *PerformanceConfiguration) SetBatchRetrievalTimeoutSeconds(batchRetrievalTimeoutSeconds int64) {
+ u.BatchRetrievalTimeoutSeconds = batchRetrievalTimeoutSeconds
+ u.BatchRetrievalTimeoutSecondsPresent = true
+}
+
+func (u *PerformanceConfiguration) GetBatchRetrievalTimeoutSeconds() int64 {
+ return u.BatchRetrievalTimeoutSeconds
+}
+
+func (u *PerformanceConfiguration) GetBatchRetrievalTimeoutSecondsWithDefault(_default int64) int64 {
+ if !u.HasBatchRetrievalTimeoutSeconds() {
+ return _default
+ }
+ return u.BatchRetrievalTimeoutSeconds
+}
+
+func (u *PerformanceConfiguration) HasBatchRetrievalTimeoutSeconds() bool {
+ return u.BatchRetrievalTimeoutSecondsPresent
+}
+
+func (u *PerformanceConfiguration) ClearBatchRetrievalTimeoutSeconds() {
+ u.BatchRetrievalTimeoutSecondsPresent = false
+}
+
+func (u *PerformanceConfiguration) HasUnknownData() bool {
+ return u.I_unknownData != nil
+}
+
+func (u *PerformanceConfiguration) GetUnknownData() map[uint64]_bindings.UnknownData {
+ return u.I_unknownData.(map[uint64]_bindings.UnknownData)
+}
+
+// Parameters needed to configure a stream of diagnostics information.
+type StreamParameters struct {
+ _ struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ I_unknownData interface{}
+ // A [fuchsia.diagnostics/DataType] that specifies the diagnostics data type
+ // to stream to the client.
+ // NOTE: REQUIRED
+ DataType DataType `fidl_ordinal:"1"`
+ DataTypePresent bool
+ // A [fuchsia.diagnostics/StreamMode] that specifies how the
+ // streaming server provides streamed results.
+ // NOTE: REQUIRED
+ StreamMode StreamMode `fidl_ordinal:"2"`
+ StreamModePresent bool
+ // A [fuchsia.diagnostics/Format] that specifies how to format the returned
+ // diagnostics data.
+ // NOTE: REQUIRED
+ Format Format `fidl_ordinal:"3"`
+ FormatPresent bool
+ // Configuration specifying what results the client wants returned from their
+ // connection. The client can request a specific subset of data using a vector
+ // of provided selectors, or can specify that they want all available data.
+ // NOTE: REQUIRED
+ ClientSelectorConfiguration ClientSelectorConfiguration `fidl_ordinal:"4"`
+ ClientSelectorConfigurationPresent bool
+ // Configuration specifying max number of seconds to wait for a single
+ // component to have its diagnostics data "pumped". This value can used
+ // for testing or if you know the component you are interested is in under
+ // heavy load.
+ // If not provided, then PER_COMPONENT_ASYNC_TIMEOUT_SECONDS as defined in
+ // https://fuchsia.googlesource.com/fuchsia/+/refs/heads/master/src/diagnostics/archivist/src/constants.rs
+ // will be used.
+ // NOTE: OPTIONAL
+ BatchRetrievalTimeoutSeconds int64 `fidl_ordinal:"5"`
+ BatchRetrievalTimeoutSecondsPresent bool
+ // Parameters which configure a diagnostics stream's performance properties.
+ // NOTE: OPTIONAL
+ PerformanceConfiguration PerformanceConfiguration `fidl_ordinal:"6"`
+ PerformanceConfigurationPresent bool
+}
+
+func (u *StreamParameters) SetDataType(dataType DataType) {
+ u.DataType = dataType
+ u.DataTypePresent = true
+}
+
+func (u *StreamParameters) GetDataType() DataType {
+ return u.DataType
+}
+
+func (u *StreamParameters) GetDataTypeWithDefault(_default DataType) DataType {
+ if !u.HasDataType() {
+ return _default
+ }
+ return u.DataType
+}
+
+func (u *StreamParameters) HasDataType() bool {
+ return u.DataTypePresent
+}
+
+func (u *StreamParameters) ClearDataType() {
+ u.DataTypePresent = false
+}
+
+func (u *StreamParameters) SetStreamMode(streamMode StreamMode) {
+ u.StreamMode = streamMode
+ u.StreamModePresent = true
+}
+
+func (u *StreamParameters) GetStreamMode() StreamMode {
+ return u.StreamMode
+}
+
+func (u *StreamParameters) GetStreamModeWithDefault(_default StreamMode) StreamMode {
+ if !u.HasStreamMode() {
+ return _default
+ }
+ return u.StreamMode
+}
+
+func (u *StreamParameters) HasStreamMode() bool {
+ return u.StreamModePresent
+}
+
+func (u *StreamParameters) ClearStreamMode() {
+ u.StreamModePresent = false
+}
+
+func (u *StreamParameters) SetFormat(format Format) {
+ u.Format = format
+ u.FormatPresent = true
+}
+
+func (u *StreamParameters) GetFormat() Format {
+ return u.Format
+}
+
+func (u *StreamParameters) GetFormatWithDefault(_default Format) Format {
+ if !u.HasFormat() {
+ return _default
+ }
+ return u.Format
+}
+
+func (u *StreamParameters) HasFormat() bool {
+ return u.FormatPresent
+}
+
+func (u *StreamParameters) ClearFormat() {
+ u.FormatPresent = false
+}
+
+func (u *StreamParameters) SetClientSelectorConfiguration(clientSelectorConfiguration ClientSelectorConfiguration) {
+ u.ClientSelectorConfiguration = clientSelectorConfiguration
+ u.ClientSelectorConfigurationPresent = true
+}
+
+func (u *StreamParameters) GetClientSelectorConfiguration() ClientSelectorConfiguration {
+ return u.ClientSelectorConfiguration
+}
+
+func (u *StreamParameters) GetClientSelectorConfigurationWithDefault(_default ClientSelectorConfiguration) ClientSelectorConfiguration {
+ if !u.HasClientSelectorConfiguration() {
+ return _default
+ }
+ return u.ClientSelectorConfiguration
+}
+
+func (u *StreamParameters) HasClientSelectorConfiguration() bool {
+ return u.ClientSelectorConfigurationPresent
+}
+
+func (u *StreamParameters) ClearClientSelectorConfiguration() {
+ u.ClientSelectorConfigurationPresent = false
+}
+
+func (u *StreamParameters) SetBatchRetrievalTimeoutSeconds(batchRetrievalTimeoutSeconds int64) {
+ u.BatchRetrievalTimeoutSeconds = batchRetrievalTimeoutSeconds
+ u.BatchRetrievalTimeoutSecondsPresent = true
+}
+
+func (u *StreamParameters) GetBatchRetrievalTimeoutSeconds() int64 {
+ return u.BatchRetrievalTimeoutSeconds
+}
+
+func (u *StreamParameters) GetBatchRetrievalTimeoutSecondsWithDefault(_default int64) int64 {
+ if !u.HasBatchRetrievalTimeoutSeconds() {
+ return _default
+ }
+ return u.BatchRetrievalTimeoutSeconds
+}
+
+func (u *StreamParameters) HasBatchRetrievalTimeoutSeconds() bool {
+ return u.BatchRetrievalTimeoutSecondsPresent
+}
+
+func (u *StreamParameters) ClearBatchRetrievalTimeoutSeconds() {
+ u.BatchRetrievalTimeoutSecondsPresent = false
+}
+
+func (u *StreamParameters) SetPerformanceConfiguration(performanceConfiguration PerformanceConfiguration) {
+ u.PerformanceConfiguration = performanceConfiguration
+ u.PerformanceConfigurationPresent = true
+}
+
+func (u *StreamParameters) GetPerformanceConfiguration() PerformanceConfiguration {
+ return u.PerformanceConfiguration
+}
+
+func (u *StreamParameters) GetPerformanceConfigurationWithDefault(_default PerformanceConfiguration) PerformanceConfiguration {
+ if !u.HasPerformanceConfiguration() {
+ return _default
+ }
+ return u.PerformanceConfiguration
+}
+
+func (u *StreamParameters) HasPerformanceConfiguration() bool {
+ return u.PerformanceConfigurationPresent
+}
+
+func (u *StreamParameters) ClearPerformanceConfiguration() {
+ u.PerformanceConfigurationPresent = false
+}
+
+func (u *StreamParameters) HasUnknownData() bool {
+ return u.I_unknownData != nil
+}
+
+func (u *StreamParameters) GetUnknownData() map[uint64]_bindings.UnknownData {
+ return u.I_unknownData.(map[uint64]_bindings.UnknownData)
+}
+
+// Specifies a pattern of component relative monikers which
+// identify components being selected for.
+//
+// Component selectors support wildcarding, which will glob a single "level" of a
+// component moniker. eg:
+// core/*/echo
+// will match all echo instances running only in realms directly under core, but none
+// nested further.
+//
+// Component selectors also support a recursive wildcard, which will glob multiple
+// "levels" of a component moniker. eg:
+// core/**
+// will match all component instances running under core/ and all descendants of it.
+// Note that the wildcard does not select core itself. Clients that wish to choose a
+// subtree including the root should pass two selectors, eg:
+// core
+// core/**
+// The recursive wildcard is only allowed as the final segment of the selector.
+type ComponentSelector struct {
+ _ struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ I_unknownData interface{}
+ // Vector encoding the a pattern for monikers of components being selected for.
+ // These monikers are child-monikers relative to a "root" hierarchy that the archivist
+ // is aware of.
+ //
+ // There must be at least one StringSelector provided, which
+ // specifies the component names that are matched by
+ // the current selector.
+ MonikerSegments []StringSelector `fidl_bounds:"25" fidl_ordinal:"1"`
+ MonikerSegmentsPresent bool
+}
+
+func (u *ComponentSelector) SetMonikerSegments(monikerSegments []StringSelector) {
+ u.MonikerSegments = monikerSegments
+ u.MonikerSegmentsPresent = true
+}
+
+func (u *ComponentSelector) GetMonikerSegments() []StringSelector {
+ return u.MonikerSegments
+}
+
+func (u *ComponentSelector) GetMonikerSegmentsWithDefault(_default []StringSelector) []StringSelector {
+ if !u.HasMonikerSegments() {
+ return _default
+ }
+ return u.MonikerSegments
+}
+
+func (u *ComponentSelector) HasMonikerSegments() bool {
+ return u.MonikerSegmentsPresent
+}
+
+func (u *ComponentSelector) ClearMonikerSegments() {
+ u.MonikerSegmentsPresent = false
+}
+
+func (u *ComponentSelector) HasUnknownData() bool {
+ return u.I_unknownData != nil
+}
+
+func (u *ComponentSelector) GetUnknownData() map[uint64]_bindings.UnknownData {
+ return u.I_unknownData.(map[uint64]_bindings.UnknownData)
+}
+
+// Structured selector containing all required information for pattern-matching onto
+// string-named properties owned by nodes in a data hierarchy, where data hierarchies belong
+// to specific components.
+//
+// These selectors are represented in text form as three segments, colon delimited,
+// specifying:
+// <component_moniker>:<node_selector>:<property_selector>
+// Examples:
+// Property selection:
+// realm1/realm2/echo.cmx:root/active_users:user_count
+//
+// Subtree selection:
+// realm1/realm2/echo.cmx:root/active_users
+type Selector struct {
+ _ struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ I_unknownData interface{}
+ // The selector defining a pattern of component monikers to match
+ // against.
+ ComponentSelector ComponentSelector `fidl_ordinal:"1"`
+ ComponentSelectorPresent bool
+ // The selector defining data hierarchy properties to match against
+ // within the data hierarchies owned by components matched by
+ // `component_selector`.
+ TreeSelector TreeSelector `fidl_ordinal:"2"`
+ TreeSelectorPresent bool
+}
+
+func (u *Selector) SetComponentSelector(componentSelector ComponentSelector) {
+ u.ComponentSelector = componentSelector
+ u.ComponentSelectorPresent = true
+}
+
+func (u *Selector) GetComponentSelector() ComponentSelector {
+ return u.ComponentSelector
+}
+
+func (u *Selector) GetComponentSelectorWithDefault(_default ComponentSelector) ComponentSelector {
+ if !u.HasComponentSelector() {
+ return _default
+ }
+ return u.ComponentSelector
+}
+
+func (u *Selector) HasComponentSelector() bool {
+ return u.ComponentSelectorPresent
+}
+
+func (u *Selector) ClearComponentSelector() {
+ u.ComponentSelectorPresent = false
+}
+
+func (u *Selector) SetTreeSelector(treeSelector TreeSelector) {
+ u.TreeSelector = treeSelector
+ u.TreeSelectorPresent = true
+}
+
+func (u *Selector) GetTreeSelector() TreeSelector {
+ return u.TreeSelector
+}
+
+func (u *Selector) GetTreeSelectorWithDefault(_default TreeSelector) TreeSelector {
+ if !u.HasTreeSelector() {
+ return _default
+ }
+ return u.TreeSelector
+}
+
+func (u *Selector) HasTreeSelector() bool {
+ return u.TreeSelectorPresent
+}
+
+func (u *Selector) ClearTreeSelector() {
+ u.TreeSelectorPresent = false
+}
+
+func (u *Selector) HasUnknownData() bool {
+ return u.I_unknownData != nil
+}
+
+func (u *Selector) GetUnknownData() map[uint64]_bindings.UnknownData {
+ return u.I_unknownData.(map[uint64]_bindings.UnknownData)
+}
+
+const (
+ ArchiveAccessorStreamDiagnosticsOrdinal uint64 = 0x20c73e2ecd653c3e
+)
+
+type ArchiveAccessorWithCtxInterface _bindings.ChannelProxy
+
+// Creates an iterator over diagnostics data on the system.
+// * The iterator may be finite by streaming in SNAPSHOT mode, serving only the
+// current state of diagnostics data on the system.
+// * The iterator may be infinite by streaming in either SNAPSHOT_THEN_SUBSCRIBE
+// or SUBSCRIBE mode; the prior first provides iteration over the current state of
+// the sytem, and then both provide ongoing iteration over newly arriving diagnostics
+// data.
+//
+// + request `result stream` a [fuchsia.diagnostics/BatchIterator] that diagnostic
+// records are exposed to the client over.
+// * epitaphs:
+// - INVALID_ARGS: A required argument in the StreamParameters struct was missing.
+// - WRONG_TYPE: A selector provided by the StreamParameters struct was incorrectly
+// formatted.
+//
+// + request `stream_parameters` is a [fuchsia.diagnostics/StreamParameter] which
+// specifies how to configure the stream.
+func (p *ArchiveAccessorWithCtxInterface) StreamDiagnostics(ctx_ _bindings.Context, streamParameters StreamParameters, resultStream BatchIteratorWithCtxInterfaceRequest) error {
+ req_ := &archiveAccessorWithCtxStreamDiagnosticsRequest{
+ StreamParameters: streamParameters,
+ ResultStream: resultStream,
+ }
+ err_ := ((*_bindings.ChannelProxy)(p)).Send(ArchiveAccessorStreamDiagnosticsOrdinal, req_)
+ return err_
+}
+
+// Outer protocol for interacting with the different diagnostics data sources.
+type ArchiveAccessorWithCtx interface {
+ // Creates an iterator over diagnostics data on the system.
+ // * The iterator may be finite by streaming in SNAPSHOT mode, serving only the
+ // current state of diagnostics data on the system.
+ // * The iterator may be infinite by streaming in either SNAPSHOT_THEN_SUBSCRIBE
+ // or SUBSCRIBE mode; the prior first provides iteration over the current state of
+ // the sytem, and then both provide ongoing iteration over newly arriving diagnostics
+ // data.
+ //
+ // + request `result stream` a [fuchsia.diagnostics/BatchIterator] that diagnostic
+ // records are exposed to the client over.
+ // * epitaphs:
+ // - INVALID_ARGS: A required argument in the StreamParameters struct was missing.
+ // - WRONG_TYPE: A selector provided by the StreamParameters struct was incorrectly
+ // formatted.
+ //
+ // + request `stream_parameters` is a [fuchsia.diagnostics/StreamParameter] which
+ // specifies how to configure the stream.
+ StreamDiagnostics(ctx_ _bindings.Context, streamParameters StreamParameters, resultStream BatchIteratorWithCtxInterfaceRequest) error
+}
+
+type ArchiveAccessorWithCtxTransitionalBase struct{}
+
+type ArchiveAccessorWithCtxInterfaceRequest _bindings.InterfaceRequest
+
+func NewArchiveAccessorWithCtxInterfaceRequest() (ArchiveAccessorWithCtxInterfaceRequest, *ArchiveAccessorWithCtxInterface, error) {
+ req, cli, err := _bindings.NewInterfaceRequest()
+ return ArchiveAccessorWithCtxInterfaceRequest(req), (*ArchiveAccessorWithCtxInterface)(cli), err
+}
+
+// Implements ServiceRequest.
+func (_ ArchiveAccessorWithCtxInterfaceRequest) Name() string {
+ return "fuchsia.diagnostics.ArchiveAccessor"
+}
+func (c ArchiveAccessorWithCtxInterfaceRequest) ToChannel() _zx.Channel {
+ return c.Channel
+}
+
+const ArchiveAccessorName = "fuchsia.diagnostics.ArchiveAccessor"
+
+type ArchiveAccessorWithCtxStub struct {
+ Impl ArchiveAccessorWithCtx
+}
+
+func (s_ *ArchiveAccessorWithCtxStub) Dispatch(args_ _bindings.DispatchArgs) (_bindings.Message, bool, error) {
+ switch args_.Ordinal {
+ case ArchiveAccessorStreamDiagnosticsOrdinal:
+ in_ := archiveAccessorWithCtxStreamDiagnosticsRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ err_ := s_.Impl.StreamDiagnostics(args_.Ctx, in_.StreamParameters, in_.ResultStream)
+ return nil, false, err_
+ }
+ return nil, false, _bindings.ErrUnknownOrdinal
+}
+
+type ArchiveAccessorEventProxy _bindings.ChannelProxy
+
+const (
+ BatchIteratorGetNextOrdinal uint64 = 0x781986486c6254a5
+)
+
+type BatchIteratorWithCtxInterface _bindings.ChannelProxy
+
+// Returns a vector of [fuchsia.diagnostics/FormattedContent] structs
+// with a format dictated by the format_settings argument provided to the Reader protocol
+// which spawned this BatchIterator.
+//
+// An empty vector implies that the data hierarchy has been fully iterated, and subsequent
+// GetNext calls will always return the empty vector.
+//
+// When the BatchIterator is serving results via subscription model, calls to GetNext will
+// hang until there is new data available, it will not return an empty vector.
+//
+// - returns a vector of FormattedContent structs. Clients connected to a
+// Batch are expected to call GetNext() until an empty vector
+// is returned, denoting that the entire data hierarchy has been read.
+//
+// * error a [fuchsia.diagnostics/ReaderError]
+// value indicating that there was an issue reading the underlying data hierarchies
+// or formatting those hierarchies to populate the `batch`. Note, these
+// issues do not include a single component's data hierarchy failing to be read.
+// The iterator is tolerant of individual component data sources failing to be read,
+// whether that failure is a timeout or a malformed binary file.
+// In the event that a GetNext call fails, that subset of the data hierarchy results is
+// dropped, but future calls to GetNext will provide new subsets of
+// FormattedDataHierarchies.
+func (p *BatchIteratorWithCtxInterface) GetNext(ctx_ _bindings.Context) (BatchIteratorGetNextResult, error) {
+ var req_ _bindings.Message
+ resp_ := &batchIteratorWithCtxGetNextResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BatchIteratorGetNextOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Conceptually, a directory iterator, where each element in the iterator is a single
+// complete file that can be concatenated with other results.
+type BatchIteratorWithCtx interface {
+ // Returns a vector of [fuchsia.diagnostics/FormattedContent] structs
+ // with a format dictated by the format_settings argument provided to the Reader protocol
+ // which spawned this BatchIterator.
+ //
+ // An empty vector implies that the data hierarchy has been fully iterated, and subsequent
+ // GetNext calls will always return the empty vector.
+ //
+ // When the BatchIterator is serving results via subscription model, calls to GetNext will
+ // hang until there is new data available, it will not return an empty vector.
+ //
+ // - returns a vector of FormattedContent structs. Clients connected to a
+ // Batch are expected to call GetNext() until an empty vector
+ // is returned, denoting that the entire data hierarchy has been read.
+ //
+ // * error a [fuchsia.diagnostics/ReaderError]
+ // value indicating that there was an issue reading the underlying data hierarchies
+ // or formatting those hierarchies to populate the `batch`. Note, these
+ // issues do not include a single component's data hierarchy failing to be read.
+ // The iterator is tolerant of individual component data sources failing to be read,
+ // whether that failure is a timeout or a malformed binary file.
+ // In the event that a GetNext call fails, that subset of the data hierarchy results is
+ // dropped, but future calls to GetNext will provide new subsets of
+ // FormattedDataHierarchies.
+ GetNext(ctx_ _bindings.Context) (BatchIteratorGetNextResult, error)
+}
+
+type BatchIteratorWithCtxTransitionalBase struct{}
+
+type BatchIteratorWithCtxInterfaceRequest _bindings.InterfaceRequest
+
+func NewBatchIteratorWithCtxInterfaceRequest() (BatchIteratorWithCtxInterfaceRequest, *BatchIteratorWithCtxInterface, error) {
+ req, cli, err := _bindings.NewInterfaceRequest()
+ return BatchIteratorWithCtxInterfaceRequest(req), (*BatchIteratorWithCtxInterface)(cli), err
+}
+
+type BatchIteratorWithCtxStub struct {
+ Impl BatchIteratorWithCtx
+}
+
+func (s_ *BatchIteratorWithCtxStub) Dispatch(args_ _bindings.DispatchArgs) (_bindings.Message, bool, error) {
+ switch args_.Ordinal {
+ case BatchIteratorGetNextOrdinal:
+ result, err_ := s_.Impl.GetNext(args_.Ctx)
+ out_ := batchIteratorWithCtxGetNextResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ }
+ return nil, false, _bindings.ErrUnknownOrdinal
+}
+
+type BatchIteratorEventProxy _bindings.ChannelProxy
diff --git a/src/syscall/zx/fdio/client.go b/src/syscall/zx/fdio/client.go
new file mode 100644
index 0000000..d682ea0
--- /dev/null
+++ b/src/syscall/zx/fdio/client.go
@@ -0,0 +1,41 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Go's distribution tools attempt to compile everything; this file
+// depends on types that don't compile in not-Fuchsia.
+// +build fuchsia
+
+package fdio
+
+import (
+ "syscall/zx"
+ "syscall/zx/fidl"
+ "syscall/zx/internal/context"
+ "syscall/zx/io"
+)
+
+func ServiceConnect(svcpath string, h zx.Handle) error {
+ // Otherwise attempt to connect through the root namespace.
+ ns, err := NewNSFromMap(zx.RootNSMap)
+ if err == nil {
+ return ns.Connect(svcpath, h)
+ }
+ h.Close()
+ return &zx.Error{Status: zx.ErrNotFound, Text: "fdio.ServiceConnect"}
+}
+
+func ServiceConnectAt(dir zx.Handle, path string, h zx.Handle) error {
+ if !dir.IsValid() || !h.IsValid() {
+ return &zx.Error{Status: zx.ErrInvalidArgs, Text: "fdio.ServiceConnectAt"}
+ }
+ // Open the path on the remote.
+ iface := (*io.DirectoryWithCtxInterface)(&fidl.ChannelProxy{Channel: zx.Channel(dir)})
+ req := io.NodeWithCtxInterfaceRequest(fidl.InterfaceRequest{Channel: zx.Channel(h)})
+ err := iface.Open(context.Background(), io.OpenRightReadable|io.OpenRightWritable, 0755, path, req)
+ if err != nil {
+ h.Close()
+ return err
+ }
+ return nil
+}
diff --git a/src/syscall/zx/fdio/directory.go b/src/syscall/zx/fdio/directory.go
new file mode 100644
index 0000000..a972464
--- /dev/null
+++ b/src/syscall/zx/fdio/directory.go
@@ -0,0 +1,197 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Go's distribution tools attempt to compile everything; this file
+// depends on types that don't compile in not-Fuchsia.
+// +build fuchsia
+
+package fdio
+
+import (
+ "syscall/zx"
+ "syscall/zx/fidl"
+ "syscall/zx/internal/context"
+ "syscall/zx/io"
+ "syscall/zx/io2"
+)
+
+var _ FDIO = (*Directory)(nil)
+
+// Directory is a wrapper around a Node which implements FDIO.
+type Directory struct {
+ Node
+}
+
+func NewDirectoryWithCtx(proxy *io.DirectoryAdminWithCtxInterface) *Directory {
+ return &Directory{Node: Node{NodeWithCtxInterface: (*io.NodeWithCtxInterface)(proxy)}}
+}
+
+func (d *Directory) getToken() (zx.Handle, error) {
+ status, token, err := d.directoryInterface().GetToken(context.Background())
+ if err := zxStatusToError(status, err, "io.directory.getToken"); err != nil {
+ return zx.HandleInvalid, err
+ }
+ return token, nil
+}
+
+// directoryInterface returns the underlying DirectoryAdmin FIDL client proxy.
+func (d *Directory) directoryInterface() *io.DirectoryAdminWithCtxInterface {
+ return (*io.DirectoryAdminWithCtxInterface)(d.Node.NodeWithCtxInterface)
+}
+
+func (d *Directory) Unmount() (int32, error) {
+ return d.directoryInterface().Unmount(context.Background())
+}
+
+// Close closes the Directory object.
+func (d *Directory) Close() error {
+ return d.Node.Close()
+}
+
+// Open opens an FDIO at path with the given flags and mode relative to this
+// Directory.
+func (d *Directory) Open(pathname string, flags uint32, mode uint32) (FDIO, error) {
+ req, obj, err := io.NewNodeWithCtxInterfaceRequest()
+ if err != nil {
+ return nil, err
+ }
+ fdio, err := func() (FDIO, error) {
+ if err := d.directoryInterface().Open(context.Background(), flags|io.OpenFlagDescribe, mode, pathname, req); err != nil {
+ return nil, err
+ }
+ status, info, err := obj.ExpectOnOpen(context.Background())
+ if err := zxStatusToError(status, err, "io.directory.Open"); err != nil {
+ return nil, err
+ }
+ return nodeFromInfo(info, obj)
+ }()
+ if err != nil {
+ return nil, newMultiError(((*fidl.ChannelProxy)(obj)).Close(), "closeErr", err, "innerErr")
+ }
+ return fdio, err
+}
+
+func (d *Directory) openParent(pathname string) (FDIO, string, error) {
+ dirpath, name := pathSplit(pathname)
+ parent, err := d.Open(
+ pathDir(dirpath),
+ io.OpenRightReadable|io.OpenFlagDirectory|io.OpenFlagPosix,
+ S_IFDIR)
+ if err != nil {
+ return nil, "", err
+ }
+ return parent, name, err
+}
+
+// Link creates a link between two paths under this Directory.
+func (d *Directory) Link(oldpath, newpath string) error {
+ oldparent, oldname, err := d.openParent(oldpath)
+ if err != nil {
+ return err
+ }
+ err = func() error {
+ olddir, ok := oldparent.(*Directory)
+ if !ok {
+ return &zx.Error{Status: zx.ErrNotSupported, Text: "io.directory.Link"}
+ }
+ newparent, newname, err := d.openParent(newpath)
+ if err != nil {
+ return err
+ }
+ err = func() error {
+ newdir, ok := newparent.(*Directory)
+ if !ok {
+ return &zx.Error{Status: zx.ErrNotSupported, Text: "io.directory.Link"}
+ }
+ token, err := newdir.getToken()
+ if err != nil {
+ return err
+ }
+ status, err := olddir.directoryInterface().Link(context.Background(), oldname, token, newname)
+ return zxStatusToError(status, err, "io.directory.Link")
+ }()
+ return newMultiError(newparent.Close(), "newCloseErr", err, "innerErr")
+ }()
+ return newMultiError(oldparent.Close(), "oldCloseErr", err, "innerErr")
+}
+
+// Rename renames an object at one path to another under this Directory.
+func (d *Directory) Rename(oldpath, newpath string) error {
+ oldf, oldname, err := d.openParent(oldpath)
+ if err != nil {
+ return err
+ }
+ err = func() error {
+ olddir, ok := oldf.(*Directory)
+ if !ok {
+ return &zx.Error{Status: zx.ErrNotSupported, Text: "io.directory.Rename"}
+ }
+ newf, newname, err := d.openParent(newpath)
+ if err != nil {
+ return err
+ }
+ err = func() error {
+ newdir, ok := newf.(*Directory)
+ if !ok {
+ return &zx.Error{Status: zx.ErrNotSupported, Text: "io.directory.Rename"}
+ }
+ token, err := newdir.getToken()
+ if err != nil {
+ return err
+ }
+ status, err := olddir.directoryInterface().Rename2(
+ context.Background(), oldname, zx.Event(token), newname)
+ if err != nil {
+ return err
+ } else if status.Which() == io.DirectoryRename2ResultErr {
+ return zxStatusToError(status.Err, nil, "io.directory.Rename")
+ }
+ return nil
+ }()
+ return newMultiError(newf.Close(), "newCloseErr", err, "innerErr")
+ }()
+ return newMultiError(oldf.Close(), "oldCloseErr", err, "innerErr")
+}
+
+// Unlink unlinks an object at a path under this Directory.
+func (d *Directory) Unlink(pathname string) error {
+ parent, name, err := d.openParent(pathname)
+ if err != nil {
+ return err
+ }
+ err = func() error {
+ parentdir, ok := parent.(*Directory)
+ if !ok {
+ return &zx.Error{Status: zx.ErrNotSupported, Text: "io.directory.Unlink"}
+ }
+ status, err := parentdir.directoryInterface().Unlink2(context.Background(), name, io2.UnlinkOptions{})
+ return zxStatusToError(status.Err, err, "io.directory.Unlink")
+ }()
+ return newMultiError(parent.Close(), "closeErr", err, "innerErr")
+}
+
+// ReadDirents returns up to max-worth bytes of byte-encoded dirents which represent
+// objects under this Directory. Repeated calls to ReadDirents continues giving back
+// objects.
+func (d *Directory) ReadDirents(max uint64) ([]byte, error) {
+ status, dirents, err := d.directoryInterface().ReadDirents(context.Background(), max)
+ if err := zxStatusToError(status, err, "io.file.ReadDirents"); err != nil {
+ return nil, err
+ }
+ return dirents, nil
+}
+
+// Rewind resets the ReadDirents' counter.
+func (d *Directory) Rewind() error {
+ status, err := d.directoryInterface().Rewind(context.Background())
+ return zxStatusToError(status, err, "io.directory.Rewind")
+}
+
+// Seek implements FDIO for Directory.
+func (d *Directory) Seek(offset int64, whence int) (int64, error) {
+ if offset == 0 && io.SeekOrigin(whence) == io.SeekOriginStart {
+ return 0, d.Rewind()
+ }
+ return 0, &zx.Error{Status: zx.ErrNotSupported, Text: "io.Directory.Seek"}
+}
diff --git a/src/syscall/zx/fdio/fdio.go b/src/syscall/zx/fdio/fdio.go
new file mode 100644
index 0000000..58c2868
--- /dev/null
+++ b/src/syscall/zx/fdio/fdio.go
@@ -0,0 +1,81 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Package fdio provides unix-style IO, implementing Zircon's "system/ulib/fdio"
+package fdio
+
+import (
+ "syscall/zx"
+ "syscall/zx/io"
+)
+
+// FDIO provides classic unix-style IO over various transports
+type FDIO interface {
+ Handles() []zx.Handle
+
+ Clone() (FDIO, error)
+ Close() error
+
+ Sync() error
+ GetAttr() (io.NodeAttributes, error)
+ SetAttr(flags uint32, attr io.NodeAttributes) error
+
+ Read(data []byte) (int, error)
+ ReadAt(data []byte, off int64) (int, error)
+ Write(data []byte) (int, error)
+ WriteAt(data []byte, off int64) (int, error)
+ Seek(offset int64, whence int) (int64, error)
+ Truncate(length uint64) error
+
+ Open(path string, flags uint32, mode uint32) (FDIO, error)
+ Link(oldpath, newpath string) error
+ Rename(oldpath, newpath string) error
+ Unlink(path string) error
+ ReadDirents(max uint64) ([]byte, error)
+ Rewind() error
+}
+
+type Vtype uint32
+
+// bit-compatible with POSIX stat
+const (
+ VtypeMask Vtype = 0170000
+ VtypeSock Vtype = 0140000
+ VtypeLink Vtype = 0120000
+ VtypeFile Vtype = 0100000
+ VtypeBdev Vtype = 0060000
+ VtypeDir Vtype = 0040000
+ VtypeCdev Vtype = 0020000
+ VtypePipe Vtype = 0010000
+
+ VtypeISUID Vtype = 0004000
+ VtypeISGID Vtype = 0002000
+ VtypeISVTX Vtype = 0001000
+ VtypeIRWXU Vtype = 0000700
+ VtypeIRUSR Vtype = 0000400
+ VtypeIWUSR Vtype = 0000200
+ VtypeIXUSR Vtype = 0000100
+ VtypeIRWXG Vtype = 0000070
+ VtypeIRGRP Vtype = 0000040
+ VtypeIWGRP Vtype = 0000020
+ VtypeIXGRP Vtype = 0000010
+ VtypeIRWXO Vtype = 0000007
+ VtypeIROTH Vtype = 0000004
+ VtypeIWOTH Vtype = 0000002
+ VtypeIXOTH Vtype = 0000001
+)
+
+const (
+ HandleTypeFileDescriptor = 0x30
+ HandleTypeRemote = 0x32
+ HandleTypeLogger = 0x35
+ HandleTypeSocket = 0x36
+)
+
+const (
+ S_IFMT = 0000170000
+ S_IFDIR = 0000040000
+ S_IFREG = 0000100000
+ S_IFIFO = 0000010000
+)
diff --git a/src/syscall/zx/fdio/file.go b/src/syscall/zx/fdio/file.go
new file mode 100644
index 0000000..604f81f
--- /dev/null
+++ b/src/syscall/zx/fdio/file.go
@@ -0,0 +1,156 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Go's distribution tools attempt to compile everything; this file
+// depends on types that don't compile in not-Fuchsia.
+// +build fuchsia
+
+package fdio
+
+import (
+ "syscall/zx"
+ "syscall/zx/internal/context"
+ "syscall/zx/io"
+ "syscall/zx/mem"
+)
+
+var _ FDIO = (*File)(nil)
+
+// File is a wrapper around a Node which implements FDIO.
+type File struct {
+ Node
+ Event zx.Event
+}
+
+func NewFileWithCtx(proxy *io.FileWithCtxInterface, event zx.Event) *File {
+ return &File{Node: Node{NodeWithCtxInterface: (*io.NodeWithCtxInterface)(proxy)}, Event: event}
+}
+
+// fileInterface returns the underlying File FIDL client proxy.
+func (f *File) fileInterface() *io.FileWithCtxInterface {
+ return (*io.FileWithCtxInterface)(f.Node.NodeWithCtxInterface)
+}
+
+func (f *File) GetBuffer(flags uint32) (int32, *mem.Buffer, error) {
+ return f.fileInterface().GetBuffer(context.Background(), flags)
+}
+
+// Handles returns all the underlying handles for this file,
+// which is the control channel and an event.
+func (f *File) Handles() []zx.Handle {
+ return append(f.Node.Handles(), zx.Handle(f.Event))
+}
+
+// Close closes all the control channel and event associated with the file
+// object.
+func (f *File) Close() error {
+ return newMultiError(f.Node.Close(), "nodeCloseErr", f.Event.Close(), "eventCloseErr")
+}
+
+// read reads data from a File. If off == -1 then it does a read
+// from whatever the seek offset is.
+func (f *File) read(data []byte, off int64) (int, error) {
+ n := 0
+ for n < len(data) {
+ bytesToRead := int(io.MaxBuf)
+ if len(data)-n < int(io.MaxBuf) {
+ bytesToRead = len(data) - n
+ }
+ var status int32
+ var out []byte
+ var err error
+ if off == -1 {
+ status, out, err = f.fileInterface().Read(context.Background(), uint64(bytesToRead))
+ } else {
+ status, out, err = f.fileInterface().ReadAt(
+ context.Background(),
+ uint64(bytesToRead),
+ uint64(int64(n)+off),
+ )
+ }
+ if err := zxStatusToError(status, err, ""); err != nil {
+ return n, err
+ }
+ if len(out) == 0 {
+ return n, nil
+ }
+ n += copy(data[n:], out)
+ // Stop at short read.
+ if len(out) < bytesToRead {
+ return n, nil
+ }
+ }
+ return n, nil
+}
+
+// Read reads data from the internally held offset in the File.
+func (f *File) Read(data []byte) (int, error) {
+ return f.read(data, -1)
+}
+
+// ReadAt reads data at an offset in a File.
+func (f *File) ReadAt(data []byte, off int64) (int, error) {
+ return f.read(data, off)
+}
+
+// write writes data to a file. If off == -1 then the write occurs at
+// whatever the seek offset is.
+func (f *File) write(data []byte, off int64) (int, error) {
+ n := 0
+ for n < len(data) {
+ bytesToWrite := int(io.MaxBuf)
+ if len(data)-n < int(io.MaxBuf) {
+ bytesToWrite = len(data) - n
+ }
+ var status int32
+ var written uint64
+ var err error
+ if off == -1 {
+ status, written, err = f.fileInterface().Write(
+ context.Background(),
+ data[n:][:bytesToWrite],
+ )
+ } else {
+ status, written, err = f.fileInterface().WriteAt(
+ context.Background(),
+ data[n:][:bytesToWrite],
+ uint64(int64(n)+off),
+ )
+ }
+ if err := zxStatusToError(status, err, ""); err != nil {
+ return n, err
+ }
+ n += int(written)
+ // Error on a short write.
+ if int(written) < bytesToWrite {
+ return n, &zx.Error{Status: zx.ErrIO, Text: "io.file"}
+ }
+ }
+ return n, nil
+}
+
+// Write writes data at the internally held offset in the File.
+func (f *File) Write(data []byte) (int, error) {
+ return f.write(data, -1)
+}
+
+// WriteAt writes data at an offset in a File.
+func (f *File) WriteAt(data []byte, off int64) (int, error) {
+ return f.write(data, off)
+}
+
+// Seek moves the read/write head offset of the File.
+func (f *File) Seek(offset int64, whence int) (int64, error) {
+ status, off, err := f.fileInterface().Seek(context.Background(), offset, io.SeekOrigin(whence))
+ if err := zxStatusToError(status, err, "io.file.Seek"); err != nil {
+ return -1, err
+ }
+ return int64(off), nil
+}
+
+// Truncate truncates a File.
+func (f *File) Truncate(length uint64) error {
+ status, err := f.fileInterface().Truncate(context.Background(), length)
+ return zxStatusToError(status, err, "io.file.Truncate")
+}
diff --git a/src/syscall/zx/fdio/logger.go b/src/syscall/zx/fdio/logger.go
new file mode 100644
index 0000000..0901278
--- /dev/null
+++ b/src/syscall/zx/fdio/logger.go
@@ -0,0 +1,153 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Go's distribution tools attempt to compile everything; this file
+// depends on types that don't compile in not-Fuchsia.
+// +build fuchsia
+
+package fdio
+
+import (
+ "syscall/zx"
+ "syscall/zx/io"
+)
+
+// #define LOGBUF_MAX (ZX_LOG_RECORD_MAX - sizeof(zx_log_record_t))
+const logBufMax = 224
+
+type Logger struct {
+ log zx.Log
+ logBufferArray [logBufMax]byte
+ logBufferN int
+}
+
+func NewLogger(log zx.Log) *Logger {
+ return &Logger{log: log}
+}
+
+// Clone makes a clone of the object.
+func (f *Logger) Clone() (FDIO, error) {
+ logHandle := zx.Handle(f.log)
+ h, err := logHandle.Duplicate(zx.RightSameRights)
+ if err != nil {
+ return nil, err
+ }
+ return NewLogger(zx.Log(h)), nil
+}
+
+// Handle returns the underlying log handle as an untyped handle.
+func (f *Logger) Handles() []zx.Handle {
+ return []zx.Handle{zx.Handle(f.log)}
+}
+
+// Close closes the object.
+func (f *Logger) Close() error {
+ return f.log.Close()
+}
+
+// Sync implements FDIO for Logger.
+func (f *Logger) Sync() error {
+ return &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.logger"}
+}
+
+// GetAttr implements FDIO for Logger.
+func (f *Logger) GetAttr() (io.NodeAttributes, error) {
+ return io.NodeAttributes{}, &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.logger"}
+}
+
+// SetAttr implements FDIO for Logger.
+func (f *Logger) SetAttr(flags uint32, attr io.NodeAttributes) error {
+ return &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.logger"}
+}
+
+// Read implements FDIO for Logger.
+func (f *Logger) Read(data []byte) (int, error) {
+ return 0, &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.logger"}
+}
+
+// ReadAt implements FDIO for Logger.
+func (f *Logger) ReadAt(data []byte, off int64) (int, error) {
+ return 0, &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.logger"}
+}
+
+// Write implements FDIO for Logger.
+func (f *Logger) Write(data []byte) (int, error) {
+ written := 0
+
+ for i := 0; i < len(data); i++ {
+ c := data[i]
+ written++
+
+ if c == '\n' {
+ _, err := f.log.Write(f.logBufferArray[:f.logBufferN])
+ f.logBufferN = 0
+ if err != nil {
+ return written, err
+ }
+ continue
+ }
+
+ if c < ' ' {
+ continue
+ }
+
+ f.logBufferArray[f.logBufferN] = c
+ f.logBufferN++
+
+ if f.logBufferN == len(f.logBufferArray) {
+ _, err := f.log.Write(f.logBufferArray[:f.logBufferN])
+ f.logBufferN = 0
+ if err != nil {
+ return written, err
+ }
+ }
+ }
+
+ return written, nil
+}
+
+// WriteAt implements FDIO for Logger.
+func (f *Logger) WriteAt(data []byte, off int64) (int, error) {
+ return 0, &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.logger"}
+}
+
+// Seek implements FDIO for Logger.
+func (f *Logger) Seek(offset int64, whence int) (int64, error) {
+ return 0, &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.logger"}
+}
+
+// Truncate implements FDIO for Logger.
+func (f *Logger) Truncate(length uint64) error {
+ return &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.logger"}
+}
+
+// Open implements FDIO for Logger.
+func (f *Logger) Open(path string, flags uint32, mode uint32) (FDIO, error) {
+ return nil, &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.logger"}
+}
+
+// Link implements FDIO for Logger.
+func (f *Logger) Link(oldpath, newpath string) error {
+ return &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.logger"}
+}
+
+// Rename implements FDIO for Logger.
+func (f *Logger) Rename(oldpath, newpath string) error {
+ return &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.logger"}
+}
+
+// Unlink implements FDIO for Logger.
+func (f *Logger) Unlink(path string) error {
+ return &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.logger"}
+}
+
+// ReadDirents implements FDIO for Logger.
+func (f *Logger) ReadDirents(max uint64) ([]byte, error) {
+ return nil, &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.logger"}
+}
+
+// Rewind implements FDIO for Logger.
+func (f *Logger) Rewind() error {
+ return &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.logger"}
+}
diff --git a/src/syscall/zx/fdio/namespace.go b/src/syscall/zx/fdio/namespace.go
new file mode 100644
index 0000000..c1a490c
--- /dev/null
+++ b/src/syscall/zx/fdio/namespace.go
@@ -0,0 +1,390 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Go's distribution tools attempt to compile everything; this file
+// depends on types that don't compile in not-Fuchsia.
+// +build fuchsia
+
+package fdio
+
+import (
+ "sync"
+ "syscall/zx"
+ "syscall/zx/internal/context"
+ "syscall/zx/io"
+ "syscall/zx/io2"
+)
+
+type NS struct {
+ mu sync.Mutex
+ m map[string]zx.Handle
+}
+
+func NewNS() *NS {
+ return &NS{m: make(map[string]zx.Handle)}
+}
+
+func NewNSFromMap(m map[string]zx.Handle) (*NS, error) {
+ if m == nil {
+ return nil, &zx.Error{Status: zx.ErrInvalidArgs, Text: "namespace.NewFromNSMAP"}
+ }
+ ns := &NS{m: make(map[string]zx.Handle)}
+ for k, v := range m {
+ ns.m[k] = v
+ }
+ return ns, nil
+}
+
+func (ns *NS) Bind(p string, h zx.Handle) {
+ ns.mu.Lock()
+ ns.m[p] = h
+ ns.mu.Unlock()
+}
+
+func (ns *NS) Connect(p string, h zx.Handle) error {
+ if p[0] != '/' {
+ h.Close()
+ return &zx.Error{Status: zx.ErrNotFound, Text: "namespace.Connect"}
+ }
+ node := p
+ for {
+ ns.mu.Lock()
+ svcHandle := ns.m[node]
+ ns.mu.Unlock()
+ if svcHandle.IsValid() {
+ rest := trimPrefix(p, node)
+ rest = trimPrefix(rest, "/")
+ return ServiceConnectAt(svcHandle, rest, h)
+ }
+ if node == "/" {
+ break
+ }
+ node = pathDir(node)
+ }
+ h.Close()
+ return &zx.Error{Status: zx.ErrNotFound, Text: "namespace.Connect"}
+}
+
+func (ns *NS) OpenRoot() (FDIO, error) {
+ root := &vnode{}
+ ns.mu.Lock()
+ defer ns.mu.Unlock()
+ for path, h := range ns.m {
+ if path == "" || path[0] != '/' {
+ return nil, &zx.Error{Status: zx.ErrBadPath, Text: "fdio.OpenRoot"}
+ }
+ vn := root
+ path = path[1:]
+ for path != "" {
+ name, remaining := pathSplitForward(path)
+ vn = vn.getOrAddChild(name)
+ path = remaining
+ }
+ if vn.remote.IsValid() {
+ return nil, &zx.Error{Status: zx.ErrAlreadyExists, Text: "fdio.OpenRoot"}
+ }
+ vn.remote = Directory{Node: Node{NodeWithCtxInterface: &io.NodeWithCtxInterface{Channel: zx.Channel(h)}}}
+ }
+ return &dir{root}, nil
+}
+
+// vnode is a virtual node in the namespace "filesystem".
+type vnode struct {
+ child *vnode
+ parent *vnode
+ next *vnode
+ remote Directory
+ name string
+}
+
+func (vn *vnode) getOrAddChild(name string) *vnode {
+ child := vn.getChild(name)
+ if child == nil {
+ child = &vnode{
+ parent: vn,
+ next: vn.child,
+ name: name,
+ }
+ vn.child = child
+ }
+ return child
+}
+
+func (vn *vnode) getChild(name string) *vnode {
+ for vn = vn.child; vn != nil; vn = vn.next {
+ if vn.name == name {
+ return vn
+ }
+ }
+ return nil
+}
+
+// dir represents a directory in the namespace.
+type dir struct {
+ vn *vnode
+}
+
+// Handle returns the underlying handle as an untyped handle.
+func (d *dir) Handles() []zx.Handle {
+ return d.vn.remote.Handles()
+}
+
+// Clone makes a clone of the dir, if possible.
+func (d *dir) Clone() (FDIO, error) {
+ if !d.vn.remote.IsValid() {
+ return nil, &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.ns.dir"}
+ }
+ return d.vn.remote.Clone()
+}
+
+// Close closes the dir.
+func (d *dir) Close() error {
+ if !d.vn.remote.IsValid() {
+ return nil
+ }
+ return d.vn.remote.Close()
+}
+
+// Sync implements FDIO for dir.
+func (d *dir) Sync() error {
+ return &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.ns.dir"}
+}
+
+// GetAttr implements FDIO for dir.
+func (d *dir) GetAttr() (io.NodeAttributes, error) {
+ return io.NodeAttributes{
+ Mode: uint32(io.ModeTypeDirectory) | uint32(VtypeIRUSR),
+ Id: 1,
+ LinkCount: 1,
+ }, nil
+}
+
+// SetAttr implements FDIO for dir.
+func (d *dir) SetAttr(flags uint32, attr io.NodeAttributes) error {
+ return &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.ns.dir"}
+}
+
+func (d *dir) Read(data []byte) (int, error) {
+ return 0, &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.dir"}
+}
+
+func (d *dir) ReadAt(data []byte, off int64) (int, error) {
+ return 0, &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.dir"}
+}
+
+func (d *dir) Write(data []byte) (n int, err error) {
+ return 0, &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.dir"}
+}
+
+func (d *dir) WriteAt(data []byte, off int64) (int, error) {
+ return 0, &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.dir"}
+}
+
+func (d *dir) Seek(offset int64, whence int) (int64, error) {
+ if remote := d.vn.remote; remote.IsValid() {
+ return remote.Seek(offset, whence)
+ }
+ if offset == 0 && whence == 0 {
+ return 0, nil
+ }
+ return 0, &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.dir"}
+}
+
+// Truncate implements FDIO for dir.
+func (d *dir) Truncate(length uint64) error {
+ return &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.ns.dir"}
+}
+
+func (d *dir) getVnode(path string) (vn *vnode, rpath string, isRemote bool, err error) {
+ vn = d.vn
+
+ if path == "." || path == "" {
+ if vn.remote.IsValid() {
+ return vn, ".", true, nil
+ }
+ return vn, "", false, nil
+ }
+
+ originalPath := path
+
+ var savedVn *vnode
+ var savedPath string
+
+ for {
+ name, remaining := pathSplitForward(path)
+
+ if name == "" {
+ return nil, "", false, &zx.Error{Status: zx.ErrBadPath, Text: path}
+ }
+
+ child := vn.getChild(name)
+
+ if child != nil {
+ if remaining == "" {
+ // We've resolved all the path segments and found the vnode we're
+ // looking for.
+ if child.remote.IsValid() {
+ return child, ".", true, nil
+ } else {
+ return child, "", false, nil
+ }
+ } else {
+ // We've got more path to resolve.
+ vn = child
+ path = remaining
+
+ // If this child has a remote file system, we might hand off to
+ // this remote if we don't find anything more specific below
+ // this vnode.
+ if child.remote.IsValid() {
+ savedVn = vn
+ savedPath = path
+ }
+
+ continue
+ }
+ }
+
+ // We've reached the end of our local vnode structure with more
+ // path to resolve.
+
+ if vn.remote.IsValid() {
+ // We've got a remote file system at this vnode. We can hand off
+ // directly to that file system.
+ return vn, path, true, nil
+ }
+
+ // We saw a remote file system earlier in our walk that might have this
+ // path. Let's hand off to it.
+ if savedVn != nil {
+ return savedVn, savedPath, true, nil
+ }
+
+ // There is no remote file system to resolve the path against,
+ // which means we failed to find what we were looking for.
+ return nil, "", false, &zx.Error{Status: zx.ErrNotFound, Text: originalPath}
+ }
+}
+
+// Open implements FDIO for dir.
+func (d *dir) Open(pathname string, flags uint32, mode uint32) (FDIO, error) {
+ vn, relp, isRemote, err := d.getVnode(pathname)
+ if err != nil {
+ return nil, err
+ }
+ if isRemote {
+ return vn.remote.Open(relp, flags, mode)
+ }
+ return &dir{vn}, nil
+}
+
+func (d *dir) openParent(pathname string) (FDIO, string, error) {
+ dirpath, name := pathSplit(pathname)
+ parent, err := d.Open(
+ pathDir(dirpath),
+ io.OpenRightReadable|io.OpenFlagDirectory|io.OpenFlagPosix,
+ S_IFDIR)
+ if err != nil {
+ return nil, "", err
+ }
+ return parent, name, err
+}
+
+// Link implements FDIO for dir.
+func (d *dir) Link(oldpath, newpath string) error {
+ oldparent, oldname, err := d.openParent(oldpath)
+ if err != nil {
+ return err
+ }
+ defer oldparent.Close()
+ newparent, newname, err := d.openParent(newpath)
+ if err != nil {
+ return err
+ }
+ defer newparent.Close()
+ olddir, ok := oldparent.(*Directory)
+ if !ok {
+ return &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.ns.dir"}
+ }
+ newdir, ok := newparent.(*Directory)
+ if !ok {
+ return &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.ns.dir"}
+ }
+ token, err := newdir.getToken()
+ if err != nil {
+ return err
+ }
+ status, err := olddir.directoryInterface().Link(context.Background(), oldname, token, newname)
+ if err != nil {
+ return err
+ } else if zx.Status(status) != zx.ErrOk {
+ return &zx.Error{Status: zx.Status(status), Text: "fdio.ns.dir"}
+ }
+ return nil
+}
+
+// Rename implements FDIO for dir.
+func (d *dir) Rename(oldpath, newpath string) error {
+ oldf, oldname, err := d.openParent(oldpath)
+ if err != nil {
+ return err
+ }
+ defer oldf.Close()
+ newf, newname, err := d.openParent(newpath)
+ if err != nil {
+ return err
+ }
+ defer newf.Close()
+ olddir, ok := oldf.(*Directory)
+ if !ok {
+ return &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.ns.dir"}
+ }
+ newdir, ok := newf.(*Directory)
+ if !ok {
+ return &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.ns.dir"}
+ }
+ token, err := newdir.getToken()
+ if err != nil {
+ return err
+ }
+ status, err := olddir.directoryInterface().Rename2(
+ context.Background(), oldname, zx.Event(token), newname)
+ if err != nil {
+ return err
+ } else if status.Which() == io.DirectoryRename2ResultErr {
+ return &zx.Error{Status: zx.Status(status.Err), Text: "fdio.ns.dir"}
+ }
+ return nil
+}
+
+// Unlink implements FDIO for dir.
+func (d *dir) Unlink(pathname string) error {
+ parent, name, err := d.openParent(pathname)
+ if err != nil {
+ return err
+ }
+ defer parent.Close()
+ parentdir, ok := parent.(*Directory)
+ if !ok {
+ return &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.ns.dir"}
+ }
+ status, err := parentdir.directoryInterface().Unlink2(context.Background(), name, io2.UnlinkOptions{})
+ return zxStatusToError(status.Err, err, "fdio.ns.dir")
+}
+
+// ReadDirents implements FDIO for dir.
+func (d *dir) ReadDirents(max uint64) ([]byte, error) {
+ if remote := d.vn.remote; remote.IsValid() {
+ return remote.ReadDirents(max)
+ }
+ return nil, nil
+}
+
+// Rewind implements FDIO for dir.
+func (d *dir) Rewind() error {
+ if remote := d.vn.remote; remote.IsValid() {
+ return remote.Rewind()
+ }
+ return nil
+}
diff --git a/src/syscall/zx/fdio/node.go b/src/syscall/zx/fdio/node.go
new file mode 100644
index 0000000..aa6746c
--- /dev/null
+++ b/src/syscall/zx/fdio/node.go
@@ -0,0 +1,236 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Go's distribution tools attempt to compile everything; this file
+// depends on types that don't compile in not-Fuchsia.
+// +build fuchsia
+
+package fdio
+
+import (
+ "syscall/zx"
+ "syscall/zx/fidl"
+ "syscall/zx/internal/context"
+ "syscall/zx/io"
+)
+
+func zxStatusToError(status int32, err error, text string) error {
+ if err != nil {
+ return err
+ }
+ if zx.Status(status) != zx.ErrOk {
+ return &zx.Error{Status: zx.Status(status), Text: text}
+ }
+ return nil
+}
+
+type multiError struct {
+ err1 error
+ err2 error
+ string1 string
+ string2 string
+}
+
+func newMultiError(err1 error, string1 string, err2 error, string2 string) error {
+ if err1 == nil && err2 == nil {
+ return nil
+ }
+ if err1 != nil && err2 == nil {
+ return err1
+ }
+ if err1 == nil && err2 != nil {
+ return err2
+ }
+ return &multiError{
+ err1: err1,
+ err2: err2,
+ string1: string1,
+ string2: string2,
+ }
+}
+
+func (err *multiError) Error() string {
+ var errStr string
+ if e := err.err1; e != nil {
+ errStr += err.string1 + "=" + e.Error()
+ }
+ if e := err.err2; e != nil {
+ errStr += err.string2 + "=" + e.Error()
+ }
+ return errStr
+}
+
+func nodeFromInfo(info *io.NodeInfo, node *io.NodeWithCtxInterface) (result FDIO, err error) {
+ if info == nil {
+ if err = ((*fidl.ChannelProxy)(node)).Channel.Close(); err != nil {
+ return nil, err
+ }
+ return nil, &zx.Error{Status: zx.ErrNotSupported, Text: "io.node"}
+ }
+ switch info.Which() {
+ case io.NodeInfoService:
+ // TODO(mknyszek): Figure out the correct type to return here.
+ result = &Node{NodeWithCtxInterface: node}
+ case io.NodeInfoFile:
+ result = NewFileWithCtx((*io.FileWithCtxInterface)(node), info.File.Event)
+ case io.NodeInfoDevice:
+ // TODO(35068): Figure out the correct representation of info.Device.Event.
+ result = NewFileWithCtx((*io.FileWithCtxInterface)(node), zx.Event(info.Device.Event))
+ case io.NodeInfoDirectory:
+ result = NewDirectoryWithCtx((*io.DirectoryAdminWithCtxInterface)(node))
+ case io.NodeInfoPipe:
+ if err = ((*fidl.ChannelProxy)(node)).Channel.Close(); err != nil {
+ return nil, err
+ }
+ result = NewPipe(info.Pipe.Socket)
+ case io.NodeInfoVmofile:
+ if err = ((*fidl.ChannelProxy)(node)).Channel.Close(); err != nil {
+ return nil, err
+ }
+ result, err = NewVMOFile(info.Vmofile.Vmo, info.Vmofile.Offset, info.Vmofile.Length)
+ if err != nil {
+ return nil, err
+ }
+ default:
+ if err = ((*fidl.ChannelProxy)(node)).Channel.Close(); err != nil {
+ return nil, err
+ }
+ return nil, &zx.Error{Status: zx.ErrNotSupported, Text: "io.node"}
+ }
+ return result, nil
+}
+
+var _ FDIO = (*Node)(nil)
+
+// Node is a wrapper around an NodeWithCtxInterface which implements FDIO.
+type Node struct {
+ *io.NodeWithCtxInterface
+}
+
+// IsValid returns true if the Node is valid.
+func (n *Node) IsValid() bool {
+ if n.NodeWithCtxInterface == nil {
+ return false
+ }
+ return ((*fidl.ChannelProxy)(n.NodeWithCtxInterface)).IsValid()
+}
+
+// Handles returns a slice of untyped zx handles containing the underlying
+// channel of the Node.
+func (n *Node) Handles() []zx.Handle {
+ return []zx.Handle{
+ zx.Handle(((*fidl.ChannelProxy)(n.NodeWithCtxInterface)).Channel),
+ }
+}
+
+// Clone makes a clone of the node.
+func (n *Node) Clone() (FDIO, error) {
+ req, newNode, err := io.NewNodeWithCtxInterfaceRequest()
+ if err != nil {
+ return nil, err
+ }
+ cloneFlag := io.CloneFlagSameRights | io.OpenFlagDescribe
+ fdio, err := func() (FDIO, error) {
+ if err := n.NodeWithCtxInterface.Clone(context.Background(), cloneFlag, req); err != nil {
+ return nil, err
+ }
+ status, info, err := newNode.ExpectOnOpen(context.Background())
+ if err := zxStatusToError(status, err, "io.node.Clone"); err != nil {
+ return nil, err
+ }
+ return nodeFromInfo(info, newNode)
+ }()
+ if err != nil {
+ return nil, newMultiError(((*fidl.ChannelProxy)(newNode)).Close(), "closeErr", err, "innerErr")
+ }
+ return fdio, nil
+}
+
+// Close closes the node.
+func (n *Node) Close() error {
+ status, err := n.NodeWithCtxInterface.Close(context.Background())
+ channelErr := ((*fidl.ChannelProxy)(n.NodeWithCtxInterface)).Close()
+ return newMultiError(zxStatusToError(status, err, "io.node.Close"), "fidlErr", channelErr, "channelErr")
+}
+
+// Sync performs a sync operation on a Node.
+func (n *Node) Sync() error {
+ status, err := n.NodeWithCtxInterface.Sync(context.Background())
+ return zxStatusToError(status, err, "io.node.Sync")
+}
+
+// GetAttr returns the attributes for the Node.
+func (n *Node) GetAttr() (io.NodeAttributes, error) {
+ status, attrs, err := n.NodeWithCtxInterface.GetAttr(context.Background())
+ if err := zxStatusToError(status, err, "io.node.GetAttr"); err != nil {
+ return io.NodeAttributes{}, err
+ }
+ return attrs, nil
+}
+
+// SetAttr sets the attributes for Node as defined by flags.
+func (n *Node) SetAttr(flags uint32, attr io.NodeAttributes) error {
+ status, err := n.NodeWithCtxInterface.SetAttr(context.Background(), flags, attr)
+ return zxStatusToError(status, err, "io.node.SetAttr")
+}
+
+// Read implements FDIO for Node.
+func (n *Node) Read(data []byte) (int, error) {
+ return 0, &zx.Error{Status: zx.ErrNotSupported, Text: "io.node"}
+}
+
+// ReadAt implements FDIO for Node.
+func (n *Node) ReadAt(data []byte, off int64) (int, error) {
+ return 0, &zx.Error{Status: zx.ErrNotSupported, Text: "io.node"}
+}
+
+// Write implements FDIO for Node.
+func (n *Node) Write(data []byte) (int, error) {
+ return 0, &zx.Error{Status: zx.ErrNotSupported, Text: "io.node"}
+}
+
+// WriteAt implements FDIO for Node.
+func (n *Node) WriteAt(data []byte, off int64) (int, error) {
+ return 0, &zx.Error{Status: zx.ErrNotSupported, Text: "io.node"}
+}
+
+// Seek implements FDIO for Node.
+func (n *Node) Seek(offset int64, whence int) (int64, error) {
+ return 0, &zx.Error{Status: zx.ErrNotSupported, Text: "io.node"}
+}
+
+// Truncate implements FDIO for Node.
+func (n *Node) Truncate(length uint64) error {
+ return &zx.Error{Status: zx.ErrNotSupported, Text: "io.node"}
+}
+
+// Open implements FDIO for Node.
+func (n *Node) Open(path string, flags uint32, mode uint32) (FDIO, error) {
+ return nil, &zx.Error{Status: zx.ErrNotSupported, Text: "io.node"}
+}
+
+// Link implements FDIO for Node.
+func (n *Node) Link(oldpath, newpath string) error {
+ return &zx.Error{Status: zx.ErrNotSupported, Text: "io.node"}
+}
+
+// Rename implements FDIO for Node.
+func (n *Node) Rename(oldpath, newpath string) error {
+ return &zx.Error{Status: zx.ErrNotSupported, Text: "io.node"}
+}
+
+// Unlink implements FDIO for Node.
+func (n *Node) Unlink(path string) error {
+ return &zx.Error{Status: zx.ErrNotSupported, Text: "io.node"}
+}
+
+// ReadDirents implements FDIO for Node.
+func (n *Node) ReadDirents(max uint64) ([]byte, error) {
+ return nil, &zx.Error{Status: zx.ErrNotSupported, Text: "io.node"}
+}
+
+// Rewind implements FDIO for Node.
+func (n *Node) Rewind() error {
+ return &zx.Error{Status: zx.ErrNotSupported, Text: "io.node"}
+}
diff --git a/src/syscall/zx/fdio/path.go b/src/syscall/zx/fdio/path.go
new file mode 100644
index 0000000..43769e3
--- /dev/null
+++ b/src/syscall/zx/fdio/path.go
@@ -0,0 +1,167 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+//
+// This file contains implementations of various path functions we need to support
+// without importing the path or strings packages.
+
+package fdio
+
+import "internal/bytealg"
+
+// pathSplitForward has special path splitting semantics for vnode / service connect.
+// It differs from path.Split primarily in that it begins searching for path
+// separators from the front of the path, as opposed to from the back. The
+// semantics for various other path types also differ:
+// * Rooted paths, or paths not containing a file name (i.e. slash is the last
+// character in the path) results in empty strings returned for directory and
+// file.
+// * Paths containing no slash return the whole path as the directory.
+func pathSplitForward(path string) (dir, file string) {
+ slash := bytealg.IndexByte([]byte(path), '/')
+ if slash == 0 || slash == len(path)-1 {
+ return "", ""
+ } else if slash == -1 {
+ return path, ""
+ } else {
+ return path[:slash], path[slash+1:]
+ }
+}
+
+// pathSplit is an implementation of path.Split that additionally implements
+// strings.LastIndex to avoid a dependency on both the path and strings
+// package.
+func pathSplit(path string) (dir, file string) {
+ var i int
+ for i = len(path) - 1; i >= 0; i-- {
+ if path[i] == '/' {
+ break
+ }
+ }
+
+ return path[:i+1], path[i+1:]
+}
+
+// pathDir is an implementation of path.Dir.
+func pathDir(path string) string {
+ dir, _ := pathSplit(path)
+ return pathClean(dir)
+}
+
+// trimPrefix is an implementation of strings.TrimPrefix.
+func trimPrefix(path, prefix string) string {
+ if path[:len(prefix)] == prefix {
+ return path[len(prefix):]
+ }
+ return path
+}
+
+// The following is copied verbatim from the path package to implement
+// path.Clean. This is done to avoid a dependency on the path package,
+// though it is unfortunate to have the code duplicated.
+
+// A lazybuf is a lazily constructed path buffer.
+// It supports append, reading previously appended bytes,
+// and retrieving the final string. It does not allocate a buffer
+// to hold the output until that output diverges from s.
+type lazybuf struct {
+ s string
+ buf []byte
+ w int
+}
+
+func (b *lazybuf) index(i int) byte {
+ if b.buf != nil {
+ return b.buf[i]
+ }
+ return b.s[i]
+}
+
+func (b *lazybuf) append(c byte) {
+ if b.buf == nil {
+ if b.w < len(b.s) && b.s[b.w] == c {
+ b.w++
+ return
+ }
+ b.buf = make([]byte, len(b.s))
+ copy(b.buf, b.s[:b.w])
+ }
+ b.buf[b.w] = c
+ b.w++
+}
+
+func (b *lazybuf) string() string {
+ if b.buf == nil {
+ return b.s[:b.w]
+ }
+ return string(b.buf[:b.w])
+}
+
+// pathClean is copied verbatim from path.Clean.
+func pathClean(path string) string {
+ if path == "" {
+ return "."
+ }
+
+ rooted := path[0] == '/'
+ n := len(path)
+
+ // Invariants:
+ // reading from path; r is index of next byte to process.
+ // writing to buf; w is index of next byte to write.
+ // dotdot is index in buf where .. must stop, either because
+ // it is the leading slash or it is a leading ../../.. prefix.
+ out := lazybuf{s: path}
+ r, dotdot := 0, 0
+ if rooted {
+ out.append('/')
+ r, dotdot = 1, 1
+ }
+
+ for r < n {
+ switch {
+ case path[r] == '/':
+ // empty path element
+ r++
+ case path[r] == '.' && (r+1 == n || path[r+1] == '/'):
+ // . element
+ r++
+ case path[r] == '.' && path[r+1] == '.' && (r+2 == n || path[r+2] == '/'):
+ // .. element: remove to last /
+ r += 2
+ switch {
+ case out.w > dotdot:
+ // can backtrack
+ out.w--
+ for out.w > dotdot && out.index(out.w) != '/' {
+ out.w--
+ }
+ case !rooted:
+ // cannot backtrack, but not rooted, so append .. element.
+ if out.w > 0 {
+ out.append('/')
+ }
+ out.append('.')
+ out.append('.')
+ dotdot = out.w
+ }
+ default:
+ // real path element.
+ // add slash if needed
+ if rooted && out.w != 1 || !rooted && out.w != 0 {
+ out.append('/')
+ }
+ // copy element
+ for ; r < n && path[r] != '/'; r++ {
+ out.append(path[r])
+ }
+ }
+ }
+
+ // Turn empty string into "."
+ if out.w == 0 {
+ return "."
+ }
+
+ return out.string()
+}
diff --git a/src/syscall/zx/fdio/pipe.go b/src/syscall/zx/fdio/pipe.go
new file mode 100644
index 0000000..20b8744
--- /dev/null
+++ b/src/syscall/zx/fdio/pipe.go
@@ -0,0 +1,167 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Go's distribution tools attempt to compile everything; this file
+// depends on zxwait, which doesn't compile in not-Fuchsia.
+//go:build fuchsia
+// +build fuchsia
+
+package fdio
+
+import (
+ "syscall/zx"
+ "syscall/zx/internal/context"
+ "syscall/zx/io"
+ "syscall/zx/zxwait"
+)
+
+type Pipe struct {
+ s zx.Socket
+}
+
+func NewPipes() (*Pipe, *Pipe, error) {
+ s0, s1, err := zx.NewSocket(0)
+ if err != nil {
+ return nil, nil, err
+ }
+ return &Pipe{s0}, &Pipe{s1}, nil
+}
+
+func NewPipe(s zx.Socket) *Pipe {
+ return &Pipe{s}
+}
+
+func (f *Pipe) Wait(ctx context.Context, signals zx.Signals) (observed zx.Signals, err error) {
+ return zxwait.WaitContext(ctx, zx.Handle(f.s), signals)
+}
+
+func (f *Pipe) Handles() []zx.Handle {
+ return []zx.Handle{zx.Handle(f.s)}
+}
+
+func (f *Pipe) Clone() (FDIO, error) {
+ h, err := f.s.Handle().Duplicate(zx.RightSameRights)
+ if err != nil {
+ return nil, err
+ }
+ return NewPipe(zx.Socket(h)), nil
+}
+
+func (f *Pipe) Close() error {
+ if err := f.s.Close(); err != nil {
+ return err
+ }
+ f.s = zx.Socket(zx.HandleInvalid)
+ return nil
+}
+
+func (f *Pipe) Sync() error {
+ return &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.Pipe"}
+}
+
+func (f *Pipe) GetAttr() (io.NodeAttributes, error) {
+ return io.NodeAttributes{}, &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.Pipe"}
+}
+
+func (f *Pipe) SetAttr(flags uint32, attr io.NodeAttributes) error {
+ return &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.Pipe"}
+}
+
+func (f *Pipe) Read(data []byte) (int, error) {
+ for {
+ n, err := f.s.Read(data, 0)
+ if err != nil {
+ if err, ok := err.(*zx.Error); ok {
+ switch err.Status {
+ case zx.ErrPeerClosed:
+ return 0, zx.EOF
+ case zx.ErrShouldWait:
+ pending, err := f.Wait(context.Background(), zx.SignalSocketReadable|zx.SignalSocketPeerClosed)
+ if err != nil {
+ return 0, err
+ }
+ if pending&zx.SignalSocketReadable != 0 {
+ continue
+ }
+ if pending&zx.SignalSocketPeerClosed != 0 {
+ return 0, zx.EOF
+ }
+ // impossible
+ return 0, &zx.Error{Status: zx.ErrInternal, Text: "fdio.Pipe"}
+ }
+ }
+ return 0, err
+ }
+ return n, nil
+ }
+}
+
+func (f *Pipe) ReadAt(data []byte, off int64) (int, error) {
+ return 0, &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.Pipe"}
+}
+
+func (f *Pipe) Write(data []byte) (int, error) {
+ for {
+ n, err := f.s.Write(data, 0)
+ if err != nil {
+ if err, ok := err.(*zx.Error); ok {
+ switch err.Status {
+ case zx.ErrPeerClosed:
+ return 0, zx.EPIPE
+ case zx.ErrShouldWait:
+ pending, err := f.Wait(context.Background(), zx.SignalSocketWritable|zx.SignalSocketPeerClosed)
+ if err != nil {
+ return 0, err
+ }
+ if pending&zx.SignalSocketWritable != 0 {
+ continue
+ }
+ if pending&zx.SignalSocketPeerClosed != 0 {
+ return 0, zx.EPIPE
+ }
+ // impossible
+ return 0, &zx.Error{Status: zx.ErrInternal, Text: "fdio.Pipe"}
+ }
+ }
+ return 0, err
+ }
+ return n, nil
+ }
+}
+
+func (f *Pipe) WriteAt(data []byte, off int64) (int, error) {
+ return 0, &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.Pipe"}
+}
+
+func (f *Pipe) Seek(offset int64, whence int) (int64, error) {
+ return 0, &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.Pipe"}
+}
+
+func (f *Pipe) Truncate(length uint64) error {
+ return &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.Pipe"}
+}
+
+func (f *Pipe) Open(path string, flags uint32, mode uint32) (FDIO, error) {
+ return nil, &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.Pipe"}
+}
+
+func (f *Pipe) Link(oldpath, newpath string) error {
+ return &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.Pipe"}
+}
+
+func (f *Pipe) Rename(oldpath, newpath string) error {
+ return &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.Pipe"}
+}
+
+func (f *Pipe) Unlink(path string) error {
+ return &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.Pipe"}
+}
+
+func (f *Pipe) ReadDirents(max uint64) ([]byte, error) {
+ return nil, &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.Pipe"}
+}
+
+func (f *Pipe) Rewind() error {
+ return &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.Pipe"}
+}
diff --git a/src/syscall/zx/fdio/vmo.go b/src/syscall/zx/fdio/vmo.go
new file mode 100644
index 0000000..f151e51
--- /dev/null
+++ b/src/syscall/zx/fdio/vmo.go
@@ -0,0 +1,159 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Go's distribution tools attempt to compile everything; this file
+// depends on types that don't compile in not-Fuchsia.
+// +build fuchsia
+
+package fdio
+
+import (
+ "syscall/zx"
+ "syscall/zx/io"
+)
+
+type VMOFile struct {
+ h zx.VMO
+ off int64
+ len int64
+ end int64
+ at int64
+}
+
+func NewVMOFile(handle zx.VMO, offset uint64, length uint64) (*VMOFile, error) {
+ // fdio_vmofile_create
+ f := &VMOFile{
+ h: handle,
+ off: int64(offset),
+ len: int64(length),
+ }
+ f.end = f.off + f.len
+ f.at = f.off
+ return f, nil
+}
+
+func (f *VMOFile) Handles() []zx.Handle {
+ return []zx.Handle{zx.Handle(f.h)}
+}
+
+func (f *VMOFile) Clone() (FDIO, error) {
+ return nil, &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.VMOFile"}
+}
+
+func (f *VMOFile) Close() error {
+ if err := f.h.Close(); err != nil {
+ return err
+ }
+ f.h = 0
+ return nil
+}
+
+func (f *VMOFile) Sync() error {
+ return &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.VMOFile"}
+}
+
+func (f *VMOFile) GetAttr() (io.NodeAttributes, error) {
+ return io.NodeAttributes{
+ ContentSize: uint64(f.len),
+ StorageSize: uint64(f.len),
+ Mode: uint32(io.ModeTypeFile) | uint32(VtypeIRUSR),
+ }, nil
+}
+
+func (f *VMOFile) SetAttr(flags uint32, attr io.NodeAttributes) error {
+ return &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.VMOFile"}
+}
+
+func (f *VMOFile) Read(data []byte) (n int, err error) {
+ if int64(len(data)) > f.end-f.at {
+ data = data[:f.end-f.at]
+ err = zx.EOF
+ }
+ if len(data) == 0 {
+ return 0, err
+ }
+ if err2 := f.h.Read(data, uint64(f.at)); err2 != nil {
+ return 0, err2
+ }
+ n = len(data)
+ f.at += int64(n)
+ return
+}
+
+func (f *VMOFile) ReadAt(data []byte, off int64) (n int, err error) {
+ if off < 0 {
+ return 0, &zx.Error{Status: zx.ErrInvalidArgs, Text: "fdio.VMOFile.ReadAt"}
+ }
+ if off >= f.end {
+ return 0, zx.EOF
+ }
+ if len(data) == 0 {
+ return 0, zx.EOF
+ }
+ n = len(data)
+ max := int(f.end - off)
+ if max < n {
+ n = max
+ err = zx.EOF
+ }
+ data = data[:n]
+ if err2 := f.h.Read(data, uint64(off)); err2 != nil {
+ return 0, err2
+ }
+ return
+}
+
+func (f *VMOFile) Write(data []byte) (int, error) {
+ return 0, &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.VMOFile"}
+}
+
+func (f *VMOFile) WriteAt(data []byte, off int64) (int, error) {
+ return 0, &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.VMOFile"}
+}
+
+func (f *VMOFile) Seek(offset int64, whence int) (int64, error) {
+ var at int64
+ switch whence {
+ case 0: // SEEK_SET
+ at = offset
+ case 1: // SEEK_CUR
+ at = f.at - f.off + offset
+ case 2: // SEEK_END
+ at = f.end - f.off + offset
+ }
+
+ if at > f.end-f.off {
+ return 0, &zx.Error{Status: zx.ErrOutOfRange, Text: "fdio.VMOFile"}
+ }
+ f.at = f.off + at
+ return at, nil
+}
+
+func (f *VMOFile) Truncate(length uint64) error {
+ return &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.VMOFile"}
+}
+
+func (f *VMOFile) Open(path string, flags uint32, mode uint32) (FDIO, error) {
+ return nil, &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.VMOFile"}
+}
+
+func (f *VMOFile) Link(oldpath, newpath string) error {
+ return &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.VMOFile"}
+}
+
+func (f *VMOFile) Rename(oldpath, newpath string) error {
+ return &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.VMOFile"}
+}
+
+func (f *VMOFile) Unlink(path string) error {
+ return &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.VMOFile"}
+}
+
+func (f *VMOFile) ReadDirents(max uint64) ([]byte, error) {
+ return nil, &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.VMOFile"}
+}
+
+func (f *VMOFile) Rewind() error {
+ return &zx.Error{Status: zx.ErrNotSupported, Text: "fdio.VMOFile"}
+}
diff --git a/src/syscall/zx/fidl/context.go b/src/syscall/zx/fidl/context.go
new file mode 100644
index 0000000..584d777
--- /dev/null
+++ b/src/syscall/zx/fidl/context.go
@@ -0,0 +1,26 @@
+// Copyright 2019 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 fidl
+
+import (
+ "syscall/zx/internal/context"
+)
+
+type Context = context.Context
+
+type marshalerContextKey struct{}
+
+// GetMarshalerContext returns the MarshalerContext stored on ctx if it exists;
+// otherwise the bool return value will be false.
+func GetMarshalerContext(ctx Context) (MarshalerContext, bool) {
+ marshalerCtx, ok := ctx.Value(marshalerContextKey{}).(MarshalerContext)
+ return marshalerCtx, ok
+}
+
+// WithMarshalerContext returns a Context that embeds parent and stores
+// marshalerCtx.
+func WithMarshalerContext(parent Context, marshalerCtx MarshalerContext) Context {
+ return context.WithValue(parent, marshalerContextKey{}, marshalerCtx)
+}
diff --git a/src/syscall/zx/fidl/ctx_and_header.go b/src/syscall/zx/fidl/ctx_and_header.go
new file mode 100644
index 0000000..916d17b
--- /dev/null
+++ b/src/syscall/zx/fidl/ctx_and_header.go
@@ -0,0 +1,77 @@
+// Copyright 2019 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 fidl
+
+var allowV2WireFormatDecoding bool
+
+// Enable V2 wire format decoding for this process.
+func AllowV2WireFormatDecoding() {
+ allowV2WireFormatDecoding = true
+}
+
+const FidlWireFormatMagicNumberInitial = 0x01
+
+const FidlV2WireFormatFlagMask = 0x02
+
+// MarshalerContext stores flags to control marshaling/unmarshaling.
+//
+// This is currently empty. We keep it around to ease the implementation of
+// context-dependent behavior for future migrations.
+type MarshalerContext struct {
+ UseV2WireFormat bool
+}
+
+func (ctx MarshalerContext) isV2WireFormatDecodingEnabled() bool {
+ return allowV2WireFormatDecoding && ctx.UseV2WireFormat
+}
+
+// newCtx returns the default context.
+// During migrations, this controls the default write path.
+func newCtx() MarshalerContext {
+ return MarshalerContext{UseV2WireFormat: false}
+}
+
+// MessageHeader represents a transactional message header.
+type MessageHeader struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Txid uint32 `fidl:"0" fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:""`
+ Flags [3]uint8 `fidl:"4" fidl_offset_v1:"4" fidl_offset_v2:"4" fidl_bounds:""`
+ Magic uint8 `fidl:"7" fidl_offset_v1:"7" fidl_offset_v2:"7" fidl_bounds:""`
+ Ordinal uint64 `fidl:"8" fidl_offset_v1:"8" fidl_offset_v2:"8" fidl_bounds:""`
+}
+
+func (msg *MessageHeader) IsSupportedVersion() bool {
+ return msg.Magic == FidlWireFormatMagicNumberInitial
+}
+
+// NewCtx creates a new MarshalerContext for unmarshaling based on msg.Flags.
+// During migrations, this controls dynamic behavior in the read path.
+func (msg *MessageHeader) NewCtx() MarshalerContext {
+ return MarshalerContext{
+ UseV2WireFormat: (msg.Flags[0] & FidlV2WireFormatFlagMask) != 0,
+ }
+}
+
+var mMessageHeader = MustCreateMarshaler(MessageHeader{})
+
+var MessageHeaderSize = 16
+
+func (msg *MessageHeader) Marshaler() Marshaler {
+ return mMessageHeader
+}
+
+// NewHeader create a new MessageHeader for marshaling with the correct flags
+// set based on the MarshalerContext. It is the caller's responsibilty to set
+// the transaction ID and method ordinal
+func (ctx MarshalerContext) NewHeader() MessageHeader {
+ var flagByte0 uint8
+ if ctx.UseV2WireFormat {
+ flagByte0 = 1
+ }
+ return MessageHeader{
+ Flags: [3]uint8{flagByte0, 0, 0},
+ Magic: FidlWireFormatMagicNumberInitial,
+ }
+}
diff --git a/src/syscall/zx/fidl/debug_util.go b/src/syscall/zx/fidl/debug_util.go
new file mode 100644
index 0000000..cfbfa74
--- /dev/null
+++ b/src/syscall/zx/fidl/debug_util.go
@@ -0,0 +1,177 @@
+// Copyright 2019 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 fidl
+
+import (
+ "errors"
+ "reflect"
+ "strconv"
+ "strings"
+)
+
+// Usage: printf("abc {} def {} ...", 3, X{4})
+func printf(format string, args ...interface{}) {
+ print(sprintf(format, args...))
+}
+
+func errorf(format string, args ...interface{}) error {
+ return errors.New(sprintf(format, args...))
+}
+
+func sprintf(format string, args ...interface{}) string {
+ var argStrs []string
+ for _, arg := range args {
+ argStrs = append(argStrs, buildValueString(reflect.ValueOf(arg)))
+ }
+ parts := strings.Split(format, "{}")
+ argIndex := 0
+ strIndex := 0
+ out := ""
+ for strIndex < len(parts) {
+ if argIndex >= strIndex {
+ out += parts[strIndex]
+ strIndex++
+ } else {
+ out += argStrs[argIndex]
+ argIndex++
+ }
+ }
+ return out
+}
+
+func buildTypeString(rt reflect.Type) string {
+ switch rt.Kind() {
+ case reflect.Bool:
+ fallthrough
+ case reflect.Int:
+ fallthrough
+ case reflect.Int8:
+ fallthrough
+ case reflect.Int16:
+ fallthrough
+ case reflect.Int32:
+ fallthrough
+ case reflect.Int64:
+ fallthrough
+ case reflect.Uint:
+ fallthrough
+ case reflect.Uint8:
+ fallthrough
+ case reflect.Uint16:
+ fallthrough
+ case reflect.Uint32:
+ fallthrough
+ case reflect.Uint64:
+ fallthrough
+ case reflect.Uintptr:
+ fallthrough
+ case reflect.Float32:
+ fallthrough
+ case reflect.Float64:
+ fallthrough
+ case reflect.String:
+ return rt.Kind().String()
+ case reflect.Array:
+ return "[" + strconv.FormatUint(uint64(rt.Size()), 10) + "]" + buildTypeString(rt.Elem())
+ case reflect.Slice:
+ return "[]" + buildTypeString(rt.Elem())
+ case reflect.Map:
+ return "[" + buildTypeString(rt.Key()) + "]" + buildTypeString(rt.Elem())
+ case reflect.Ptr:
+ return "*" + buildTypeString(rt.Elem())
+ case reflect.Interface:
+ fallthrough
+ case reflect.Struct:
+ return rt.Name()
+ case reflect.Complex64:
+ return "[complex64]"
+ case reflect.Complex128:
+ return "[complex128]"
+ case reflect.Chan:
+ return "[chan]"
+ case reflect.Func:
+ return "[func]"
+ case reflect.UnsafePointer:
+ return "[unsafeptr]"
+ default:
+ panic("unsupported type kind " + strconv.Itoa(int(rt.Kind())))
+ }
+}
+
+func buildValueString(rv reflect.Value) string {
+ switch rv.Kind() {
+ case reflect.Bool:
+ return strconv.FormatBool(rv.Bool())
+ case reflect.Int:
+ fallthrough
+ case reflect.Int8:
+ fallthrough
+ case reflect.Int16:
+ fallthrough
+ case reflect.Int32:
+ fallthrough
+ case reflect.Int64:
+ return strconv.FormatInt(rv.Int(), 10)
+ case reflect.Uint:
+ fallthrough
+ case reflect.Uint8:
+ fallthrough
+ case reflect.Uint16:
+ fallthrough
+ case reflect.Uint32:
+ fallthrough
+ case reflect.Uint64:
+ return strconv.FormatUint(rv.Uint(), 10)
+ case reflect.Uintptr:
+ return "0x" + strconv.FormatUint(rv.Uint(), 16)
+ case reflect.Float32:
+ fallthrough
+ case reflect.Float64:
+ return strconv.FormatFloat(rv.Float(), 'f', -1, 64)
+ case reflect.String:
+ return rv.String() // TODO quote the string
+ case reflect.Array:
+ fallthrough
+ case reflect.Slice:
+ var valueStrs []string
+ for i := 0; i < rv.Len(); i++ {
+ valueStrs = append(valueStrs, buildValueString(rv.Index(i)))
+ }
+ return buildTypeString(rv.Type()) + "{" + strings.Join(valueStrs, ", ") + "}"
+ case reflect.Map:
+ iter := rv.MapRange()
+ var itemStrs []string
+ for iter.Next() {
+ itemStrs = append(itemStrs, buildValueString(iter.Key())+": "+buildValueString(iter.Value()))
+ }
+ return buildTypeString(rv.Type()) + "{" + strings.Join(itemStrs, ", ") + "}"
+ case reflect.Interface:
+ fallthrough
+ case reflect.Ptr:
+ if rv.IsNil() {
+ return "nil"
+ } else {
+ return buildValueString(rv.Elem())
+ }
+ case reflect.Struct:
+ var itemStrs []string
+ for i := 0; i < rv.NumField(); i++ {
+ itemStrs = append(itemStrs, rv.Type().Field(i).Name+": "+buildValueString(rv.Field(i)))
+ }
+ return buildTypeString(rv.Type()) + "{" + strings.Join(itemStrs, ", ") + "}"
+ case reflect.Complex64:
+ return "[complex64]"
+ case reflect.Complex128:
+ return "[complex128]"
+ case reflect.Chan:
+ return "[chan]"
+ case reflect.Func:
+ return "[func]"
+ case reflect.UnsafePointer:
+ return "[unsafeptr]"
+ default:
+ panic("unsupported value kind " + strconv.Itoa(int(rv.Kind())))
+ }
+}
diff --git a/src/syscall/zx/fidl/empty.s b/src/syscall/zx/fidl/empty.s
new file mode 100644
index 0000000..796da3d
--- /dev/null
+++ b/src/syscall/zx/fidl/empty.s
@@ -0,0 +1,6 @@
+// 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.
+
+// This file exists to trick go:linkname into working.
+// A .s file needs to be present in the directory.
\ No newline at end of file
diff --git a/src/syscall/zx/fidl/encoding.go b/src/syscall/zx/fidl/encoding.go
new file mode 100644
index 0000000..8820bc8
--- /dev/null
+++ b/src/syscall/zx/fidl/encoding.go
@@ -0,0 +1,167 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package fidl
+
+import (
+ "encoding/binary"
+ "math"
+ "reflect"
+ "syscall/zx"
+)
+
+const (
+ allocPresent uint64 = math.MaxUint64
+ noAlloc = 0
+)
+
+const (
+ handlePresent uint32 = math.MaxUint32
+ noHandle = 0
+)
+
+const (
+ maxOutOfLineDepth = 32
+)
+
+var (
+ // TODO(mknyszek): Add support here for process, thread, job, resource,
+ // interrupt, eventpair, fifo, guest, and time once these are actually
+ // supported in the Go runtime.
+ handleType reflect.Type = reflect.TypeOf(zx.Handle(0))
+ channelType = reflect.TypeOf(zx.Channel(0))
+ logType = reflect.TypeOf(zx.Log(0))
+ portType = reflect.TypeOf(zx.Port(0))
+ vmoType = reflect.TypeOf(zx.VMO(0))
+ eventType = reflect.TypeOf(zx.Event(0))
+ socketType = reflect.TypeOf(zx.Socket(0))
+ vmarType = reflect.TypeOf(zx.VMAR(0))
+ interfaceRequestType = reflect.TypeOf(InterfaceRequest{})
+ proxyType = reflect.TypeOf(ChannelProxy{})
+)
+
+// isHandleType returns true if the reflected type is a Fuchsia handle type.
+func isHandleType(t reflect.Type) bool {
+ switch t {
+ case handleType:
+ fallthrough
+ case channelType:
+ fallthrough
+ case logType:
+ fallthrough
+ case portType:
+ fallthrough
+ case vmoType:
+ fallthrough
+ case eventType:
+ fallthrough
+ case socketType:
+ fallthrough
+ case vmarType:
+ return true
+ }
+ return false
+}
+
+// align increases size such that size is aligned to bytes, and returns the new size.
+//
+// bytes must be a power of 2.
+func align(size, bytes int) int {
+ alignmentMask := (bytes - 1)
+ return (size + alignmentMask) & ^alignmentMask
+}
+
+// encoder represents the encoding context that is necessary to maintain across
+// recursive calls within the same FIDL object.
+type encoder struct {
+ // buffer represents the output buffer that the encoder writes into.
+ buffer []byte
+
+ // handleDispositions are the handle dispositions discovered when traversing
+ // the FIDL data structure. They are referenced from within the serialized
+ // data structure in buffer.
+ handleDispositions []zx.HandleDisposition
+}
+
+// Allocate a new out of line object of the specified size for encoding.
+// Returns two values: the starting offset of the new object in the buffer and
+// an error indicating that a new object could not be allocated.
+func (e *encoder) newObject(size, currentDepth int) (int, error) {
+ if currentDepth > maxOutOfLineDepth {
+ return 0, newExpectError(ErrExceededMaxOutOfLineDepth, maxOutOfLineDepth, currentDepth+1)
+ }
+ size = align(size, 8)
+ start := len(e.buffer)
+ e.buffer = append(e.buffer, make([]byte, size)...)
+ return start, nil
+}
+
+// writeUint64 writes a uint64 to the buffer at the next 8-byte aligned position.
+func (e *encoder) writeUint64(offset int, val uint64) {
+ binary.LittleEndian.PutUint64(e.buffer[offset:], val)
+}
+
+// writeUint32 writes a uint32 to the buffer at the next 4-byte aligned position.
+func (e *encoder) writeUint32(offset int, val uint32) {
+ binary.LittleEndian.PutUint32(e.buffer[offset:], val)
+}
+
+// writeUint16 writes a uint16 to the buffer at the next 2-byte aligned position.
+func (e *encoder) writeUint16(offset int, val uint16) {
+ binary.LittleEndian.PutUint16(e.buffer[offset:], val)
+}
+
+// writeUint8 writes a uint8 to the buffer.
+func (e *encoder) writeUint8(offset int, val uint8) {
+ e.buffer[offset] = val
+}
+
+// decoder represents the decoding context that is necessary to maintain
+// across recursive calls within the same FIDL object.
+type decoder struct {
+ // nextObject is the byte index of the next out-of-line object in buffer.
+ nextObject int
+
+ // buffer represents the buffer we're decoding from.
+ buffer []byte
+
+ // handleInfos represents the input untyped handles we're decoding.
+ // These objects contain additional information on rights.
+ handleInfos []zx.HandleInfo
+}
+
+// Allocate a new out of line object of the specified size for decoding.
+// Returns two values: the starting offset of the new object in the buffer and
+// an error indicating that a new object could not be allocated.
+func (d *decoder) newObject(size, currentDepth int) (int, error) {
+ if currentDepth > maxOutOfLineDepth {
+ return 0, newExpectError(ErrExceededMaxOutOfLineDepth, maxOutOfLineDepth, currentDepth+1)
+ }
+ start := d.nextObject
+ d.nextObject += align(size, 8)
+ if d.nextObject > len(d.buffer) {
+ return 0, ErrPayloadTooSmall
+ }
+ return start, nil
+}
+
+// readUint64 reads a uint64 from the buffer.
+func (d *decoder) readUint64(offset int) uint64 {
+ return binary.LittleEndian.Uint64(d.buffer[offset:])
+}
+
+// readUint32 reads a uint32 from the buffer.
+func (d *decoder) readUint32(offset int) uint32 {
+ return binary.LittleEndian.Uint32(d.buffer[offset:])
+}
+
+// readUint16 reads a uint16 from the buffer.
+func (d *decoder) readUint16(offset int) uint16 {
+ return binary.LittleEndian.Uint16(d.buffer[offset:])
+}
+
+// readUint8 reads a uint8 from the buffer.
+func (d *decoder) readUint8(offset int) uint8 {
+ return d.buffer[offset]
+}
diff --git a/src/syscall/zx/fidl/encoding_new.go b/src/syscall/zx/fidl/encoding_new.go
new file mode 100644
index 0000000..0eae4d6
--- /dev/null
+++ b/src/syscall/zx/fidl/encoding_new.go
@@ -0,0 +1,2747 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package fidl
+
+import (
+ "errors"
+ "math"
+ "reflect"
+ "strconv"
+ "strings"
+ "sync"
+ "syscall/zx"
+ "syscall/zx/fidl/internal/unsafevalue"
+ "unicode/utf8"
+ "unsafe"
+)
+
+type strictness bool
+
+const (
+ isFlexible strictness = false
+ isStrict strictness = true
+)
+
+type resourceness bool
+
+const (
+ isResourceType resourceness = true
+ isValueType resourceness = false
+)
+
+// MustCreateMarshaler is like CreateMarshaler but panics if the sample struct
+// cannot be used to create a marshaler. It simplifies safe initialization of
+// global variables holding marshalers.
+func MustCreateMarshaler(sample interface{}) Marshaler {
+ m, err := CreateMarshaler(sample)
+ if err != nil {
+ panic(err)
+ }
+ return m
+}
+
+// CreateMarshaler creates a marshaler from a sample struct.
+func CreateMarshaler(sample interface{}) (Marshaler, error) {
+ typ := reflect.TypeOf(sample)
+ if typ.Kind() == reflect.Ptr {
+ typ = typ.Elem()
+ }
+ if typ.Kind() == reflect.Struct {
+ return createMarshaler(typ)
+ }
+ return nil, errors.New("unable to create marshaler for " + nicefmt(typ))
+}
+
+// CreateMarshaler creates a lazy marshaler from a sample struct. This lazy
+// marshaler initializes its actual delegate marshaler on first use, rather
+// than on creation. As a result, there is no validation on creation, and
+// instead the lazy marshaler will panic on first use if a marshaler
+// cannot be created of the sample provided.
+func CreateLazyMarshaler(sample interface{}) Marshaler {
+ return &lazyMarshaler{
+ sample: sample,
+ }
+}
+
+type lazyMarshaler struct {
+ once sync.Once
+ sample interface{}
+ delegate Marshaler
+}
+
+// Assert that lazyMarshaler implements the Marshaler interface.
+var _ Marshaler = &lazyMarshaler{}
+
+func (m *lazyMarshaler) init() {
+ m.delegate = MustCreateMarshaler(m.sample)
+}
+
+func (m *lazyMarshaler) getMarshalSize(ctx MarshalerContext) int {
+ m.once.Do(m.init)
+ return m.delegate.getMarshalSize(ctx)
+}
+
+func (m *lazyMarshaler) getUnmarshalSize(ctx MarshalerContext) int {
+ m.once.Do(m.init)
+ return m.delegate.getUnmarshalSize(ctx)
+}
+
+func (m *lazyMarshaler) marshal(ctx MarshalerContext, v unsafevalue.Value, out *encoder, offset int, depth int) error {
+ m.once.Do(m.init)
+ return m.delegate.marshal(ctx, v, out, offset, depth)
+}
+
+func (m *lazyMarshaler) unmarshal(ctx MarshalerContext, in *decoder, offset int, depth int, v unsafevalue.Value) error {
+ m.once.Do(m.init)
+ return m.delegate.unmarshal(ctx, in, offset, depth, v)
+}
+
+// Marshal marshals (or encodes) a message into the data and handles slices.
+func Marshal(message Message, data []byte, handleDispositions []zx.HandleDisposition) (int, int, error) {
+ return MarshalWithContext(newCtx(), message, data, handleDispositions)
+}
+
+// Marshal marshals (or encodes) a message into the data and handles slices.
+func MarshalWithContext(ctx MarshalerContext, message Message, data []byte, handleDispositions []zx.HandleDisposition) (int, int, error) {
+ // By construction, we know that message is a pointer to a struct since
+ // we only generate pointer receiver methods for top-level messages.
+ // Should one implement the interface differently, and call into this
+ // code, it would fail in an obscure way withing reflection. Just don't do
+ // that.
+ var (
+ v = unsafevalue.ValueOf(message)
+ m = message.Marshaler()
+ )
+
+ // Now, let's get the value of s, marshal the header into a starting
+ // buffer, and then marshal the rest of the payload in s.
+ out := &encoder{buffer: data[:0], handleDispositions: handleDispositions[:0]}
+ offset, err := out.newObject(m.getMarshalSize(ctx), 0)
+ if err != nil {
+ return 0, 0, err
+ }
+
+ if err := m.marshal(ctx, v, out, offset, 1); err != nil {
+ return 0, 0, err
+ }
+ return len(out.buffer), len(out.handleDispositions), nil
+}
+
+// Unmarshal unmarshals (or decodes) into message using the data and handles
+// slices.
+func Unmarshal(data []byte, handleInfos []zx.HandleInfo, message Message) (int, int, error) {
+ return UnmarshalWithContext2(newCtx(), data, handleInfos, message)
+}
+
+// UnmarshalWithContext2 behaves identically to UnmarshalWithContext but takes a HandleInfo.
+func UnmarshalWithContext2(ctx MarshalerContext, data []byte, handleInfos []zx.HandleInfo, message Message) (int, int, error) {
+ // By construction, we know that message is a pointer to a struct since
+ // we only generate pointer receiver methods for top-level messages.
+ // Should one implement the interface differently, and call into this
+ // code, it would fail in an obscure way withing reflection. Just don't do
+ // that.
+ var (
+ v = unsafevalue.ValueOf(message)
+ m = message.Marshaler()
+ )
+
+ // Get the payload's value and unmarshal it.
+ in := &decoder{
+ buffer: data,
+ handleInfos: handleInfos,
+ }
+
+ offset, err := in.newObject(m.getUnmarshalSize(ctx), 0)
+ if err != nil {
+ return 0, 0, err
+ }
+
+ if err := m.unmarshal(ctx, in, offset, 1, v); err != nil {
+ return 0, 0, err
+ }
+ return in.nextObject, len(handleInfos) - len(in.handleInfos), nil
+}
+
+func UnmarshalWithContext(ctx MarshalerContext, data []byte, handles []zx.Handle, message Message) (int, int, error) {
+ resphi := messageHandleInfosPool.Get().([]zx.HandleInfo)
+ defer messageHandleInfosPool.Put(resphi)
+
+ handleInfos := resphi[:len(handles)]
+ for i, handle := range handles {
+ handleInfos[i] = zx.HandleInfo{
+ Handle: handle,
+ Type: zx.ObjectTypeNone,
+ Rights: zx.RightSameRights,
+ }
+ }
+
+ return UnmarshalWithContext2(ctx, data, handleInfos, message)
+}
+
+const tagSizeV1 = "fidl_size_v1"
+const tagSizeV2 = "fidl_size_v2"
+const tagAlignmentV1 = "fidl_alignment_v1"
+const tagAlignmentV2 = "fidl_alignment_v2"
+const tagOffsetV1 = "fidl_offset_v1"
+const tagOffsetV2 = "fidl_offset_v2"
+const tagHandleRights = "fidl_handle_rights"
+const tagHandleSubtype = "fidl_handle_subtype"
+const tagOrdinal = "fidl_ordinal"
+const tagBounds = "fidl_bounds"
+const tagMarshalerKind = "fidl"
+const tagIsResource = "fidl_resource"
+
+// These rights come from FTP-028
+// (all requests and interfaces have the same handle rights)
+const ProtocolRights = zx.RightTransfer | zx.RightWait | zx.RightInspect | zx.RightWrite | zx.RightRead | zx.RightSignal | zx.RightSignalPeer
+
+type tagKind int
+
+const (
+ _ = iota
+ structTag tagKind = iota
+ xunionTag
+ strictXunionTag
+ tableTag
+)
+
+type bounds []int
+
+func (b bounds) pop() (int, []int) {
+ if len(b) == 0 {
+ return math.MaxInt32, nil
+ }
+ return b[0], b[1:]
+}
+
+func nicefmt(typ reflect.Type) string {
+ typKindName := typ.Kind().String()
+ if typName := typ.Name(); len(typName) != 0 {
+ return typName + " (" + typKindName + ")"
+ }
+ return typKindName
+}
+
+// Extracts a list of fields for struct, union, table types that can be used
+// for iterating.
+// This skips the initial tag field.
+func dataFields(typ reflect.Type) []reflect.StructField {
+ if typ.Kind() != reflect.Struct {
+ panic("expected struct")
+ }
+ if name := typ.Field(0).Name; name != "_" && !strings.HasPrefix(name, "I_") {
+ panic("expected first field to be a metadata field")
+ }
+ fields := make([]reflect.StructField, typ.NumField()-1)
+ for i := range fields {
+ fields[i] = typ.Field(i + 1)
+ }
+ return fields
+}
+
+// Identifies the fields in a union that store unknown data, and that therefore
+// do not need to have a field marshaler created
+func isUnknownDataField(fieldName string) bool {
+ return fieldName == "I_unknownData"
+}
+
+// Returns true if the go type has the same layout as the FIDL wire format.
+func matchesWireFormatLayout(marshaler Marshaler, typ reflect.Type) bool {
+ switch marshaler := marshaler.(type) {
+ case *mBool:
+ // Need to validate 0, 1.
+ return false
+ case *mInt8, *mInt16, *mInt32, *mInt64, *mUint8, *mUint16, *mUint32, *mUint64:
+ return true
+ case *mEnumOfInt8, *mEnumOfInt16, *mEnumOfInt32, *mEnumOfInt64:
+ // Need to validate.
+ return false
+ case *mEnumOfUint8, *mEnumOfUint16, *mEnumOfUint32, *mEnumOfUint64:
+ // Need to validate.
+ return false
+ case *mBitsOfUint8, *mBitsOfUint16, *mBitsOfUint32, *mBitsOfUint64:
+ // Need to validate.
+ return false
+ case *mFloat32:
+ // Need to validate.
+ return false
+ case *mFloat64:
+ // Need to validate.
+ return false
+ case *mArray:
+ return matchesWireFormatLayout(marshaler.Marshaler, typ.Elem())
+ case *mStruct:
+ // Note: In some cases, go structs may be different size than wire format
+ // structs but otherwise identical. It may be possible to change this
+ // logic to allow a partial copy in the future.
+ if marshaler.useUnsafeCopy {
+ return true
+ }
+ if marshaler.sizeV1 != int(typ.Size()) {
+ return false
+ }
+ if marshaler.sizeV2 != int(typ.Size()) {
+ return false
+ }
+ if marshaler.alignmentV1 != typ.Align() {
+ return false
+ }
+ if marshaler.alignmentV2 != typ.Align() {
+ return false
+ }
+ for i, rField := range dataFields(typ) {
+ field := marshaler.fields[i]
+ if field.offset != rField.Offset {
+ return false
+ }
+ if !matchesWireFormatLayout(field.Marshaler, rField.Type) {
+ return false
+ }
+ }
+ return true
+ case *mEmptyStruct:
+ // Note: empty struct is 0 or 1 bytes at different times in go.
+ return false
+ case *mHandle, *mProtocol:
+ // Note: In the future, we might instead consider treating handles
+ // like uint32 and decoding in a subsequent step.
+ return false
+ case *mXUnion, *mOptXUnion, *mTable, *mVector, *mOptVector, *mString, *mOptString, *mPointer:
+ return false
+ default:
+ panic("unhandledType " + reflect.TypeOf(marshaler).Name() + " for " + typ.String())
+ }
+}
+
+type creator struct {
+ interns map[reflect.Type]Marshaler
+}
+
+func createMarshaler(typ reflect.Type) (Marshaler, error) {
+ c := &creator{
+ interns: map[reflect.Type]Marshaler{},
+ }
+ return c.createMarshalerForStruct(typ)
+}
+
+func (c *creator) createMarshalerForStruct(typ reflect.Type) (Marshaler, error) {
+ if seen, ok := c.interns[typ]; ok {
+ return seen, nil
+ }
+
+ // field 0 holds the tag
+ tagField := typ.Field(0)
+ marshalerKind, err := readKindTag(tagField)
+ if err != nil {
+ return nil, err
+ }
+
+ var (
+ kind = marshalerKind
+ fields []mField
+ ordinals []uint64
+ wireOffsetsV1 []int
+ wireOffsetsV2 []int
+ presenceOffsets []uintptr
+ )
+
+ df := dataFields(typ)
+ var out Marshaler
+ switch kind {
+ case structTag:
+ if len(df) == 0 {
+ return &mEmptyStruct{}, nil
+ }
+ out = &mStruct{}
+ case xunionTag, strictXunionTag:
+ out = &mXUnion{}
+ case tableTag:
+ out = &mTable{}
+ default:
+ return nil, errors.New("unknown kind tag on " + nicefmt(typ))
+ }
+ c.interns[typ] = out
+
+ // - structs, unions, and xunions have fields one after the other;
+ // - tables have a field, followed by a bool presence indicator, etc.
+ for index, field := range df {
+ if (kind == xunionTag || kind == tableTag) && isUnknownDataField(field.Name) {
+ continue
+ }
+
+ if kind == tableTag && index%2 == 0 {
+ // Presence field
+ if field.Type.Kind() != reflect.Bool {
+ return nil, errors.New("incorrect presence field on " + nicefmt(typ))
+ }
+ presenceOffsets = append(presenceOffsets, field.Offset)
+ continue
+ }
+
+ fieldBounds := readBoundsTag(field)
+ handleRights, handleSubtype, err := readHandleRightsAndSubtype(field)
+ if err != nil {
+ return nil, err
+ }
+ switch kind {
+ case structTag:
+ offsetV1, err := readIntTag(field, tagOffsetV1)
+ if err != nil {
+ return nil, err
+ }
+ wireOffsetsV1 = append(wireOffsetsV1, offsetV1)
+ offsetV2, err := readIntTag(field, tagOffsetV2)
+ if err != nil {
+ return nil, err
+ }
+ wireOffsetsV2 = append(wireOffsetsV2, offsetV2)
+ case xunionTag, strictXunionTag, tableTag:
+ ordinal := readOrdinalTag(field)
+ ordinals = append(ordinals, uint64(ordinal))
+ default:
+ }
+ fieldMarshaler, err := c.createMarshalerForField(field.Type, fieldBounds, handleRights, handleSubtype)
+ if err != nil {
+ return nil, err
+ }
+ fields = append(fields, mField{fieldMarshaler, field.Index[0], field.Offset})
+ }
+
+ sizeV1, err := readIntTag(tagField, tagSizeV1)
+ if err != nil {
+ return nil, errors.New("error creating marshaller for " + typ.String() + ": " + err.Error())
+ }
+ sizeV2, err := readIntTag(tagField, tagSizeV2)
+ if err != nil {
+ return nil, errors.New("error creating marshaller for " + typ.String() + ": " + err.Error())
+ }
+ alignmentV1, err := readIntTag(tagField, tagAlignmentV1)
+ if err != nil {
+ return nil, errors.New("error creating marshaller for " + typ.String() + ": " + err.Error())
+ }
+ alignmentV2, err := readIntTag(tagField, tagAlignmentV2)
+ if err != nil {
+ return nil, errors.New("error creating marshaller for " + typ.String() + ": " + err.Error())
+ }
+
+ switch m := out.(type) {
+ case *mStruct:
+ var structFields []mFieldWithWireOffset
+ for i := 0; i < len(fields); i++ {
+ structFields = append(structFields, mFieldWithWireOffset{
+ mField: fields[i],
+ wireOffsetV1: wireOffsetsV1[i],
+ wireOffsetV2: wireOffsetsV2[i],
+ })
+ }
+ m.fields = structFields
+ m.sizeV1 = sizeV1
+ m.sizeV2 = sizeV2
+ m.alignmentV1 = alignmentV1
+ m.alignmentV2 = alignmentV2
+ m.useUnsafeCopy = matchesWireFormatLayout(m, typ)
+ if m.useUnsafeCopy {
+ m.fields = nil
+ }
+ return m, nil
+ case *mXUnion:
+ strictness := strictness(kind == strictXunionTag)
+ isResource, err := readBoolTag(tagField, tagIsResource)
+ if err != nil {
+ return nil, errors.New("error creating marshaller for " + typ.String() + ": " + err.Error())
+ }
+
+ ordinalToFields := make(map[uint64]mField)
+ for i := 0; i < len(fields); i++ {
+ ordinalToFields[ordinals[i]] = fields[i]
+ }
+ m.typ = typ
+ m.fields = ordinalToFields
+ m.ordinals = ordinals
+ m.sizeV1 = sizeV1
+ m.sizeV2 = sizeV2
+ m.alignmentV1 = alignmentV1
+ m.alignmentV2 = alignmentV2
+ m.strictness = strictness
+ m.resourceness = resourceness(isResource)
+ return m, nil
+ case *mTable:
+ isResource, err := readBoolTag(tagField, tagIsResource)
+ if err != nil {
+ return nil, errors.New("error creating marshaller for " + typ.String() + ": " + err.Error())
+ }
+ if sizeV1 != sizeV2 || alignmentV1 != alignmentV2 {
+ panic("expected table size to be unchanged between v1 and v2")
+ }
+
+ m.fields = fields
+ m.presenceOffsets = presenceOffsets
+ m.size = sizeV1
+ m.alignment = alignmentV1
+ m.ordinals = ordinals
+ m.resourceness = resourceness(isResource)
+ return m, nil
+ default:
+ return nil, errors.New("unknown kind tag on " + nicefmt(typ))
+ }
+}
+
+func readKindTag(field reflect.StructField) (tagKind, error) {
+ content, ok := field.Tag.Lookup(tagMarshalerKind)
+ if !ok {
+ return 0, errors.New(tagMarshalerKind + " not found on field " + field.Name)
+ }
+ switch content {
+ case "s":
+ return structTag, nil
+ case "x":
+ return xunionTag, nil
+ case "x!":
+ return strictXunionTag, nil
+ case "t":
+ return tableTag, nil
+ default:
+ return 0, errors.New("unknown kind tag: " + content)
+ }
+}
+
+func readHandleRightsAndSubtype(field reflect.StructField) (zx.Rights, zx.ObjectType, error) {
+ if !containsHandleType(field.Type) {
+ // Skip non-handle field types and don't return an error.
+ return zx.RightSameRights, zx.ObjectTypeNone, nil
+ }
+
+ // Read handle rights
+ val, ok := field.Tag.Lookup(tagHandleRights)
+ if !ok {
+ return zx.RightSameRights, zx.ObjectTypeNone, ErrUnspecifiedHandleRights
+ }
+ rights, err := strconv.ParseInt(val, 0, 64)
+ if err != nil {
+ return zx.RightSameRights, zx.ObjectTypeNone, err
+ }
+ convertedRights := zx.Rights(rights)
+
+ // Read handle subtype
+ val, ok = field.Tag.Lookup(tagHandleSubtype)
+ if !ok {
+ return zx.RightSameRights, zx.ObjectTypeNone, ErrUnspecifiedHandleType
+ }
+ subtype, err := strconv.ParseInt(val, 0, 64)
+ if err != nil {
+ return zx.RightSameRights, zx.ObjectTypeNone, err
+ }
+ convertedSubtype := zx.ObjectType(subtype)
+
+ return convertedRights, convertedSubtype, nil
+}
+
+func containsHandleType(typ reflect.Type) bool {
+ // Protocols and requests are technically handle types but their rights /
+ // subtypes are handled elsewhere.
+ if typ.ConvertibleTo(proxyType) || typ.ConvertibleTo(interfaceRequestType) {
+ return false
+ }
+ if isHandleType(typ) {
+ return true
+ }
+ if typ.Kind() == reflect.Slice || typ.Kind() == reflect.Array || typ.Kind() == reflect.Ptr {
+ return containsHandleType(typ.Elem())
+ }
+ return false
+}
+
+func readOrdinalTag(field reflect.StructField) int {
+ ordinal, err := readIntTag(field, tagOrdinal)
+ if err != nil {
+ return math.MaxInt32
+ }
+ return ordinal
+}
+
+func readBoundsTag(field reflect.StructField) bounds {
+ content, ok := field.Tag.Lookup(tagBounds)
+ if !ok {
+ return nil
+ }
+
+ var nums []int
+ for _, elem := range strings.Split(content, ",") {
+ var (
+ num = math.MaxInt32
+ err error
+ )
+ if len(elem) != 0 {
+ num, err = strconv.Atoi(elem)
+ if err != nil {
+ panic(elem + ": " + err.Error())
+ }
+ }
+ nums = append(nums, num)
+ }
+ return bounds(nums)
+}
+
+func readBoolTag(field reflect.StructField, tagKey string) (bool, error) {
+ content, ok := field.Tag.Lookup(tagKey)
+ if !ok {
+ return false, errors.New(tagKey + " not found on field " + field.Name)
+ }
+ res, err := strconv.ParseBool(content)
+ if err != nil {
+ return false, errors.New("error parsing bool body from tag " + tagKey + " " + err.Error())
+ }
+ return res, nil
+}
+
+func readIntTag(field reflect.StructField, tagKey string) (int, error) {
+ content, ok := field.Tag.Lookup(tagKey)
+ if !ok {
+ return 0, errors.New(tagKey + " not found on field " + field.Name)
+ }
+ res, err := strconv.ParseInt(content, 0, 64)
+ if err != nil {
+ return 0, errors.New("error parsing int body from tag " + tagKey + " " + err.Error())
+ }
+ return int(res), nil
+}
+
+func readHandleRightsTag(field reflect.StructField) (zx.Rights, error) {
+ val, ok := field.Tag.Lookup(tagHandleRights)
+ if !ok {
+ return zx.RightSameRights, nil
+ }
+ rights, err := strconv.ParseInt(val, 0, 64)
+ if err != nil {
+ return zx.RightSameRights, err
+ }
+ convertedRights := zx.Rights(rights)
+ return convertedRights, nil
+}
+
+func toInt8Map(values reflect.Value) map[int8]struct{} {
+ m := make(map[int8]struct{})
+ for i := 0; i < values.Len(); i++ {
+ value := values.Index(i)
+ m[int8(value.Int())] = struct{}{}
+ }
+ return m
+}
+
+func toInt16Map(values reflect.Value) map[int16]struct{} {
+ m := make(map[int16]struct{})
+ for i := 0; i < values.Len(); i++ {
+ value := values.Index(i)
+ m[int16(value.Int())] = struct{}{}
+ }
+ return m
+}
+func toInt32Map(values reflect.Value) map[int32]struct{} {
+ m := make(map[int32]struct{})
+ for i := 0; i < values.Len(); i++ {
+ value := values.Index(i)
+ m[int32(value.Int())] = struct{}{}
+ }
+ return m
+}
+func toInt64Map(values reflect.Value) map[int64]struct{} {
+ m := make(map[int64]struct{})
+ for i := 0; i < values.Len(); i++ {
+ value := values.Index(i)
+ m[int64(value.Int())] = struct{}{}
+ }
+ return m
+}
+
+func toUint8Map(values reflect.Value) map[uint8]struct{} {
+ m := make(map[uint8]struct{})
+ for i := 0; i < values.Len(); i++ {
+ value := values.Index(i)
+ m[uint8(value.Uint())] = struct{}{}
+ }
+ return m
+}
+func toUint16Map(values reflect.Value) map[uint16]struct{} {
+ m := make(map[uint16]struct{})
+ for i := 0; i < values.Len(); i++ {
+ value := values.Index(i)
+ m[uint16(value.Uint())] = struct{}{}
+ }
+ return m
+}
+func toUint32Map(values reflect.Value) map[uint32]struct{} {
+ m := make(map[uint32]struct{})
+ for i := 0; i < values.Len(); i++ {
+ value := values.Index(i)
+ m[uint32(value.Uint())] = struct{}{}
+ }
+ return m
+}
+func toUint64Map(values reflect.Value) map[uint64]struct{} {
+ m := make(map[uint64]struct{})
+ for i := 0; i < values.Len(); i++ {
+ value := values.Index(i)
+ m[uint64(value.Uint())] = struct{}{}
+ }
+ return m
+}
+
+func (c *creator) createMarshalerForField(typ reflect.Type, bounds bounds, handleRights zx.Rights, handleSubtype zx.ObjectType) (Marshaler, error) {
+ if isHandleType(typ) {
+ nullable, _ := bounds.pop()
+ return &mHandle{nullable: nullable != 0, rights: handleRights, subtype: handleSubtype}, nil
+ }
+
+ if typ.ConvertibleTo(proxyType) || typ.ConvertibleTo(interfaceRequestType) {
+ nullable, _ := bounds.pop()
+ return &mProtocol{
+ nullable: nullable != 0,
+ rights: ProtocolRights,
+ subtype: zx.ObjectTypeChannel}, nil
+ }
+
+ if m, ok := typ.MethodByName("I_EnumValues"); ok {
+ values := m.Func.Call([]reflect.Value{reflect.Zero(typ)})[0]
+ var isStrict bool
+ if m, ok := typ.MethodByName("I_EnumIsStrict"); ok {
+ isStrict = m.Func.Call([]reflect.Value{reflect.Zero(typ)})[0].Interface().(bool)
+ } else {
+ return nil, errors.New("unable to create field marshaler for enum of " + nicefmt(typ) + ", missing I_EnumIsStrict method")
+ }
+ switch typ.Kind() {
+ case reflect.Int8:
+ return &mEnumOfInt8{
+ isStrict: isStrict,
+ values: toInt8Map(values),
+ }, nil
+ case reflect.Int16:
+ return &mEnumOfInt16{
+ isStrict: isStrict,
+ values: toInt16Map(values),
+ }, nil
+ case reflect.Int32:
+ return &mEnumOfInt32{
+ isStrict: isStrict,
+ values: toInt32Map(values),
+ }, nil
+ case reflect.Int64:
+ return &mEnumOfInt64{
+ isStrict: isStrict,
+ values: toInt64Map(values),
+ }, nil
+ case reflect.Uint8:
+ return &mEnumOfUint8{
+ isStrict: isStrict,
+ values: toUint8Map(values),
+ }, nil
+ case reflect.Uint16:
+ return &mEnumOfUint16{
+ isStrict: isStrict,
+ values: toUint16Map(values),
+ }, nil
+ case reflect.Uint32:
+ return &mEnumOfUint32{
+ isStrict: isStrict,
+ values: toUint32Map(values),
+ }, nil
+ case reflect.Uint64:
+ return &mEnumOfUint64{
+ isStrict: isStrict,
+ values: toUint64Map(values),
+ }, nil
+ default:
+ return nil, errors.New("unable to create field marshaler for enum of " + nicefmt(typ))
+ }
+ }
+
+ if m, ok := typ.MethodByName("I_BitsMask"); ok {
+ mask := m.Func.Call([]reflect.Value{reflect.Zero(typ)})[0]
+ var isStrict bool
+ if m, ok := typ.MethodByName("I_BitsIsStrict"); ok {
+ isStrict = m.Func.Call([]reflect.Value{reflect.Zero(typ)})[0].Interface().(bool)
+ } else {
+ return nil, errors.New("unable to create field marshaler for bits of " + nicefmt(typ) + ", missing I_BitsIsStrict method")
+ }
+ switch typ.Kind() {
+ case reflect.Uint8:
+ return &mBitsOfUint8{
+ isStrict: isStrict,
+ mask: uint8(mask.Uint()),
+ }, nil
+ case reflect.Uint16:
+ return &mBitsOfUint16{
+ isStrict: isStrict,
+ mask: uint16(mask.Uint()),
+ }, nil
+ case reflect.Uint32:
+ return &mBitsOfUint32{
+ isStrict: isStrict,
+ mask: uint32(mask.Uint()),
+ }, nil
+ case reflect.Uint64:
+ return &mBitsOfUint64{
+ isStrict: isStrict,
+ mask: uint64(mask.Uint()),
+ }, nil
+ default:
+ return nil, errors.New("unable to create field marshaler for bits of " + nicefmt(typ))
+ }
+ }
+
+ switch typ.Kind() {
+ case reflect.Bool:
+ return &mBool{}, nil
+ case reflect.Int8:
+ return &mInt8{}, nil
+ case reflect.Int16:
+ return &mInt16{}, nil
+ case reflect.Int32:
+ return &mInt32{}, nil
+ case reflect.Int64:
+ return &mInt64{}, nil
+ case reflect.Uint8:
+ return &mUint8{}, nil
+ case reflect.Uint16:
+ return &mUint16{}, nil
+ case reflect.Uint32:
+ return &mUint32{}, nil
+ case reflect.Uint64:
+ return &mUint64{}, nil
+ case reflect.Float32:
+ return &mFloat32{}, nil
+ case reflect.Float64:
+ return &mFloat64{}, nil
+ case reflect.String:
+ maxSize, _ := bounds.pop()
+ s := mString(maxSize)
+ return &s, nil
+ case reflect.Array:
+ elemMarshaler, err := c.createMarshalerForField(typ.Elem(), bounds, handleRights, handleSubtype)
+ if err != nil {
+ return nil, err
+ }
+ return &mArray{
+ Marshaler: elemMarshaler,
+ size: typ.Len(),
+ rtElemSize: typ.Elem().Size(),
+ }, nil
+ case reflect.Slice:
+ maxSize, remainder := bounds.pop()
+ elemTyp := typ.Elem()
+ elemMarshaler, err := c.createMarshalerForField(elemTyp, remainder, handleRights, handleSubtype)
+ if err != nil {
+ return nil, err
+ }
+ return &mVector{
+ Marshaler: elemMarshaler,
+ maxSize: maxSize,
+ elemTyp: elemTyp,
+ useUnsafeCopy: matchesWireFormatLayout(elemMarshaler, elemTyp),
+ }, nil
+ case reflect.Struct:
+ return c.createMarshalerForStruct(typ)
+ case reflect.Ptr:
+ return c.createOptMarshalerForField(typ.Elem(), bounds, handleRights, handleSubtype)
+ default:
+ return nil, errors.New("unable to create field marshaler for " + nicefmt(typ))
+ }
+}
+
+func (c *creator) createOptMarshalerForField(typ reflect.Type, bounds bounds, handleRights zx.Rights, handleSubtype zx.ObjectType) (Marshaler, error) {
+ m, err := c.createMarshalerForField(typ, bounds, handleRights, handleSubtype)
+ if err != nil {
+ return nil, err
+ }
+ switch m := m.(type) {
+ case *mString:
+ o := mOptString(*m)
+ return &o, nil
+ case *mEmptyStruct:
+ return &mPointer{
+ Marshaler: m,
+ elemTyp: typ,
+ }, nil
+ case *mStruct:
+ return &mPointer{
+ Marshaler: m,
+ elemTyp: typ,
+ }, nil
+ case *mVector:
+ return &mOptVector{
+ mVector: m,
+ sliceTyp: typ,
+ }, nil
+ case *mXUnion:
+ return &mOptXUnion{
+ mXUnion: m,
+ typ: typ,
+ }, nil
+ default:
+ return nil, errors.New("unable to create optional field marshaler for " + nicefmt(typ))
+ }
+}
+
+// Message is implemented by any value that represents a FIDL message.
+type Message interface {
+ Marshaler() Marshaler
+}
+
+type Marshaler interface {
+ // Marshal and unmarshal sizes can be different because they can be context dependent.
+ // e.g. it is possible to write a new format but still read the old format
+ getMarshalSize(ctx MarshalerContext) int
+ getUnmarshalSize(ctx MarshalerContext) int
+ marshal(ctx MarshalerContext, v unsafevalue.Value, out *encoder, offset int, depth int) error
+ unmarshal(ctx MarshalerContext, in *decoder, offset int, depth int, v unsafevalue.Value) error
+}
+
+// Assert various encoders implement the Marshaler interface.
+var _ = []Marshaler{
+ (*mString)(nil),
+ (*mOptString)(nil),
+ (*mBool)(nil),
+ (*mInt8)(nil),
+ (*mInt16)(nil),
+ (*mInt32)(nil),
+ (*mInt64)(nil),
+ (*mUint8)(nil),
+ (*mUint16)(nil),
+ (*mUint32)(nil),
+ (*mUint64)(nil),
+ (*mFloat32)(nil),
+ (*mFloat64)(nil),
+ (*mEmptyStruct)(nil),
+ (*mStruct)(nil),
+ (*mXUnion)(nil),
+ (*mOptXUnion)(nil),
+ (*mTable)(nil),
+ (*mPointer)(nil),
+ (*mArray)(nil),
+ (*mVector)(nil),
+ (*mOptVector)(nil),
+ (*mEnumOfInt8)(nil),
+ (*mEnumOfInt16)(nil),
+ (*mEnumOfInt32)(nil),
+ (*mEnumOfInt64)(nil),
+ (*mEnumOfUint8)(nil),
+ (*mEnumOfUint16)(nil),
+ (*mEnumOfUint32)(nil),
+ (*mEnumOfUint64)(nil),
+ (*mBitsOfUint8)(nil),
+ (*mBitsOfUint16)(nil),
+ (*mBitsOfUint32)(nil),
+ (*mBitsOfUint64)(nil),
+}
+
+type mField struct {
+ Marshaler
+ index int
+ offset uintptr
+}
+
+type mFieldWithWireOffset struct {
+ mField
+ wireOffsetV1 int
+ wireOffsetV2 int
+}
+
+type mStruct struct {
+ fields []mFieldWithWireOffset
+ sizeV1, sizeV2, alignmentV1, alignmentV2 int
+ useUnsafeCopy bool
+}
+
+func (m *mStruct) getMarshalSize(ctx MarshalerContext) int {
+ return m.sizeV1
+}
+
+func (m *mStruct) getUnmarshalSize(ctx MarshalerContext) int {
+ if ctx.isV2WireFormatDecodingEnabled() {
+ return m.sizeV2
+ }
+ return m.sizeV1
+}
+
+func (m *mStruct) marshal(ctx MarshalerContext, v unsafevalue.Value, out *encoder, offset int, depth int) error {
+ if m.useUnsafeCopy {
+ // Directly copy the object's memory to the buffer.
+ sh := reflect.SliceHeader{
+ Data: uintptr(unsafe.Pointer(v.UnsafeAddr())),
+ Len: m.sizeV1,
+ Cap: m.sizeV1,
+ }
+ s := *(*[]uint8)(unsafe.Pointer(&sh))
+ copy(out.buffer[offset:], s)
+ return nil
+ }
+
+ for _, field := range m.fields {
+ fieldOffset := offset + field.wireOffsetV1
+ if err := field.Marshaler.marshal(ctx, v.StructFieldOffset(field.offset), out, fieldOffset, depth); err != nil {
+ return err
+ }
+ }
+ return nil
+}
+
+func (m *mStruct) unmarshal(ctx MarshalerContext, in *decoder, offset int, depth int, v unsafevalue.Value) error {
+ if m.useUnsafeCopy {
+ size := m.getUnmarshalSize(ctx)
+ // Directly copy from the buffer to the object's memory.
+ if len(in.buffer) < offset+size {
+ return ErrPayloadTooSmall
+ }
+ sh := reflect.SliceHeader{
+ Data: uintptr(unsafe.Pointer(v.UnsafeAddr())),
+ Len: size,
+ Cap: size,
+ }
+ s := *(*[]uint8)(unsafe.Pointer(&sh))
+ copy(s, in.buffer[offset:])
+ return nil
+ }
+
+ for _, field := range m.fields {
+ fieldOffset := offset
+ if ctx.isV2WireFormatDecodingEnabled() {
+ fieldOffset += field.wireOffsetV2
+ } else {
+ fieldOffset += field.wireOffsetV1
+ }
+ if err := field.Marshaler.unmarshal(ctx, in, fieldOffset, depth, v.StructFieldOffset(field.offset)); err != nil {
+ return err
+ }
+ }
+ return nil
+}
+
+type mEmptyStruct struct{}
+
+func (_ *mEmptyStruct) getMarshalSize(ctx MarshalerContext) int {
+ return 1
+}
+
+func (_ *mEmptyStruct) getUnmarshalSize(ctx MarshalerContext) int {
+ return 1
+}
+
+func (_ *mEmptyStruct) marshal(ctx MarshalerContext, v unsafevalue.Value, out *encoder, offset int, depth int) error {
+ out.writeUint8(offset, 0)
+ return nil
+}
+
+func (_ *mEmptyStruct) unmarshal(ctx MarshalerContext, in *decoder, offset int, depth int, v unsafevalue.Value) error {
+ if structByte := in.readUint8(offset); structByte != 0 {
+ return newValueError(ErrInvalidEmptyStruct, structByte)
+ }
+
+ return nil
+}
+
+// closeHandles closes all the handles in the provided slice, ignoring any
+// errors (best effort)
+func closeHandles(handles []zx.HandleInfo) {
+ for i := range handles {
+ _ = handleClose(&handles[i].Handle)
+ }
+}
+
+type mXUnion struct {
+ typ reflect.Type
+ fields map[uint64]mField
+ ordinals []uint64
+ sizeV1, sizeV2, alignmentV1, alignmentV2 int
+ strictness
+ resourceness
+}
+
+func (m *mXUnion) getMarshalSize(ctx MarshalerContext) int {
+ return m.sizeV1
+}
+
+func (m *mXUnion) getUnmarshalSize(ctx MarshalerContext) int {
+ if ctx.isV2WireFormatDecodingEnabled() {
+ return m.sizeV2
+ }
+ return m.sizeV1
+}
+
+func (m *mXUnion) marshal(ctx MarshalerContext, v unsafevalue.Value, out *encoder, offset int, depth int) error {
+ var ordinal uint64
+ ordinal = v.StructFieldOffset(0).Uint64()
+ field, ok := m.fields[ordinal]
+ out.writeUint64(offset, ordinal)
+ if !ok {
+ if m.strictness == isStrict {
+ return newValueError(ErrInvalidXUnionTag, ordinal)
+ }
+
+ fld, fldOk := m.typ.FieldByName("I_unknownData")
+ if !fldOk {
+ return errorf("internal error (no unknown field found in flexible union to encode)")
+ }
+ rawUnknownData := v.StructFieldOffset(fld.Offset).Interface()
+ unknownData, ok := rawUnknownData.(UnknownData)
+ if !ok {
+ return errorf("internal error (unexpected union I_unknownData type {})", rawUnknownData)
+ }
+ if len(unknownData.Handles) > 0 && m.resourceness == isValueType {
+ closeHandles(unknownData.Handles)
+ return ErrValueTypeHandles
+ }
+ err := marshalEnvelopeUnknown(
+ out,
+ offset+8,
+ depth,
+ unknownData.Bytes,
+ unknownData.Handles,
+ )
+ if err != nil {
+ return err
+ }
+ return nil
+ }
+
+ // Field.
+ if err := marshalEnvelopePresent(ctx, field, v.StructFieldOffset(field.offset), out, offset+8, depth); err != nil {
+ return err
+ }
+
+ return nil
+}
+
+func (m *mXUnion) unmarshal(ctx MarshalerContext, in *decoder, offset int, depth int, v unsafevalue.Value) error {
+ return m.unmarshalWithOptSpecified(ctx, in, offset, depth, v, nil)
+}
+
+func (m *mXUnion) unmarshalWithOptSpecified(ctx MarshalerContext, in *decoder, offset int, depth int, v unsafevalue.Value, typ reflect.Type) error {
+ // Can this envelope be optional? If it can, the type must be provided
+ // in order to reflectively create a pointer container.
+ optAllowed := typ != nil
+
+ ordinal := in.readUint64(offset)
+
+ // ordinal=0 indicates that there MUST be no envelope.
+ if ordinal == 0 {
+ if !optAllowed {
+ return newValueError(ErrInvalidXUnionTag, ordinal)
+ }
+
+ h, err := unmarshalEnvelopeHeader(ctx, in, offset+8)
+ if err != nil {
+ return err
+ }
+
+ if h.isPresent(ctx) {
+ return newValueError(ErrInvalidXUnionTag, ordinal)
+ }
+
+ return nil
+ }
+
+ // If we reach here, ordinal != 0.
+ field, ok := m.fields[ordinal]
+ if !ok {
+ v.StructFieldOffset(0).SetUint64(ordinal)
+
+ bytes, handles, err := unmarshalEnvelopeUnknown(ctx, in, offset+8, depth)
+ if err != nil {
+ return err
+ }
+ if m.strictness == isStrict {
+ closeHandles(handles)
+ return newValueError(ErrInvalidXUnionTag, ordinal)
+ }
+ if len(handles) > 0 && m.resourceness == isValueType {
+ closeHandles(handles)
+ return ErrValueTypeHandles
+ }
+ fld, ok := m.typ.FieldByName("I_unknownData")
+ if !ok {
+ return errorf("internal error (no unknown field found in flexible union to decode into)")
+ }
+ v.StructFieldOffset(fld.Offset).SetInterface(UnknownData{
+ Bytes: bytes,
+ Handles: handles,
+ })
+ return nil
+ }
+
+ if optAllowed {
+ v.PointerSetNew(m.typ)
+ v = v.PointerElem()
+ }
+
+ ordinalOrFieldIndex := ordinal
+ v.StructFieldOffset(0).SetUint64(ordinalOrFieldIndex)
+
+ var mode unmarshalEnvelopeMode
+ if optAllowed {
+ mode = knownMayBeAbsent
+ } else {
+ mode = knownMustBePresent
+ }
+
+ isPresent, err := unmarshalEnvelope(ctx, field.Marshaler, in, offset+8, depth, v.StructFieldOffset(field.offset), mode)
+ if err != nil {
+ return err
+ }
+
+ if !isPresent {
+ v.PointerSetNil()
+ }
+
+ return nil
+}
+
+type mOptXUnion struct {
+ *mXUnion
+ typ reflect.Type
+}
+
+func (m *mOptXUnion) getMarshalSize(ctx MarshalerContext) int {
+ return m.mXUnion.getMarshalSize(ctx)
+}
+
+func (m *mOptXUnion) getUnmarshalSize(ctx MarshalerContext) int {
+ return m.mXUnion.getUnmarshalSize(ctx)
+}
+
+func (m *mOptXUnion) marshal(ctx MarshalerContext, v unsafevalue.Value, out *encoder, offset int, depth int) error {
+ if v.PointerIsNil() {
+ out.writeUint64(offset, 0) // ordinal + padding
+ marshalEnvelopeAbsent(out, offset+8)
+ return nil
+ } else {
+ return m.mXUnion.marshal(ctx, v.PointerElem(), out, offset, depth)
+ }
+}
+
+func (m *mOptXUnion) unmarshal(ctx MarshalerContext, in *decoder, offset int, depth int, v unsafevalue.Value) error {
+ return m.unmarshalWithOptSpecified(ctx, in, offset, depth, v, m.typ)
+}
+
+// This assumes that I_unknownData in tables is always the first non-zero
+// sized member.
+const unknownTableDataOffset = 0
+
+type mTable struct {
+ typ reflect.Type
+ fields []mField
+ presenceOffsets []uintptr
+ ordinals []uint64
+ size, alignment int
+ resourceness
+}
+
+func (m *mTable) getMarshalSize(ctx MarshalerContext) int {
+ return m.size
+}
+
+func (m *mTable) getUnmarshalSize(ctx MarshalerContext) int {
+ return m.size
+}
+
+const envelopeSize = 16
+
+type envelopeHeader struct {
+ byteValue []byte
+ byteCount uint32
+ handleCount uint32
+ isInline bool
+}
+
+func (h envelopeHeader) isPresent(ctx MarshalerContext) bool {
+ if h.isInline {
+ return true
+ }
+ return h.byteCount != 0 || h.handleCount != 0
+}
+
+func marshalEnvelopePresent(ctx MarshalerContext, m Marshaler, v unsafevalue.Value, out *encoder, offset int, depth int) error {
+ numHandleDispositions := len(out.handleDispositions)
+ numBytes := len(out.buffer)
+
+ outOfLineOffset, err := out.newObject(m.getMarshalSize(ctx), depth)
+ if err != nil {
+ return err
+ }
+
+ if err := m.marshal(ctx, v, out, outOfLineOffset, depth+1); err != nil {
+ return err
+ }
+ numHandleDispositions = len(out.handleDispositions) - numHandleDispositions
+ numBytes = len(out.buffer) - numBytes
+ out.writeUint32(offset, uint32(numBytes))
+ out.writeUint32(offset+4, uint32(numHandleDispositions))
+ out.writeUint64(offset+8, allocPresent)
+ return nil
+}
+
+func marshalEnvelopeAbsent(out *encoder, offset int) {
+ out.writeUint64(offset, 0) // both numBytes, and numHandleDispositions
+ out.writeUint64(offset+8, noAlloc)
+}
+
+func marshalEnvelopeUnknown(out *encoder, offset int, depth int, unknownData []byte, unknownHandles []zx.HandleInfo) error {
+ outOfLineOffset, err := out.newObject(len(unknownData), depth)
+ if err != nil {
+ return err
+ }
+
+ copy(out.buffer[outOfLineOffset:], unknownData)
+ for _, info := range unknownHandles {
+ out.handleDispositions = append(out.handleDispositions, zx.HandleDisposition{
+ Operation: zx.HandleOpMove,
+ Handle: info.Handle,
+ Type: info.Type,
+ Rights: info.Rights,
+ Result: zx.ErrOk,
+ })
+ }
+ out.writeUint32(offset, uint32(len(unknownData)))
+ out.writeUint32(offset+4, uint32(len(unknownHandles)))
+ out.writeUint64(offset+8, allocPresent)
+ return nil
+}
+
+type unmarshalEnvelopeMode int
+
+const (
+ _ unmarshalEnvelopeMode = iota
+
+ // knownMayBeAbsent indicates that the content of the envelope is known,
+ // and that it may be absent, i.e. encountering an empty envelope is
+ // expected
+ knownMayBeAbsent
+
+ // knownMustBePresent indicates that the content of the envelope is known,
+ // and that it must be present, i.e. encountering an empty envelope
+ // should be considered a failure
+ knownMustBePresent
+)
+
+func unmarshalEnvelopeHeader(ctx MarshalerContext, in *decoder, offset int) (envelopeHeader, error) {
+ var h envelopeHeader
+ if ctx.isV2WireFormatDecodingEnabled() {
+ inlineIndicator := in.readUint16(offset + 6)
+ switch inlineIndicator {
+ case 1:
+ h = envelopeHeader{
+ byteValue: in.buffer[offset : offset+4],
+ handleCount: uint32(in.readUint16(offset + 4)),
+ isInline: true,
+ }
+ case 0:
+ h = envelopeHeader{
+ byteCount: in.readUint32(offset),
+ handleCount: uint32(in.readUint16(offset + 4)),
+ }
+ default:
+ return h, newValueError(ErrBadInlineIndicatorEncoding, h)
+ }
+
+ } else {
+ h = envelopeHeader{
+ byteCount: in.readUint32(offset),
+ handleCount: in.readUint32(offset + 4),
+ }
+ presence := in.readUint64(offset + 8)
+ switch presence {
+ case allocPresent:
+ if h.byteCount == 0 {
+ return h, newValueError(ErrInvalidNumBytesInEnvelope, h.byteCount)
+ }
+ case noAlloc:
+ if h.byteCount != 0 {
+ return h, newValueError(ErrInvalidNumBytesInEnvelope, h.byteCount)
+ }
+ if h.handleCount != 0 {
+ return h, newValueError(ErrInvalidNumHandlesInEnvelope, h.handleCount)
+ }
+ default:
+ return h, newValueError(ErrBadRefEncoding, h)
+ }
+ }
+ if h.byteCount%8 != 0 {
+ return h, newValueError(ErrInvalidNumBytesInEnvelope, h.byteCount)
+ }
+
+ return h, nil
+}
+
+func unmarshalEnvelopeUnknown(ctx MarshalerContext, in *decoder, offset int, depth int) ([]byte, []zx.HandleInfo, error) {
+ header, err := unmarshalEnvelopeHeader(ctx, in, offset)
+ if err != nil {
+ return nil, nil, err
+ }
+
+ var unknownHandles []zx.HandleInfo
+ if header.handleCount > uint32(len(in.handleInfos)) {
+ return nil, nil, newValueError(ErrTooManyHandles, header)
+ }
+ if header.handleCount != 0 {
+ // Slice the end off first; in Go, slicing the head is a more conservative
+ // operation than slicing the tail because the tail is allowed to reach
+ // into capacity, but the head may only use length. Slicing the head first
+ // allows the compiler to elide bounds checks on all the subsequent code.
+ //
+ // Even slicing from zero incurs a bounds check, hence the above check.
+ usedHandles := in.handleInfos[header.handleCount:]
+ // The compiler's bounds check elimination is not smart enough to avoid
+ // bounds checks in the loop body without this local variable.
+ unknownHandles = in.handleInfos[:header.handleCount]
+ in.handleInfos = usedHandles
+ }
+
+ start, err := in.newObject(int(header.byteCount), depth)
+ if err != nil {
+ return nil, nil, err
+ }
+
+ if err != nil {
+ return nil, nil, err
+ }
+ unknownData := in.buffer[start:][:header.byteCount]
+
+ return unknownData, unknownHandles, nil
+}
+
+func unmarshalEnvelopeContent(ctx MarshalerContext, header envelopeHeader, m Marshaler, in *decoder, depth int, v unsafevalue.Value, mode unmarshalEnvelopeMode) (bool, error) {
+ if ctx.isV2WireFormatDecodingEnabled() && header.isInline {
+ // Inline envelope.
+ var innerDecoderHandleInfos []zx.HandleInfo
+ if header.handleCount != 0 {
+ if header.handleCount != 1 {
+ return false, newValueError(ErrInvalidNumHandlesInEnvelope, header.handleCount)
+ }
+ innerDecoderHandleInfos = []zx.HandleInfo{in.handleInfos[0]}
+ in.handleInfos = in.handleInfos[1:]
+ }
+ d := decoder{
+ buffer: header.byteValue,
+ handleInfos: innerDecoderHandleInfos,
+ }
+ if err := m.unmarshal(ctx, &d, 0, depth+1, v); err != nil {
+ return false, err
+ }
+ return true, nil
+ }
+
+ outOfLineOffset, err := in.newObject(m.getUnmarshalSize(ctx), depth)
+ if err != nil {
+ return false, err
+ }
+
+ if err := m.unmarshal(ctx, in, outOfLineOffset, depth+1, v); err != nil {
+ return false, err
+ }
+
+ return true, nil
+}
+
+func unmarshalEnvelope(ctx MarshalerContext, m Marshaler, in *decoder, offset int, depth int, v unsafevalue.Value, mode unmarshalEnvelopeMode) (bool, error) {
+ startingFrom := in.nextObject
+ unclaimedHandles := uint32(len(in.handleInfos))
+ header, err := unmarshalEnvelopeHeader(ctx, in, offset)
+ if err != nil {
+ return false, err
+ }
+
+ if !header.isPresent(ctx) {
+ if mode == knownMustBePresent {
+ return false, newValueError(ErrUnexpectedNullRef, v)
+ }
+
+ return false, nil
+ }
+
+ success, err := unmarshalEnvelopeContent(ctx, header, m, in, depth, v, mode)
+ if err != nil {
+ return false, err
+ }
+
+ consumedHandles := unclaimedHandles - uint32(len(in.handleInfos))
+ consumedBytes := in.nextObject - startingFrom
+ if header.handleCount != consumedHandles {
+ return false, newExpectError(ErrInvalidNumHandlesInEnvelope, header.handleCount, consumedHandles)
+ }
+ if header.byteCount != uint32(consumedBytes) {
+ return false, newExpectError(ErrInvalidNumBytesInEnvelope, header.byteCount, consumedBytes)
+ }
+ return success, nil
+}
+
+// closeUnknownFieldHandles closes all of the handles in the provided map,
+// ignoring any errors (best effort).
+func closeUnknownFieldHandles(unknownFields map[uint64]UnknownData) {
+ for _, data := range unknownFields {
+ closeHandles(data.Handles)
+ }
+}
+
+func (m *mTable) marshal(ctx MarshalerContext, v unsafevalue.Value, out *encoder, offset int, depth int) error {
+ var (
+ maxOrdinal uint64
+ numKnown = len(m.ordinals)
+ fieldPresent = make([]bool, numKnown)
+ unknownData map[uint64]UnknownData
+ )
+
+ rawUnknownData := v.StructFieldOffset(unknownTableDataOffset).Interface()
+ if rawUnknownData != nil {
+ var ok bool
+ unknownData, ok = rawUnknownData.(map[uint64]UnknownData)
+ if !ok {
+ return errorf("internal error (unexpected table I_unknownData type {})", rawUnknownData)
+ }
+ // Determining max ordinal from unknown ordinals.
+ for unknownOrdinal := range unknownData {
+ if maxOrdinal < unknownOrdinal {
+ maxOrdinal = unknownOrdinal
+ }
+ }
+ }
+
+ if m.resourceness == isValueType {
+ for _, data := range unknownData {
+ if len(data.Handles) > 0 {
+ closeUnknownFieldHandles(unknownData)
+ return ErrValueTypeHandles
+ }
+ }
+ }
+
+ // Determining max ordinal from known ordinals.
+ for index := 0; index < numKnown; index++ {
+ fieldPresent[index] = v.StructFieldOffset(m.presenceOffsets[index]).Bool()
+ if fieldPresent[index] {
+ if fieldOrdinal := m.ordinals[index]; maxOrdinal < fieldOrdinal {
+ maxOrdinal = fieldOrdinal
+ }
+ }
+ }
+
+ // Vector of envelopes header.
+ out.writeUint64(offset, maxOrdinal)
+ out.writeUint64(offset+8, allocPresent)
+
+ // Early exit on empty table.
+ if maxOrdinal == 0 {
+ return nil
+ }
+
+ // Encode in the out-of-line object.
+ outOfLineOffset, err := out.newObject(int(maxOrdinal)*envelopeSize, depth)
+ if err != nil {
+ return err
+ }
+
+ // Envelopes.
+ var (
+ ordinal uint64 = 1
+ index = 0
+ )
+ envelopeOffset := outOfLineOffset
+ for ordinal <= maxOrdinal {
+ fieldKnown := index < numKnown && ordinal == m.ordinals[index]
+ if fieldKnown && fieldPresent[index] {
+ if fieldPresent[index] {
+ if err := marshalEnvelopePresent(ctx, m.fields[index], v.StructFieldOffset(m.fields[index].offset), out, envelopeOffset, depth+1); err != nil {
+ return err
+ }
+ } else {
+ // This else clause is redundant with the else clause in the top level if statement but
+ // saves a map lookup in the common case (all fields are known)
+ marshalEnvelopeAbsent(out, envelopeOffset)
+ }
+ } else if unknownField, ok := unknownData[ordinal]; ok {
+ err := marshalEnvelopeUnknown(
+ out,
+ envelopeOffset,
+ depth+1,
+ unknownField.Bytes,
+ unknownField.Handles,
+ )
+ if err != nil {
+ return err
+ }
+ } else {
+ marshalEnvelopeAbsent(out, envelopeOffset)
+ }
+
+ ordinal++
+ envelopeOffset += 16
+ if fieldKnown {
+ index++
+ }
+ }
+
+ return nil
+}
+
+func (m *mTable) unmarshal(ctx MarshalerContext, in *decoder, offset int, depth int, v unsafevalue.Value) error {
+ mou := in.readUint64(offset)
+ // uints/ints are only guaranteed to be 32 bit longs.
+ // we use maxOrdinal as an int, so we must make sure that it fits.
+ if mou > uint64(^uint(0)) {
+ return newValueError(ErrUnexpectedOrdinal, v)
+ }
+ maxOrdinal := mou
+
+ switch allocPtr := in.readUint64(offset + 8); allocPtr {
+ case allocPresent:
+ // good
+ case noAlloc:
+ return newValueError(ErrUnexpectedNullRef, v)
+ default:
+ return newValueError(ErrBadRefEncoding, v)
+ }
+
+ // Early exit on empty table.
+ if maxOrdinal == 0 {
+ return nil
+ }
+
+ // Envelopes.
+ var (
+ numKnown = len(m.ordinals)
+ ordinal uint64 = 1
+ index = 0
+ unknownData map[uint64]UnknownData
+ )
+ outOfLineOffset, err := in.newObject(int(maxOrdinal)*envelopeSize, depth)
+ if err != nil {
+ return err
+ }
+
+ envelopeOffset := outOfLineOffset
+ for ordinal <= maxOrdinal {
+ fieldKnown := index < numKnown && ordinal == m.ordinals[index]
+ if fieldKnown {
+ if isPresent, err := unmarshalEnvelope(ctx, m.fields[index], in, envelopeOffset, depth+1, v.StructFieldOffset(m.fields[index].offset), knownMayBeAbsent); err != nil {
+ return err
+ } else if isPresent {
+ v.StructFieldOffset(m.presenceOffsets[index]).SetBool(true)
+ }
+ } else {
+ bytes, handles, err := unmarshalEnvelopeUnknown(ctx, in, envelopeOffset, depth+1)
+ if err != nil {
+ return err
+ }
+ if len(bytes) > 0 || len(handles) > 0 {
+ if unknownData == nil {
+ unknownData = make(map[uint64]UnknownData)
+ v.StructFieldOffset(unknownTableDataOffset).SetInterface(unknownData)
+ }
+ unknownData[ordinal] = UnknownData{
+ Bytes: bytes,
+ Handles: handles,
+ }
+ }
+ }
+ ordinal++
+ envelopeOffset += 16
+ if fieldKnown {
+ index++
+ }
+ }
+
+ if m.resourceness == isValueType {
+ for _, data := range unknownData {
+ if len(data.Handles) > 0 {
+ closeUnknownFieldHandles(unknownData)
+ return ErrValueTypeHandles
+ }
+ }
+ }
+ return nil
+}
+
+type mPointer struct {
+ Marshaler
+ elemTyp reflect.Type
+}
+
+func (m *mPointer) getMarshalSize(ctx MarshalerContext) int {
+ return 8
+}
+
+func (m *mPointer) getUnmarshalSize(ctx MarshalerContext) int {
+ return 8
+}
+
+func (m *mPointer) marshal(ctx MarshalerContext, v unsafevalue.Value, out *encoder, offset int, depth int) error {
+ // Nil?
+ if v.PointerIsNil() {
+ out.writeUint64(offset, noAlloc)
+ return nil
+ }
+
+ // Write out allocation marker.
+ out.writeUint64(offset, allocPresent)
+
+ // Set up the out-of-line space.
+ outOfLineOffset, err := out.newObject(align(m.Marshaler.getMarshalSize(ctx), 8), depth)
+ if err != nil {
+ return err
+ }
+
+ // Marshal field.
+ if err := m.Marshaler.marshal(ctx, v.PointerElem(), out, outOfLineOffset, depth+1); err != nil {
+ return err
+ }
+
+ return nil
+}
+
+func (m *mPointer) unmarshal(ctx MarshalerContext, in *decoder, offset int, depth int, v unsafevalue.Value) error {
+ // Nil?
+ switch ptr := in.readUint64(offset); ptr {
+ case noAlloc:
+ v.PointerSetNil()
+ return nil
+ case allocPresent:
+ // good
+ default:
+ return newValueError(ErrBadRefEncoding, v)
+ }
+
+ // Create the new struct.
+ v.PointerSetNew(m.elemTyp)
+
+ // Set up the out-of-line space and the head.
+ outOfLineOffset, err := in.newObject(m.Marshaler.getUnmarshalSize(ctx), depth)
+ if err != nil {
+ return err
+ }
+
+ // Unmarshal field.
+ if err := m.Marshaler.unmarshal(ctx, in, outOfLineOffset, depth+1, v.PointerElem()); err != nil {
+ return err
+ }
+
+ return nil
+}
+
+type mArray struct {
+ Marshaler
+ rtElemSize uintptr
+ size int
+}
+
+func (m *mArray) getMarshalSize(ctx MarshalerContext) int {
+ return m.size * m.Marshaler.getMarshalSize(ctx)
+}
+func (m *mArray) getUnmarshalSize(ctx MarshalerContext) int {
+ return m.size * m.Marshaler.getUnmarshalSize(ctx)
+}
+
+func (m *mArray) marshal(ctx MarshalerContext, v unsafevalue.Value, out *encoder, offset int, depth int) error {
+ elemSize := m.Marshaler.getMarshalSize(ctx)
+ for i, len := 0, m.size; i < len; i++ {
+ if err := m.Marshaler.marshal(ctx, v.ArrayIndex(m.rtElemSize, i), out, offset+i*elemSize, depth); err != nil {
+ return err
+ }
+ }
+ return nil
+}
+
+func (m *mArray) unmarshal(ctx MarshalerContext, in *decoder, offset int, depth int, v unsafevalue.Value) error {
+ elemSize := m.Marshaler.getUnmarshalSize(ctx)
+ for i, len := 0, m.size; i < len; i++ {
+ if err := m.Marshaler.unmarshal(ctx, in, offset+i*elemSize, depth, v.ArrayIndex(m.rtElemSize, i)); err != nil {
+ return err
+ }
+ }
+ return nil
+}
+
+type mVector struct {
+ Marshaler
+ maxSize int
+ elemTyp reflect.Type
+ useUnsafeCopy bool
+}
+
+func (m *mVector) getMarshalSize(ctx MarshalerContext) int {
+ return 16
+}
+func (m *mVector) getUnmarshalSize(ctx MarshalerContext) int {
+ return 16
+}
+
+func (m *mVector) marshal(ctx MarshalerContext, v unsafevalue.Value, out *encoder, offset int, depth int) error {
+ // Bounds check.
+ vLen := v.SliceLen()
+ if m.maxSize < vLen {
+ return newExpectError(ErrVectorTooLong, m.maxSize, vLen)
+ }
+
+ // Vector header.
+ out.writeUint64(offset, uint64(vLen))
+ out.writeUint64(offset+8, allocPresent)
+
+ // Early exit if the vector is empty.
+ if vLen == 0 {
+ return nil
+ }
+
+ // Encode in the out-of-line object.
+ outOfLineOffset, err := out.newObject(vLen*m.Marshaler.getMarshalSize(ctx), depth)
+ if err != nil {
+ return err
+ }
+
+ // Marshal elements.
+ wireElemSize := m.Marshaler.getMarshalSize(ctx)
+ if m.useUnsafeCopy {
+ var bytes []byte
+ sh := (*reflect.SliceHeader)(unsafe.Pointer(&bytes))
+ sh.Data = (*reflect.SliceHeader)(unsafe.Pointer(v.UnsafeAddr())).Data
+ sh.Len = vLen * wireElemSize
+ sh.Cap = vLen * wireElemSize
+ copy(out.buffer[outOfLineOffset:], bytes)
+ } else {
+ elemTypSize := m.elemTyp.Size()
+ for i := 0; i < vLen; i++ {
+ if err := m.Marshaler.marshal(ctx, v.SliceIndex(elemTypSize, i), out, outOfLineOffset+i*wireElemSize, depth+1); err != nil {
+ return err
+ }
+ }
+ }
+
+ return nil
+}
+
+func (m *mVector) unmarshal(ctx MarshalerContext, in *decoder, offset int, depth int, v unsafevalue.Value) error {
+ size := in.readUint64(offset)
+ ptr := in.readUint64(offset + 8)
+ switch ptr {
+ case noAlloc:
+ return newValueError(ErrUnexpectedNullRef, v)
+ case allocPresent:
+ return m.unmarshalWithUncheckedSize(ctx, in, depth, v, int(size))
+ default:
+ return newValueError(ErrBadRefEncoding, v)
+ }
+}
+
+func (m *mVector) unmarshalWithUncheckedSize(ctx MarshalerContext, in *decoder, depth int, v unsafevalue.Value, size int) error {
+ if size < 0 || m.maxSize < size {
+ return newExpectError(ErrVectorTooLong, m.maxSize, size)
+ }
+
+ // Unmarshal in the out-of-line object.
+ elemSize := m.Marshaler.getUnmarshalSize(ctx)
+ outOfLineOffset, err := in.newObject(size*elemSize, depth)
+ if err != nil {
+ return err
+ }
+
+ // Unmarshal elements.
+ if m.useUnsafeCopy {
+ // Copy the data as bytes, then construct a slice header with the appropriate size
+ // for the slice type (if it is not bytes).
+ s := make([]byte, size*m.Marshaler.getUnmarshalSize(ctx))
+ copy(s, in.buffer[outOfLineOffset:])
+ sh := (*reflect.SliceHeader)(unsafe.Pointer(v.UnsafeAddr()))
+ sh.Data = (*reflect.SliceHeader)(unsafe.Pointer(&s)).Data
+ sh.Len = size
+ sh.Cap = size
+ } else {
+ elemTypSize := m.elemTyp.Size()
+ v.SliceSetMakeSlice(m.elemTyp, size, size)
+ for i := 0; i < size; i++ {
+ if err := m.Marshaler.unmarshal(ctx, in, outOfLineOffset+i*elemSize, depth+1, v.SliceIndex(elemTypSize, i)); err != nil {
+ return err
+ }
+ }
+ }
+
+ return nil
+}
+
+type mOptVector struct {
+ *mVector
+ sliceTyp reflect.Type
+}
+
+func (m *mOptVector) getMarshalSize(ctx MarshalerContext) int {
+ return 16
+}
+func (m *mOptVector) getUnmarshalSize(ctx MarshalerContext) int {
+ return 16
+}
+
+func (m *mOptVector) marshal(ctx MarshalerContext, v unsafevalue.Value, out *encoder, offset int, depth int) error {
+ if v.PointerIsNil() {
+ out.writeUint64(offset, 0)
+ out.writeUint64(offset+8, noAlloc)
+ return nil
+ }
+
+ return m.mVector.marshal(ctx, v.PointerElem(), out, offset, depth)
+}
+
+func (m *mOptVector) unmarshal(ctx MarshalerContext, in *decoder, offset int, depth int, v unsafevalue.Value) error {
+ size := in.readUint64(offset)
+ ptr := in.readUint64(offset + 8)
+ switch ptr {
+ case noAlloc:
+ v.PointerSetNil()
+ return nil
+ case allocPresent:
+ v.PointerSetNew(m.sliceTyp)
+ return m.mVector.unmarshalWithUncheckedSize(ctx, in, depth, v.PointerElem(), int(size))
+ default:
+ return newValueError(ErrBadRefEncoding, v)
+ }
+}
+
+type mBool struct{}
+
+func (m *mBool) getMarshalSize(ctx MarshalerContext) int {
+ return 1
+}
+func (m *mBool) getUnmarshalSize(ctx MarshalerContext) int {
+ return 1
+}
+
+func (m *mBool) marshal(ctx MarshalerContext, v unsafevalue.Value, out *encoder, offset int, depth int) error {
+ if v.Bool() {
+ out.writeUint8(offset, 1)
+ } else {
+ out.writeUint8(offset, 0)
+ }
+ return nil
+}
+
+func (m *mBool) unmarshal(ctx MarshalerContext, in *decoder, offset int, depth int, v unsafevalue.Value) error {
+ b := in.readUint8(offset)
+ switch b {
+ case 0, 1:
+ v.SetBool(b == 1)
+ return nil
+ default:
+ return newValueError(ErrInvalidBoolValue, b)
+ }
+}
+
+type mInt8 struct{}
+
+func (m *mInt8) getMarshalSize(ctx MarshalerContext) int {
+ return 1
+}
+func (m *mInt8) getUnmarshalSize(ctx MarshalerContext) int {
+ return 1
+}
+
+func (m *mInt8) marshal(ctx MarshalerContext, v unsafevalue.Value, out *encoder, offset int, depth int) error {
+ out.writeUint8(offset, uint8(v.Int8()))
+ return nil
+}
+
+func (m *mInt8) unmarshal(ctx MarshalerContext, in *decoder, offset int, depth int, v unsafevalue.Value) error {
+ v.SetInt8(int8(in.readUint8(offset)))
+ return nil
+}
+
+type mInt16 struct{}
+
+func (m *mInt16) getMarshalSize(ctx MarshalerContext) int {
+ return 2
+}
+func (m *mInt16) getUnmarshalSize(ctx MarshalerContext) int {
+ return 2
+}
+
+func (m *mInt16) marshal(ctx MarshalerContext, v unsafevalue.Value, out *encoder, offset int, depth int) error {
+ out.writeUint16(offset, uint16(v.Int16()))
+ return nil
+}
+
+func (m *mInt16) unmarshal(ctx MarshalerContext, in *decoder, offset int, depth int, v unsafevalue.Value) error {
+ v.SetInt16(int16(in.readUint16(offset)))
+ return nil
+}
+
+type mInt32 struct{}
+
+func (m *mInt32) getMarshalSize(ctx MarshalerContext) int {
+ return 4
+}
+func (m *mInt32) getUnmarshalSize(ctx MarshalerContext) int {
+ return 4
+}
+
+func (m *mInt32) marshal(ctx MarshalerContext, v unsafevalue.Value, out *encoder, offset int, depth int) error {
+ out.writeUint32(offset, uint32(v.Int32()))
+ return nil
+}
+
+func (m *mInt32) unmarshal(ctx MarshalerContext, in *decoder, offset int, depth int, v unsafevalue.Value) error {
+ v.SetInt32(int32(in.readUint32(offset)))
+ return nil
+}
+
+type mInt64 struct{}
+
+func (m *mInt64) getMarshalSize(ctx MarshalerContext) int {
+ return 8
+}
+func (m *mInt64) getUnmarshalSize(ctx MarshalerContext) int {
+ return 8
+}
+
+func (m *mInt64) marshal(ctx MarshalerContext, v unsafevalue.Value, out *encoder, offset int, depth int) error {
+ out.writeUint64(offset, uint64(v.Int64()))
+ return nil
+}
+
+func (m *mInt64) unmarshal(ctx MarshalerContext, in *decoder, offset int, depth int, v unsafevalue.Value) error {
+ v.SetInt64(int64(in.readUint64(offset)))
+ return nil
+}
+
+type mUint8 struct{}
+
+func (m *mUint8) getMarshalSize(ctx MarshalerContext) int {
+ return 1
+}
+func (m *mUint8) getUnmarshalSize(ctx MarshalerContext) int {
+ return 1
+}
+
+func (m *mUint8) marshal(ctx MarshalerContext, v unsafevalue.Value, out *encoder, offset int, depth int) error {
+ out.writeUint8(offset, v.Uint8())
+ return nil
+}
+
+func (m *mUint8) unmarshal(ctx MarshalerContext, in *decoder, offset int, depth int, v unsafevalue.Value) error {
+ v.SetUint8(in.readUint8(offset))
+ return nil
+}
+
+type mUint16 struct{}
+
+func (m *mUint16) getMarshalSize(ctx MarshalerContext) int {
+ return 2
+}
+func (m *mUint16) getUnmarshalSize(ctx MarshalerContext) int {
+ return 2
+}
+
+func (m *mUint16) marshal(ctx MarshalerContext, v unsafevalue.Value, out *encoder, offset int, depth int) error {
+ out.writeUint16(offset, v.Uint16())
+ return nil
+}
+
+func (m *mUint16) unmarshal(ctx MarshalerContext, in *decoder, offset int, depth int, v unsafevalue.Value) error {
+ v.SetUint16(in.readUint16(offset))
+ return nil
+}
+
+type mUint32 struct{}
+
+func (m *mUint32) getMarshalSize(ctx MarshalerContext) int {
+ return 4
+}
+func (m *mUint32) getUnmarshalSize(ctx MarshalerContext) int {
+ return 4
+}
+
+func (m *mUint32) marshal(ctx MarshalerContext, v unsafevalue.Value, out *encoder, offset int, depth int) error {
+ out.writeUint32(offset, v.Uint32())
+ return nil
+}
+
+func (m *mUint32) unmarshal(ctx MarshalerContext, in *decoder, offset int, depth int, v unsafevalue.Value) error {
+ v.SetUint32(in.readUint32(offset))
+ return nil
+}
+
+type mUint64 struct{}
+
+func (m *mUint64) getMarshalSize(ctx MarshalerContext) int {
+ return 8
+}
+func (m *mUint64) getUnmarshalSize(ctx MarshalerContext) int {
+ return 8
+}
+
+func (m *mUint64) marshal(ctx MarshalerContext, v unsafevalue.Value, out *encoder, offset int, depth int) error {
+ out.writeUint64(offset, v.Uint64())
+ return nil
+}
+
+func (m *mUint64) unmarshal(ctx MarshalerContext, in *decoder, offset int, depth int, v unsafevalue.Value) error {
+ v.SetUint64(in.readUint64(offset))
+ return nil
+}
+
+type mEnumOfInt8 struct {
+ isStrict bool
+ values map[int8]struct{}
+}
+
+func (m *mEnumOfInt8) getMarshalSize(ctx MarshalerContext) int {
+ return 1
+}
+func (m *mEnumOfInt8) getUnmarshalSize(ctx MarshalerContext) int {
+ return 1
+}
+
+func (m *mEnumOfInt8) marshal(ctx MarshalerContext, v unsafevalue.Value, out *encoder, offset int, depth int) error {
+ if m.isStrict {
+ if _, ok := m.values[v.Int8()]; !ok {
+ return newValueError(ErrInvalidEnumValue, v.Int8())
+ }
+ }
+ out.writeUint8(offset, uint8(v.Int8()))
+ return nil
+}
+
+func (m *mEnumOfInt8) unmarshal(ctx MarshalerContext, in *decoder, offset int, depth int, v unsafevalue.Value) error {
+ i := int8(in.readUint8(offset))
+ if m.isStrict {
+ if _, ok := m.values[i]; !ok {
+ return newValueError(ErrInvalidEnumValue, i)
+ }
+ }
+ v.SetInt8(i)
+ return nil
+}
+
+type mEnumOfInt16 struct {
+ isStrict bool
+ values map[int16]struct{}
+}
+
+func (m *mEnumOfInt16) getMarshalSize(ctx MarshalerContext) int {
+ return 2
+}
+func (m *mEnumOfInt16) getUnmarshalSize(ctx MarshalerContext) int {
+ return 2
+}
+
+func (m *mEnumOfInt16) marshal(ctx MarshalerContext, v unsafevalue.Value, out *encoder, offset int, depth int) error {
+ if m.isStrict {
+ if _, ok := m.values[v.Int16()]; !ok {
+ return newValueError(ErrInvalidEnumValue, v.Int16())
+ }
+ }
+ out.writeUint16(offset, uint16(v.Int16()))
+ return nil
+}
+
+func (m *mEnumOfInt16) unmarshal(ctx MarshalerContext, in *decoder, offset int, depth int, v unsafevalue.Value) error {
+ i := int16(in.readUint16(offset))
+ if m.isStrict {
+ if _, ok := m.values[i]; !ok {
+ return newValueError(ErrInvalidEnumValue, i)
+ }
+ }
+ v.SetInt16(i)
+ return nil
+}
+
+type mEnumOfInt32 struct {
+ isStrict bool
+ values map[int32]struct{}
+}
+
+func (m *mEnumOfInt32) getMarshalSize(ctx MarshalerContext) int {
+ return 4
+}
+func (m *mEnumOfInt32) getUnmarshalSize(ctx MarshalerContext) int {
+ return 4
+}
+
+func (m *mEnumOfInt32) marshal(ctx MarshalerContext, v unsafevalue.Value, out *encoder, offset int, depth int) error {
+ if m.isStrict {
+ if _, ok := m.values[v.Int32()]; !ok {
+ return newValueError(ErrInvalidEnumValue, v.Int32())
+ }
+ }
+ out.writeUint32(offset, uint32(v.Int32()))
+ return nil
+}
+
+func (m *mEnumOfInt32) unmarshal(ctx MarshalerContext, in *decoder, offset int, depth int, v unsafevalue.Value) error {
+ i := int32(in.readUint32(offset))
+ if m.isStrict {
+ if _, ok := m.values[i]; !ok {
+ return newValueError(ErrInvalidEnumValue, i)
+ }
+ }
+ v.SetInt32(i)
+ return nil
+}
+
+type mEnumOfInt64 struct {
+ isStrict bool
+ values map[int64]struct{}
+}
+
+func (m *mEnumOfInt64) getMarshalSize(ctx MarshalerContext) int {
+ return 8
+}
+func (m *mEnumOfInt64) getUnmarshalSize(ctx MarshalerContext) int {
+ return 8
+}
+
+func (m *mEnumOfInt64) marshal(ctx MarshalerContext, v unsafevalue.Value, out *encoder, offset int, depth int) error {
+ if m.isStrict {
+ if _, ok := m.values[v.Int64()]; !ok {
+ return newValueError(ErrInvalidEnumValue, v.Int64())
+ }
+ }
+ out.writeUint64(offset, uint64(v.Int64()))
+ return nil
+}
+
+func (m *mEnumOfInt64) unmarshal(ctx MarshalerContext, in *decoder, offset int, depth int, v unsafevalue.Value) error {
+ i := int64(in.readUint64(offset))
+ if m.isStrict {
+ if _, ok := m.values[i]; !ok {
+ return newValueError(ErrInvalidEnumValue, i)
+ }
+ }
+ v.SetInt64(i)
+ return nil
+}
+
+type mEnumOfUint8 struct {
+ isStrict bool
+ values map[uint8]struct{}
+}
+
+func (m *mEnumOfUint8) getMarshalSize(ctx MarshalerContext) int {
+ return 1
+}
+func (m *mEnumOfUint8) getUnmarshalSize(ctx MarshalerContext) int {
+ return 1
+}
+
+func (m *mEnumOfUint8) marshal(ctx MarshalerContext, v unsafevalue.Value, out *encoder, offset int, depth int) error {
+ if m.isStrict {
+ if _, ok := m.values[v.Uint8()]; !ok {
+ return newValueError(ErrInvalidEnumValue, v.Uint8())
+ }
+ }
+ out.writeUint8(offset, v.Uint8())
+ return nil
+}
+
+func (m *mEnumOfUint8) unmarshal(ctx MarshalerContext, in *decoder, offset int, depth int, v unsafevalue.Value) error {
+ i := in.readUint8(offset)
+ if m.isStrict {
+ if _, ok := m.values[i]; !ok {
+ return newValueError(ErrInvalidEnumValue, i)
+ }
+ }
+ v.SetUint8(i)
+ return nil
+}
+
+type mEnumOfUint16 struct {
+ isStrict bool
+ values map[uint16]struct{}
+}
+
+func (m *mEnumOfUint16) getMarshalSize(ctx MarshalerContext) int {
+ return 2
+}
+func (m *mEnumOfUint16) getUnmarshalSize(ctx MarshalerContext) int {
+ return 2
+}
+
+func (m *mEnumOfUint16) marshal(ctx MarshalerContext, v unsafevalue.Value, out *encoder, offset int, depth int) error {
+ if m.isStrict {
+ if _, ok := m.values[v.Uint16()]; !ok {
+ return newValueError(ErrInvalidEnumValue, v.Uint16())
+ }
+ }
+ out.writeUint16(offset, v.Uint16())
+ return nil
+}
+
+func (m *mEnumOfUint16) unmarshal(ctx MarshalerContext, in *decoder, offset int, depth int, v unsafevalue.Value) error {
+ i := in.readUint16(offset)
+ if m.isStrict {
+ if _, ok := m.values[i]; !ok {
+ return newValueError(ErrInvalidEnumValue, i)
+ }
+ }
+ v.SetUint16(i)
+ return nil
+}
+
+type mEnumOfUint32 struct {
+ isStrict bool
+ values map[uint32]struct{}
+}
+
+func (m *mEnumOfUint32) getMarshalSize(ctx MarshalerContext) int {
+ return 4
+}
+func (m *mEnumOfUint32) getUnmarshalSize(ctx MarshalerContext) int {
+ return 4
+}
+
+func (m *mEnumOfUint32) marshal(ctx MarshalerContext, v unsafevalue.Value, out *encoder, offset int, depth int) error {
+ if m.isStrict {
+ if _, ok := m.values[v.Uint32()]; !ok {
+ return newValueError(ErrInvalidEnumValue, v.Uint32())
+ }
+ }
+ out.writeUint32(offset, v.Uint32())
+ return nil
+}
+
+func (m *mEnumOfUint32) unmarshal(ctx MarshalerContext, in *decoder, offset int, depth int, v unsafevalue.Value) error {
+ i := in.readUint32(offset)
+ if m.isStrict {
+ if _, ok := m.values[i]; !ok {
+ return newValueError(ErrInvalidEnumValue, i)
+ }
+ }
+ v.SetUint32(i)
+ return nil
+}
+
+type mEnumOfUint64 struct {
+ isStrict bool
+ values map[uint64]struct{}
+}
+
+func (m *mEnumOfUint64) getMarshalSize(ctx MarshalerContext) int {
+ return 8
+}
+func (m *mEnumOfUint64) getUnmarshalSize(ctx MarshalerContext) int {
+ return 8
+}
+
+func (m *mEnumOfUint64) marshal(ctx MarshalerContext, v unsafevalue.Value, out *encoder, offset int, depth int) error {
+ if m.isStrict {
+ if _, ok := m.values[v.Uint64()]; !ok {
+ return newValueError(ErrInvalidEnumValue, v.Uint64())
+ }
+ }
+ out.writeUint64(offset, v.Uint64())
+ return nil
+}
+
+func (m *mEnumOfUint64) unmarshal(ctx MarshalerContext, in *decoder, offset int, depth int, v unsafevalue.Value) error {
+ i := in.readUint64(offset)
+ if m.isStrict {
+ if _, ok := m.values[i]; !ok {
+ return newValueError(ErrInvalidEnumValue, i)
+ }
+ }
+ v.SetUint64(i)
+ return nil
+}
+
+type mBitsOfUint8 struct {
+ isStrict bool
+ mask uint8
+}
+
+func (m *mBitsOfUint8) getMarshalSize(ctx MarshalerContext) int {
+ return 1
+}
+func (m *mBitsOfUint8) getUnmarshalSize(ctx MarshalerContext) int {
+ return 1
+}
+
+func (m *mBitsOfUint8) marshal(ctx MarshalerContext, v unsafevalue.Value, out *encoder, offset int, depth int) error {
+ if m.isStrict {
+ if (v.Uint8() & m.mask) != v.Uint8() {
+ return newValueError(ErrInvalidBitsValue, v.Uint8())
+ }
+ }
+ out.writeUint8(offset, v.Uint8())
+ return nil
+}
+
+func (m *mBitsOfUint8) unmarshal(ctx MarshalerContext, in *decoder, offset int, depth int, v unsafevalue.Value) error {
+ i := in.readUint8(offset)
+ if m.isStrict {
+ if (i & m.mask) != i {
+ return newValueError(ErrInvalidBitsValue, i)
+ }
+ }
+ v.SetUint8(i)
+ return nil
+}
+
+type mBitsOfUint16 struct {
+ isStrict bool
+ mask uint16
+}
+
+func (m *mBitsOfUint16) getMarshalSize(ctx MarshalerContext) int {
+ return 2
+}
+func (m *mBitsOfUint16) getUnmarshalSize(ctx MarshalerContext) int {
+ return 2
+}
+
+func (m *mBitsOfUint16) marshal(ctx MarshalerContext, v unsafevalue.Value, out *encoder, offset int, depth int) error {
+ if m.isStrict {
+ if (v.Uint16() & m.mask) != v.Uint16() {
+ return newValueError(ErrInvalidBitsValue, v.Uint16())
+ }
+ }
+ out.writeUint16(offset, v.Uint16())
+ return nil
+}
+
+func (m *mBitsOfUint16) unmarshal(ctx MarshalerContext, in *decoder, offset int, depth int, v unsafevalue.Value) error {
+ i := in.readUint16(offset)
+ if m.isStrict {
+ if (i & m.mask) != i {
+ return newValueError(ErrInvalidBitsValue, i)
+ }
+ }
+ v.SetUint16(i)
+ return nil
+}
+
+type mBitsOfUint32 struct {
+ isStrict bool
+ mask uint32
+}
+
+func (m *mBitsOfUint32) getMarshalSize(ctx MarshalerContext) int {
+ return 4
+}
+func (m *mBitsOfUint32) getUnmarshalSize(ctx MarshalerContext) int {
+ return 4
+}
+
+func (m *mBitsOfUint32) marshal(ctx MarshalerContext, v unsafevalue.Value, out *encoder, offset int, depth int) error {
+ if m.isStrict {
+ if (v.Uint32() & m.mask) != v.Uint32() {
+ return newValueError(ErrInvalidBitsValue, v.Uint32())
+ }
+ }
+ out.writeUint32(offset, v.Uint32())
+ return nil
+}
+
+func (m *mBitsOfUint32) unmarshal(ctx MarshalerContext, in *decoder, offset int, depth int, v unsafevalue.Value) error {
+ i := in.readUint32(offset)
+ if m.isStrict {
+ if (i & m.mask) != i {
+ return newValueError(ErrInvalidBitsValue, i)
+ }
+ }
+ v.SetUint32(i)
+ return nil
+}
+
+type mBitsOfUint64 struct {
+ isStrict bool
+ mask uint64
+}
+
+func (m *mBitsOfUint64) getMarshalSize(ctx MarshalerContext) int {
+ return 8
+}
+func (m *mBitsOfUint64) getUnmarshalSize(ctx MarshalerContext) int {
+ return 8
+}
+
+func (m *mBitsOfUint64) marshal(ctx MarshalerContext, v unsafevalue.Value, out *encoder, offset int, depth int) error {
+ if m.isStrict {
+ if (v.Uint64() & m.mask) != v.Uint64() {
+ return newValueError(ErrInvalidBitsValue, v.Uint64())
+ }
+ }
+ out.writeUint64(offset, v.Uint64())
+ return nil
+}
+
+func (m *mBitsOfUint64) unmarshal(ctx MarshalerContext, in *decoder, offset int, depth int, v unsafevalue.Value) error {
+ i := in.readUint64(offset)
+ if m.isStrict {
+ if (i & m.mask) != i {
+ return newValueError(ErrInvalidBitsValue, i)
+ }
+ }
+ v.SetUint64(i)
+ return nil
+}
+
+type mFloat32 struct{}
+
+func (m *mFloat32) getMarshalSize(ctx MarshalerContext) int {
+ return 4
+}
+func (m *mFloat32) getUnmarshalSize(ctx MarshalerContext) int {
+ return 4
+}
+
+func (m *mFloat32) marshal(ctx MarshalerContext, v unsafevalue.Value, out *encoder, offset int, depth int) error {
+ out.writeUint32(offset, math.Float32bits(v.Float32()))
+ return nil
+}
+
+func (m *mFloat32) unmarshal(ctx MarshalerContext, in *decoder, offset int, depth int, v unsafevalue.Value) error {
+ v.SetFloat32(math.Float32frombits(in.readUint32(offset)))
+ return nil
+}
+
+type mFloat64 struct{}
+
+func (m *mFloat64) getMarshalSize(ctx MarshalerContext) int {
+ return 8
+}
+func (m *mFloat64) getUnmarshalSize(ctx MarshalerContext) int {
+ return 8
+}
+
+func (m *mFloat64) marshal(ctx MarshalerContext, v unsafevalue.Value, out *encoder, offset int, depth int) error {
+ out.writeUint64(offset, math.Float64bits(v.Float64()))
+ return nil
+}
+
+func (m *mFloat64) unmarshal(ctx MarshalerContext, in *decoder, offset int, depth int, v unsafevalue.Value) error {
+ v.SetFloat64(math.Float64frombits(in.readUint64(offset)))
+ return nil
+}
+
+type mString int
+
+func (m *mString) getMarshalSize(ctx MarshalerContext) int {
+ return 16
+}
+func (m *mString) getUnmarshalSize(ctx MarshalerContext) int {
+ return 16
+}
+
+func (m *mString) marshal(ctx MarshalerContext, v unsafevalue.Value, out *encoder, offset int, depth int) error {
+ var (
+ maxSize = int(*m)
+ s = v.String()
+ length = len(s)
+ )
+ if maxSize < length {
+ return newExpectError(ErrStringTooLong, maxSize, length)
+ }
+
+ if !utf8.ValidString(s) {
+ return newValueError(ErrStringNotUTF8, v)
+ }
+
+ // length, allocPresent
+ out.writeUint64(offset, uint64(length))
+ out.writeUint64(offset+8, allocPresent)
+
+ // Create a new out-of-line object and write bytes of the string.
+ head, err := out.newObject(length, depth)
+ if err != nil {
+ return err
+ }
+
+ copy(out.buffer[head:], s)
+ return nil
+}
+
+func (m *mString) unmarshal(ctx MarshalerContext, in *decoder, offset int, depth int, v unsafevalue.Value) error {
+ size := in.readUint64(offset)
+ ptr := in.readUint64(offset + 8)
+ switch ptr {
+ case noAlloc:
+ return newValueError(ErrUnexpectedNullRef, "string")
+ case allocPresent:
+ return m.unmarshalWithUncheckedSize(in, depth, v, int(size))
+ default:
+ return newValueError(ErrBadRefEncoding, "string")
+ }
+}
+
+func (m *mString) unmarshalWithUncheckedSize(in *decoder, depth int, v unsafevalue.Value, size int) error {
+ if maxSize := int(*m); size < 0 || maxSize < size {
+ return newExpectError(ErrStringTooLong, maxSize, size)
+ }
+ start, err := in.newObject(size, depth)
+ if err != nil {
+ return err
+ }
+
+ s := string(in.buffer[start:][:size])
+ if !utf8.ValidString(s) {
+ return newValueError(ErrStringNotUTF8, v)
+ }
+ v.SetString(s)
+ return nil
+}
+
+type mOptString uint64
+
+func (m *mOptString) getMarshalSize(ctx MarshalerContext) int {
+ return 16
+}
+func (m *mOptString) getUnmarshalSize(ctx MarshalerContext) int {
+ return 16
+}
+
+func (m *mOptString) marshal(ctx MarshalerContext, v unsafevalue.Value, out *encoder, offset int, depth int) error {
+ if v.PointerIsNil() {
+ out.writeUint64(offset, 0)
+ out.writeUint64(offset+8, noAlloc)
+ return nil
+ }
+
+ s := mString(*m)
+ return (&s).marshal(ctx, v.PointerElem(), out, offset, depth)
+}
+
+var (
+ typString = reflect.TypeOf("")
+)
+
+func (m *mOptString) unmarshal(ctx MarshalerContext, in *decoder, offset int, depth int, v unsafevalue.Value) error {
+ size := in.readUint64(offset)
+ ptr := in.readUint64(offset + 8)
+ switch ptr {
+ case noAlloc:
+ v.PointerSetNil()
+ return nil
+ case allocPresent:
+ v.PointerSetNew(typString)
+ s := mString(*m)
+ return (&s).unmarshalWithUncheckedSize(in, depth, v.PointerElem(), int(size))
+ default:
+ return newValueError(ErrBadRefEncoding, v)
+ }
+}
+
+type mHandle struct {
+ nullable bool
+ rights zx.Rights
+ subtype zx.ObjectType
+}
+
+func (m *mHandle) getMarshalSize(ctx MarshalerContext) int {
+ return 4
+}
+func (m *mHandle) getUnmarshalSize(ctx MarshalerContext) int {
+ return 4
+}
+
+func (m *mHandle) isOpt() bool {
+ return m.nullable
+}
+
+func (m *mHandle) marshal(ctx MarshalerContext, v unsafevalue.Value, out *encoder, offset int, depth int) error {
+ // The underlying type of all the handles is a uint32, so we're
+ // safe calling Uint(). This will panic if that is no longer true.
+ raw := zx.Handle(v.Uint32())
+ if raw == zx.HandleInvalid {
+ if !m.isOpt() {
+ return ErrUnexpectedNullHandle
+ }
+ out.writeUint32(offset, noHandle)
+ return nil
+ }
+ out.handleDispositions = append(out.handleDispositions, zx.HandleDisposition{
+ Operation: zx.HandleOpMove,
+ Handle: raw,
+ Type: m.subtype,
+ Rights: m.rights,
+ Result: zx.ErrOk,
+ })
+ out.writeUint32(offset, handlePresent)
+ return nil
+}
+
+func (m *mHandle) requiredRightsArePresent(actual zx.Rights) bool {
+ if m.rights == zx.RightSameRights {
+ return true
+ }
+ return actual.SupersetOf(m.rights)
+}
+
+func (m *mHandle) filterOutUnspecifiedRights(actual zx.Rights) zx.Rights {
+ if m.rights == zx.RightSameRights {
+ return actual
+ }
+ return actual & m.rights
+}
+
+func (m *mHandle) unmarshal(ctx MarshalerContext, in *decoder, offset int, depth int, v unsafevalue.Value) error {
+ h := in.readUint32(offset)
+ switch uint32(h) {
+ case noHandle:
+ if !m.isOpt() {
+ return ErrUnexpectedNullHandle
+ }
+ v.SetUint32(uint32(zx.HandleInvalid))
+ return nil
+ case handlePresent:
+ if len(in.handleInfos) == 0 {
+ return ErrNotEnoughHandles
+ }
+ handleInfo := in.handleInfos[0]
+ in.handleInfos = in.handleInfos[1:]
+
+ if m.subtype != zx.ObjectTypeNone && m.subtype != handleInfo.Type {
+ handleClose(&handleInfo.Handle)
+ return newExpectError(ErrIncorrectHandleType, m.subtype, handleInfo.Type)
+ }
+
+ if !m.requiredRightsArePresent(handleInfo.Rights) {
+ handleClose(&handleInfo.Handle)
+ return newExpectError(ErrMissingRequiredHandleRights, m.rights, handleInfo.Rights)
+ }
+
+ handle := handleInfo.Handle
+ reducedRights := m.filterOutUnspecifiedRights(handleInfo.Rights)
+ if handleInfo.Rights != reducedRights {
+ var err error
+ handle, err = handleReplace(handle, reducedRights)
+ if err != nil {
+ handleClose(&handleInfo.Handle)
+ return newValueError(ErrUnableToReduceHandleRights, handle)
+ }
+ }
+
+ v.SetUint32(uint32(handle))
+ return nil
+ default:
+ return newValueError(ErrBadHandleEncoding, h)
+ }
+}
+
+// mProtocol marshals FIDL protocols' client and server ends. A client end
+// (a.k.a "a protocol") is represented by a `Proxy`, whose first field is a
+// `zx.Channel`. Similarly, a server end (a.k.a. "a protocol request") is
+// represented by an `InterfaceRequest` whose first field is a `zx.Channel`.
+type mProtocol mHandle
+
+func (m *mProtocol) asHandle() *mHandle {
+ h := mHandle(*m)
+ return &h
+}
+
+func (m *mProtocol) getMarshalSize(ctx MarshalerContext) int {
+ return m.asHandle().getMarshalSize(ctx)
+}
+func (m *mProtocol) getUnmarshalSize(ctx MarshalerContext) int {
+ return m.asHandle().getUnmarshalSize(ctx)
+}
+
+func (m *mProtocol) marshal(ctx MarshalerContext, v unsafevalue.Value, out *encoder, offset int, depth int) error {
+ return m.asHandle().marshal(ctx, v.StructFieldOffset(0), out, offset, depth)
+}
+
+func (m *mProtocol) unmarshal(ctx MarshalerContext, in *decoder, offset int, depth int, v unsafevalue.Value) error {
+ return m.asHandle().unmarshal(ctx, in, offset, depth, v.StructFieldOffset(0))
+}
diff --git a/src/syscall/zx/fidl/errors.go b/src/syscall/zx/fidl/errors.go
new file mode 100644
index 0000000..9050d8d
--- /dev/null
+++ b/src/syscall/zx/fidl/errors.go
@@ -0,0 +1,280 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package fidl
+
+import (
+ "reflect"
+ "strconv"
+)
+
+// ValidationError represents an error produced in validating a FIDL structure.
+type ValidationError interface {
+ error
+
+ // Code returns the underlying ErrorCode value, which all ValidationErrors
+ // must have.
+ Code() ErrorCode
+}
+
+// Assert that valueError and expectError both implement the ValidationError
+// interface.
+var _ = []ValidationError{
+ valueError{},
+ expectError{},
+}
+
+// ErrorCode represents a set of machine-readable error codes each ValidationError
+// has.
+type ErrorCode uint32
+
+const (
+ Invalid ErrorCode = iota
+ ErrUnknownOrdinal
+ ErrInvalidInlineType
+ ErrInvalidPointerType
+ ErrVectorTooLong
+ ErrStringTooLong
+ ErrUnexpectedOrdinal
+ ErrUnexpectedNullHandle
+ ErrUnexpectedNullRef
+ ErrInvalidBoolValue
+ ErrNotEnoughHandles
+ ErrTooManyHandles
+ ErrBadHandleEncoding
+ ErrNonZeroPadding
+ ErrBadRefEncoding
+ ErrBadInlineIndicatorEncoding
+ ErrStructIsNotPayload
+ ErrInvalidUnionTag
+ ErrInvalidXUnionTag
+ ErrInvalidBitsValue
+ ErrInvalidEnumValue
+ ErrPayloadTooSmall
+ ErrInvalidEmptyStruct
+ ErrInvalidNumBytesInEnvelope
+ ErrInvalidNumHandlesInEnvelope
+ ErrStringNotUTF8
+ ErrUnknownMagic
+ ErrMissingRequiredHandleRights
+ ErrUnableToReduceHandleRights
+ ErrUnspecifiedHandleRights
+ ErrMissingMarshalerContext
+ ErrResponseWithoutRequest
+ ErrDuplicateTxidReceived
+ ErrDuplicateTxidWaiting
+ ErrIncorrectHandleType
+ ErrUnspecifiedHandleType
+ ErrValueTypeHandles
+ ErrExceededMaxOutOfLineDepth
+)
+
+var errorCodeNames = []string{
+ Invalid: "Invalid",
+ ErrUnknownOrdinal: "ErrUnknownOrdinal",
+ ErrInvalidInlineType: "ErrInvalidInlineType",
+ ErrInvalidPointerType: "ErrInvalidPointerType",
+ ErrVectorTooLong: "ErrVectorTooLong",
+ ErrStringTooLong: "ErrStringTooLong",
+ ErrUnexpectedOrdinal: "ErrUnexpectedOrdinal",
+ ErrUnexpectedNullHandle: "ErrUnexpectedNullHandle",
+ ErrUnexpectedNullRef: "ErrUnexpectedNullRef",
+ ErrInvalidBoolValue: "ErrInvalidBoolValue",
+ ErrNotEnoughHandles: "ErrNotEnoughHandles",
+ ErrTooManyHandles: "ErrTooManyHandles",
+ ErrNonZeroPadding: "ErrNonZeroPadding",
+ ErrBadHandleEncoding: "ErrBadHandleEncoding",
+ ErrBadRefEncoding: "ErrBadRefEncoding",
+ ErrBadInlineIndicatorEncoding: "ErrBadInlineIndicatorEncoding",
+ ErrStructIsNotPayload: "ErrStructIsNotPayload",
+ ErrInvalidUnionTag: "ErrInvalidUnionTag",
+ ErrInvalidXUnionTag: "ErrInvalidXUnionTag",
+ ErrInvalidBitsValue: "ErrInvalidBitsValue",
+ ErrInvalidEnumValue: "ErrInvalidEnumValue",
+ ErrPayloadTooSmall: "ErrPayloadTooSmall",
+ ErrInvalidEmptyStruct: "ErrInvalidEmptyStruct",
+ ErrInvalidNumBytesInEnvelope: "ErrInvalidNumBytesInEnvelope",
+ ErrInvalidNumHandlesInEnvelope: "ErrInvalidNumHandlesInEnvelope",
+ ErrStringNotUTF8: "ErrStringNotUTF8",
+ ErrUnknownMagic: "ErrUnknownMagic",
+ ErrMissingRequiredHandleRights: "ErrMissingRequiredHandleRights",
+ ErrUnableToReduceHandleRights: "ErrUnableToReduceHandleRights",
+ ErrUnspecifiedHandleRights: "ErrUnspecifiedHandleRights",
+ ErrMissingMarshalerContext: "ErrMissingMarshalerContext",
+ ErrResponseWithoutRequest: "ErrResponseWithoutRequest",
+ ErrDuplicateTxidReceived: "ErrDuplicateTxidReceived",
+ ErrDuplicateTxidWaiting: "ErrDuplicateTxidWaiting",
+ ErrIncorrectHandleType: "ErrIncorrectHandleType",
+ ErrUnspecifiedHandleType: "ErrUnspecifiedHandleType",
+ ErrValueTypeHandles: "ErrValueTypeHandles",
+ ErrExceededMaxOutOfLineDepth: "ErrExceededMaxOutOfLineDepth",
+}
+
+func (c ErrorCode) String() string {
+ if len(errorCodeNames) < int(c) {
+ return strconv.Itoa(int(c))
+ }
+ return errorCodeNames[int(c)]
+}
+
+// Error implements error for ErrorCode
+func (e ErrorCode) Error() string {
+ switch e {
+ case ErrUnknownOrdinal:
+ return "unknown ordinal"
+ case ErrInvalidInlineType:
+ return "invalid inline type"
+ case ErrInvalidPointerType:
+ return "invalid pointer type"
+ case ErrVectorTooLong:
+ return "vector exceeds maximum size"
+ case ErrStringTooLong:
+ return "string exceeds maximum size"
+ case ErrUnexpectedOrdinal:
+ return "unexpected ordinal"
+ case ErrUnexpectedNullHandle:
+ return "unexpected null handle"
+ case ErrUnexpectedNullRef:
+ return "unexpected null reference"
+ case ErrInvalidBoolValue:
+ return "unexpected boolean value"
+ case ErrNotEnoughHandles:
+ return "not enough handles"
+ case ErrTooManyHandles:
+ return "too many handles"
+ case ErrBadHandleEncoding:
+ return "bad encoding for handle"
+ case ErrNonZeroPadding:
+ return "invalid non-zero padding"
+ case ErrBadRefEncoding:
+ return "bad encoding for ref"
+ case ErrBadInlineIndicatorEncoding:
+ return "bad encoding for inline indicator"
+ case ErrStructIsNotPayload:
+ return "golang struct type must implement Payload"
+ case ErrInvalidUnionTag:
+ return "union tag out of bounds"
+ case ErrInvalidXUnionTag:
+ return "strict xunion has unknown tag"
+ case ErrInvalidBitsValue:
+ return "invalid bits value"
+ case ErrInvalidEnumValue:
+ return "invalid enum value"
+ case ErrPayloadTooSmall:
+ return "payload too small"
+ case ErrInvalidEmptyStruct:
+ return "invalid empty struct"
+ case ErrInvalidNumBytesInEnvelope:
+ return "unexpected num bytes in envelope"
+ case ErrInvalidNumHandlesInEnvelope:
+ return "unexpected num handles in envelope"
+ case ErrStringNotUTF8:
+ return "string is not valid UTF8"
+ case ErrUnknownMagic:
+ return "header magic number is not supported"
+ case ErrMissingRequiredHandleRights:
+ return "missing required handle rights"
+ case ErrUnableToReduceHandleRights:
+ return "unable to reduce handle rights"
+ case ErrUnspecifiedHandleRights:
+ return "handle rights are unspecified"
+ case ErrMissingMarshalerContext:
+ return "missing marshaler context"
+ case ErrResponseWithoutRequest:
+ return "received response without request (unexpected transaction id in mesage)"
+ case ErrDuplicateTxidReceived:
+ return "received multiple messages with the same transaction id"
+ case ErrDuplicateTxidWaiting:
+ return "multiple channel calls waiting on same transaction id"
+ case ErrIncorrectHandleType:
+ return "handle type is incorrect"
+ case ErrUnspecifiedHandleType:
+ return "handle type is unspecified"
+ case ErrValueTypeHandles:
+ return "cannot encode or decode value type with handles in unknown data"
+ case ErrExceededMaxOutOfLineDepth:
+ return "exceeded maxOutOfLineDepth"
+ default:
+ return e.String()
+ }
+}
+
+// Code implements the ValidationError interface.
+func (e ErrorCode) Code() ErrorCode {
+ return e
+}
+
+// stringer is an interface for types for which a string representation
+// may be derived.
+type stringer interface {
+ String() string
+}
+
+// toString generates the string representation for a limited set of types.
+func toString(value interface{}) string {
+ if e, ok := value.(error); ok {
+ return e.Error()
+ }
+ if s, ok := value.(stringer); ok {
+ return s.String()
+ }
+ if numbers, ok := value.([]uint64); ok {
+ s := "["
+ for _, num := range numbers {
+ s += strconv.FormatUint(num, 10)
+ s += " "
+ }
+ s += "]"
+ return s
+ }
+ t := reflect.TypeOf(value)
+ switch t.Kind() {
+ case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
+ return strconv.FormatInt(reflect.ValueOf(value).Int(), 10)
+ case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
+ return strconv.FormatUint(reflect.ValueOf(value).Uint(), 10)
+ case reflect.String:
+ return value.(string)
+ default:
+ return "##BADVALUE##"
+ }
+}
+
+// valueError represents an error that refers to a single value.
+type valueError struct {
+ ErrorCode
+ value interface{}
+}
+
+func newValueError(code ErrorCode, value interface{}) valueError {
+ return valueError{
+ ErrorCode: code,
+ value: value,
+ }
+}
+
+func (e valueError) Error() string {
+ return e.ErrorCode.Error() + ": " + toString(e.value)
+}
+
+// expectError represents an error that refers to the expectation of a
+// certain value, and displays a comparison between the actual value and
+// the expected value.
+type expectError struct {
+ ErrorCode
+ expect interface{}
+ actual interface{}
+}
+
+func newExpectError(code ErrorCode, expect, actual interface{}) expectError {
+ return expectError{
+ ErrorCode: code,
+ expect: expect,
+ actual: actual,
+ }
+}
+
+func (e expectError) Error() string {
+ return e.ErrorCode.Error() + ": expected " + toString(e.expect) + ", got " + toString(e.actual)
+}
diff --git a/src/syscall/zx/fidl/fidl_test/README b/src/syscall/zx/fidl/fidl_test/README
new file mode 100644
index 0000000..24beb3c
--- /dev/null
+++ b/src/syscall/zx/fidl/fidl_test/README
@@ -0,0 +1,9 @@
+# Adding new test files
+
+New test files must be in the `fidl_test` package, and have a `_test.go`
+suffix in the file name.
+
+Adding a non `_test.go` file with `package fidl_test` will result in
+error messages about declaring multiple packages (`fidl` and `fidl_test`)
+because Go strips the `_test` suffix from packages in `_test.go`
+files only, when there are non `_test.go` files in the directory.
diff --git a/src/syscall/zx/fidl/fidl_test/conformance_test_files.gni b/src/syscall/zx/fidl/fidl_test/conformance_test_files.gni
new file mode 100644
index 0000000..420cffe
--- /dev/null
+++ b/src/syscall/zx/fidl/fidl_test/conformance_test_files.gni
@@ -0,0 +1,13 @@
+# Copyright 2021 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# List of files needed for conformance tests.
+# This is used for a copying step in the conformance test build.
+# This gni file is defined separately from the BUILD.gn file because they
+# live in different repos and to avoid a migration when the file list changes.
+go_conformance_test_files = [
+ "testutil_test.go",
+ "zx_fuchsia_test.go",
+ "zx_notfuchsia_test.go",
+]
diff --git a/src/syscall/zx/fidl/fidl_test/encoding_fuchsia_test.go b/src/syscall/zx/fidl/fidl_test/encoding_fuchsia_test.go
new file mode 100644
index 0000000..0791f31
--- /dev/null
+++ b/src/syscall/zx/fidl/fidl_test/encoding_fuchsia_test.go
@@ -0,0 +1,907 @@
+// Copyright 2018 The Fuchsia 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 fidl_test
+
+import (
+ "bytes"
+ "fmt"
+ "reflect"
+ "strings"
+ "syscall/zx"
+ "syscall/zx/fidl"
+ "syscall/zx/fidl/internal/bindingstest"
+ "testing"
+)
+
+var testCtx fidl.MarshalerContext
+
+func TestMarshalMessageHeader(t *testing.T) {
+ data := []byte{
+ 0x12, 0x34, 0x56, 0x78, // txid
+ 0xAB, 0xCD, 0xEF, // flags
+ 0x01, // magic number
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // method ordinal
+ }
+ var header fidl.MessageHeader
+ hnb, _, err := fidl.Unmarshal(data, nil, &header)
+ if err != nil {
+ t.Fatalf("unmarshal failed: %s", err)
+ }
+ if hnb != 16 {
+ t.Fatalf("expected 16 bytes read, was %d", hnb)
+ }
+ if header.Magic != 0x01 {
+ t.Fatalf("expected header txid of 0x01, was %x", header.Magic)
+ }
+}
+
+// TODO(https://fxbug.dev/7832): do we purposefully provide buffers too big in
+// conformance tests to ensure the returned size is properly calculated? If
+// not, we should keep this sort of testing, or augment the conformance tests.
+func TestCheckUnmarshalReadSize(t *testing.T) {
+ examples := [][]byte{
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, // these will go unread
+ },
+ }
+ for _, data := range examples {
+ var message bindingstest.EmptyStruct
+ hnb, _, err := fidl.Unmarshal(data, nil, &message)
+ if err != nil {
+ t.Fatalf("unmarshal failed: %s", err)
+ }
+ if hnb != 8 {
+ t.Fatalf("expected 8 bytes read, was %d", hnb)
+ }
+ }
+}
+
+// TODO(https://fxbug.dev/7832): We are lacking in negative tests in the conformance suite.
+func TestEnvelopeByteCountTooLarge(t *testing.T) {
+ input := []byte{
+ 0x21, 0xEB, 0x7E, 0x76, 0x00, 0x00, 0x00, 0x00, // ordinal + padding
+ 0xa0, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, // byte + handle count
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // envelope present
+ 0xef, 0xbe, 0xad, 0xde, 0x11, 0xba, 0x5e, 0xba, // data
+ }
+
+ var message bindingstest.XUnion1Struct
+ _, _, err := fidl.Unmarshal(input, nil, &message)
+ want := fidl.ErrPayloadTooSmall
+ switch err := err.(type) {
+ case fidl.ValidationError:
+ if err.Code() == want {
+ return
+ }
+ }
+ t.Fatalf("got fidl.Unmarshal(...) = (_, _, %v), want %s", err, want)
+}
+
+// TODO(https://fxbug.dev/7832): We are lacking in negative tests in the conformance suite.
+func TestEnvelopeHandleCountTooLarge(t *testing.T) {
+ input := []byte{
+ 0x21, 0xEB, 0x7E, 0x76, 0x00, 0x00, 0x00, 0x00, // ordinal + padding
+ 0x08, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, // byte + invalid handle count
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // envelope present
+ 0xef, 0xbe, 0xad, 0xde, 0x11, 0xba, 0x5e, 0xba, // data
+ }
+
+ var message bindingstest.XUnion1Struct
+ _, _, err := fidl.Unmarshal(input, nil, &message)
+ want := fidl.ErrTooManyHandles
+ switch err := err.(type) {
+ case fidl.ValidationError:
+ if err.Code() == want {
+ return
+ }
+ }
+ t.Fatalf("got fidl.Unmarshal(...) = (_, _, %v), want %s", err, want)
+}
+
+// TODO(https://fxbug.dev/7832): We are lacking in negative tests in the conformance suite.
+func TestEnvelopeInvalidPresence(t *testing.T) {
+ input := []byte{
+ 0x21, 0xEB, 0x7E, 0x76, 0x00, 0x00, 0x00, 0x00, // ordinal + padding
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // byte + handle count
+ 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, // invalid envelope presence
+ 0xef, 0xbe, 0xad, 0xde, 0x11, 0xba, 0x5e, 0xba, // data
+ }
+
+ var message bindingstest.XUnion1Struct
+ _, _, err := fidl.Unmarshal(input, nil, &message)
+ want := fidl.ErrBadRefEncoding
+ switch err := err.(type) {
+ case fidl.ValidationError:
+ if err.Code() == want {
+ return
+ }
+ }
+ t.Fatalf("got fidl.Unmarshal(...) = (_, _, %v), want %s", err, want)
+}
+
+type example struct {
+ name string
+ input fidl.Message
+ expectSize int
+}
+
+// general provides test cases used to verify correctness, and
+// benchmark against.
+//
+// Keep these as a slice to preserve consistent ordering when running.
+func general() []example {
+ vmo, err := zx.NewVMO(10, 0)
+ if err != nil {
+ panic(fmt.Sprintf("failed to create vmo: %s", err))
+ }
+ defer func() {
+ if err := vmo.Close(); err != nil {
+ panic(fmt.Sprintf("failed to close vmo: %s", err))
+ }
+ }()
+
+ h0, h1, err := zx.NewChannel(0)
+ if err != nil {
+ panic(fmt.Sprintf("failed to create channel: %s", err))
+ }
+ defer func() {
+ if err := h0.Close(); err != nil {
+ panic(fmt.Sprintf("failed to close channel: %s", err))
+ }
+ if err := h1.Close(); err != nil {
+ panic(fmt.Sprintf("failed to close channel: %s", err))
+ }
+ }()
+
+ st1 := bindingstest.SimpleTable{}
+ st1.SetX(42)
+ st1.SetY(67)
+
+ return []example{
+ // TODO(https://fxbug.dev/7832): We lack coverage of floats in the conformance test suite.
+ {"float1", &bindingstest.TestFloat1{A: -36.0}, 8},
+ {"float2", &bindingstest.TestFloat2{A: -1254918271.0}, 8},
+ {"float3", &bindingstest.TestFloat3{A: 1241.1, B: 0.2141, C: 20, D: 0.0}, 32},
+
+ // TODO(https://fxbug.dev/7832): We just recently added handles in conformance suite. Are these covered?
+ {"handle1", &bindingstest.TestHandle1{
+ A: zx.Handle(22),
+ B: zx.HandleInvalid,
+ C: vmo,
+ D: zx.VMO(zx.HandleInvalid),
+ }, 16},
+ {"handle2", &bindingstest.TestHandle2{
+ A: []zx.Handle{zx.Handle(vmo)},
+ B: []zx.VMO{zx.VMO(zx.HandleInvalid)},
+ }, 48},
+
+ // TODO(https://fxbug.dev/7832): Here we're checking the special logic adapting channels to
+ // `request<P>` or `P` representations. This is not supported by GIDL yet.
+ {"interface1", &bindingstest.TestInterface1{
+ A: bindingstest.Test1WithCtxInterface(fidl.ChannelProxy{Channel: h0}),
+ B: bindingstest.Test1WithCtxInterface(fidl.ChannelProxy{Channel: zx.Channel(zx.HandleInvalid)}),
+ C: bindingstest.Test1WithCtxInterfaceRequest(fidl.InterfaceRequest{Channel: h1}),
+ D: bindingstest.Test1WithCtxInterfaceRequest(fidl.InterfaceRequest{
+ Channel: zx.Channel(zx.HandleInvalid),
+ }),
+ }, 16},
+
+ {"recursive-struct", &bindingstest.TestRecursiveStruct{
+ S: &bindingstest.TestRecursiveStruct{
+ S: &bindingstest.TestRecursiveStruct{},
+ },
+ }, 24},
+ }
+}
+
+func check(t *testing.T, input fidl.Message, expectSize int) {
+ t.Helper()
+ var respb [zx.ChannelMaxMessageBytes]byte
+ var resphd [zx.ChannelMaxMessageHandles]zx.HandleDisposition
+ nb, nh, err := fidl.MarshalWithContext(testCtx, input, respb[:], resphd[:])
+ if err != nil {
+ t.Fatalf("marshal: failed: %s", err)
+ }
+ if nb != expectSize {
+ t.Fatalf("marshal: expected size %d but got %d: %s", expectSize, nb, respb[:nb])
+ }
+ var resphi [zx.ChannelMaxMessageHandles]zx.HandleInfo
+ for i := 0; i < nh; i++ {
+ resphi[i] = zx.HandleInfo{
+ Handle: resphd[i].Handle,
+ Type: resphd[i].Type,
+ Rights: resphd[i].Rights,
+ }
+ }
+ output := makeDefault(reflect.TypeOf(input))
+ nbActual, nhActual, err := fidl.UnmarshalWithContext2(testCtx, respb[:nb], resphi[:nh], output)
+ if err != nil {
+ t.Fatalf("unmarshal: failed: %s", err)
+ }
+ if !reflect.DeepEqual(input, output) {
+ t.Fatalf("unmarshal: expected: %#v, got: %#v", input, output)
+ }
+ if nb != nbActual {
+ t.Fatalf("unmarshal: num bytes, expected: %d, got: %d", nb, nbActual)
+ }
+ if nh != nhActual {
+ t.Fatalf("unmarshal: num handles, expected: %d, got: %d", nh, nhActual)
+ }
+}
+
+func TestCorrectness(t *testing.T) {
+ for _, ex := range general() {
+ t.Run(ex.name, func(t *testing.T) {
+ check(t, ex.input, ex.expectSize)
+ })
+ }
+}
+
+type errorCaseUnmarshal struct {
+ name string
+ message fidl.Message
+ input []byte
+ errorCode fidl.ErrorCode
+}
+
+// TODO(https://fxbug.dev/7832): We are lacking in negative tests in the conformance suite.
+var baseErrorCasesUnmarshal = []errorCaseUnmarshal{
+ {"empty-array-bindingstest.TestSimple", &bindingstest.TestSimple{}, []byte{}, fidl.ErrPayloadTooSmall},
+ {"nil-array-bindingstest.TestSimple", &bindingstest.TestSimple{}, nil, fidl.ErrPayloadTooSmall},
+ {"small-array-bindingstest.TestSimple", &bindingstest.TestSimple{}, []byte{0x00, 0x0}, fidl.ErrPayloadTooSmall},
+ {"empty-array-bindingstest.TestSimpleBool", &bindingstest.TestSimpleBool{}, []byte{}, fidl.ErrPayloadTooSmall},
+ {"nil-array-bindingstest.TestSimpleBool", &bindingstest.TestSimpleBool{}, nil, fidl.ErrPayloadTooSmall},
+ {"empty-array-bindingstest.TestAlignment1", &bindingstest.TestAlignment1{}, []byte{}, fidl.ErrPayloadTooSmall},
+ {"nil-array-bindingstest.TestAlignment1", &bindingstest.TestAlignment1{}, nil, fidl.ErrPayloadTooSmall},
+ {"small-array-bindingstest.TestAlignment1", &bindingstest.TestAlignment1{}, []byte{0x00, 0x0}, fidl.ErrPayloadTooSmall},
+ {"empty-array-bindingstest.TestAlignment2", &bindingstest.TestAlignment2{}, []byte{}, fidl.ErrPayloadTooSmall},
+ {"nil-array-bindingstest.TestAlignment2", &bindingstest.TestAlignment2{}, nil, fidl.ErrPayloadTooSmall},
+ {"small-array-bindingstest.TestAlignment2", &bindingstest.TestAlignment2{}, []byte{0x00, 0x0}, fidl.ErrPayloadTooSmall},
+ {"small-array-bindingstest.TestAlignment2-2", &bindingstest.TestAlignment2{}, make([]byte, 10), fidl.ErrPayloadTooSmall},
+ {"empty-array-bindingstest.TestFloat1", &bindingstest.TestFloat1{}, []byte{}, fidl.ErrPayloadTooSmall},
+ {"nil-array-bindingstest.TestFloat1", &bindingstest.TestFloat1{}, nil, fidl.ErrPayloadTooSmall},
+ {"small-array-bindingstest.TestFloat1", &bindingstest.TestFloat1{}, []byte{0x00, 0x0}, fidl.ErrPayloadTooSmall},
+ {"empty-array-bindingstest.TestFloat2", &bindingstest.TestFloat2{}, []byte{}, fidl.ErrPayloadTooSmall},
+ {"nil-array-bindingstest.TestFloat2", &bindingstest.TestFloat2{}, nil, fidl.ErrPayloadTooSmall},
+ {"small-array-bindingstest.TestFloat2", &bindingstest.TestFloat2{}, []byte{0x00, 0x0}, fidl.ErrPayloadTooSmall},
+ {"empty-array-bindingstest.TestFloat3", &bindingstest.TestFloat3{}, []byte{}, fidl.ErrPayloadTooSmall},
+ {"nil-array-bindingstest.TestFloat3", &bindingstest.TestFloat3{}, nil, fidl.ErrPayloadTooSmall},
+ {"small-array-bindingstest.TestFloat3", &bindingstest.TestFloat3{}, []byte{0x00, 0x0}, fidl.ErrPayloadTooSmall},
+ {"small-array-bindingstest.TestFloat3-2", &bindingstest.TestFloat3{}, make([]byte, 6), fidl.ErrPayloadTooSmall},
+ {"nil-array-bindingstest.TestArray1", &bindingstest.TestArray1{}, nil, fidl.ErrPayloadTooSmall},
+ {"empty-array-bindingstest.TestArray1", &bindingstest.TestArray1{}, []byte{}, fidl.ErrPayloadTooSmall},
+ {"two-bytes-array-bindingstest.TestArray1", &bindingstest.TestArray1{}, []byte{0x00, 0x0}, fidl.ErrPayloadTooSmall},
+ {"nil-array-bindingstest.TestArray2", &bindingstest.TestArray2{}, nil, fidl.ErrPayloadTooSmall},
+ {"empty-array-bindingstest.TestArray2", &bindingstest.TestArray2{}, []byte{}, fidl.ErrPayloadTooSmall},
+ {"two-bytes-array-bindingstest.TestArray2", &bindingstest.TestArray2{}, []byte{0x00, 0x0}, fidl.ErrPayloadTooSmall},
+ {"six-bytes-array-bindingstest.TestArray2", &bindingstest.TestArray2{}, make([]byte, 6), fidl.ErrPayloadTooSmall},
+ {"nil-array-bindingstest.TestArray3", &bindingstest.TestArray3{}, nil, fidl.ErrPayloadTooSmall},
+ {"empty-array-bindingstest.TestArray3", &bindingstest.TestArray3{}, []byte{}, fidl.ErrPayloadTooSmall},
+ {"two-bytes-array-bindingstest.TestArray3", &bindingstest.TestArray3{}, []byte{0x00, 0x0}, fidl.ErrPayloadTooSmall},
+ {"six-bytes-array-bindingstest.TestArray3", &bindingstest.TestArray3{}, make([]byte, 6), fidl.ErrPayloadTooSmall},
+ {"thirteen-bytes-array-bindingstest.TestArray3", &bindingstest.TestArray3{}, make([]byte, 13), fidl.ErrPayloadTooSmall},
+ {"nil-array-bindingstest.TestArray4", &bindingstest.TestArray4{}, nil, fidl.ErrPayloadTooSmall},
+ {"empty-array-bindingstest.TestArray4", &bindingstest.TestArray4{}, []byte{}, fidl.ErrPayloadTooSmall},
+ {"two-bytes-array-bindingstest.TestArray4", &bindingstest.TestArray4{}, []byte{0x00, 0x0}, fidl.ErrPayloadTooSmall},
+ {"nil-array-bindingstest.TestString1", &bindingstest.TestString1{}, nil, fidl.ErrPayloadTooSmall},
+ {"empty-array-bindingstest.TestString1", &bindingstest.TestString1{}, []byte{}, fidl.ErrPayloadTooSmall},
+ {"two-bytes-array-bindingstest.TestString1", &bindingstest.TestString1{}, []byte{0x00, 0x0}, fidl.ErrPayloadTooSmall},
+ {"nil-array-bindingstest.TestString2", &bindingstest.TestString2{}, nil, fidl.ErrPayloadTooSmall},
+ {"empty-array-bindingstest.TestString2", &bindingstest.TestString2{}, []byte{}, fidl.ErrPayloadTooSmall},
+ {"two-bytes-array-bindingstest.TestString2", &bindingstest.TestString2{}, []byte{0x00, 0x0}, fidl.ErrPayloadTooSmall},
+ {"nil-array-TestStruct2", &bindingstest.TestStruct2{}, nil, fidl.ErrPayloadTooSmall},
+ {"empty-array-TestStruct2", &bindingstest.TestStruct2{}, []byte{}, fidl.ErrPayloadTooSmall},
+ {"two-bytes-array-TestStruct2", &bindingstest.TestStruct2{}, []byte{0x00, 0x0}, fidl.ErrPayloadTooSmall},
+ {"six-bytes-array-TestStruct2", &bindingstest.TestStruct2{}, make([]byte, 6), fidl.ErrPayloadTooSmall},
+ {"thirteen-bytes-array-TestStruct2", &bindingstest.TestStruct2{}, make([]byte, 13), fidl.ErrPayloadTooSmall},
+ {"empty-struct-non-zero", &bindingstest.EmptyStruct{}, emptyStructWithOneInsteadOfZero, fidl.ErrInvalidEmptyStruct},
+}
+
+// TODO(https://fxbug.dev/7832): We are lacking in negative tests in the conformance suite.
+var allErrorCasesUnmarshal = append(baseErrorCasesUnmarshal, []errorCaseUnmarshal{
+ {"string-wrong-ptr-no-alloc", &bindingstest.TestStringWithBound{}, []byte{
+ 3, 0, 0, 0, 0, 0, 0, 0, // length
+ 0, 0, 0, 0, 0, 0, 0, 0, // ptr (no alloc)
+ // no data, unmarshal should fail before
+ }, fidl.ErrUnexpectedNullRef},
+ {"string-wrong-ptr-incorrect", &bindingstest.TestStringWithBound{}, []byte{
+ 3, 0, 0, 0, 0, 0, 0, 0, // length
+ 0, 0, 0, 0, 0, 0, 0, 1, // ptr (no alloc)
+ // no data, unmarshal should fail before
+ }, fidl.ErrBadRefEncoding},
+ {"string-too-long", &bindingstest.TestStringWithBound{}, []byte{
+ 9, 0, 0, 0, 0, 0, 0, 0, // length (too long)
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // ptr
+ // no data, unmarshal should fail before
+ }, fidl.ErrStringTooLong},
+ {"string-has-truncated-data", &bindingstest.TestStringWithBound{}, []byte{
+ 8, 0, 0, 0, 0, 0, 0, 0, // length
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // ptr
+ 0x41, 0x72, 0x67, 0x68, 0x68, 0x68, 0x68, // only 7 bytes
+ }, fidl.ErrPayloadTooSmall},
+
+ {"opt-string-wrong-ptr-incorrect", &bindingstest.TestOptStringWithBound{}, []byte{
+ 3, 0, 0, 0, 0, 0, 0, 0, // length
+ 0, 0, 0, 0, 0, 0, 0, 1, // ptr (no alloc)
+ // no data, unmarshal should fail before
+ }, fidl.ErrBadRefEncoding},
+ {"opt-string-too-long", &bindingstest.TestOptStringWithBound{}, []byte{
+ 9, 0, 0, 0, 0, 0, 0, 0, // length (too long)
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // ptr
+ // no data, unmarshal should fail before
+ }, fidl.ErrStringTooLong},
+}...)
+
+var emptyStructWithOneInsteadOfZero = []byte{
+ 1, // empty struct with invalid value of 1 (instead of zero)
+ 0, 0, 0, 0, 0, 0, 0, // 7 bytes of padding after empty struct, to align to 64 bits
+}
+
+// TODO(https://fxbug.dev/7832): These should move into the conformance suite too as they captured
+// actual regressions that occurred, which none of the other tests captured.
+func TestAllManualSuccessCases(t *testing.T) {
+ // TODO(fxbug.dev/7957): Complete conversion.
+ var ipAddressConfig bindingstest.IpAddressConfig
+ ipAddressConfig.SetDhcp(true)
+ successCase{
+ name: "add-ethernet-device-request",
+ context: testCtx,
+ input: &bindingstest.TestAddEthernetDeviceRequest{
+ TopologicalPath: "@/dev/sys/pci/00:03.0/e1000/ethernet",
+ Config: bindingstest.InterfaceConfig{
+ Name: "ethp0003",
+ IpAddressConfig: ipAddressConfig,
+ },
+ Device: bindingstest.EthernetDeviceWithCtxInterface{Channel: zx.Channel(0xdeadbeef)},
+ },
+ bytes: []byte{
+ 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // topological_path
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // topological_path
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // name
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // name
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // subnet (dhcp variant)
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // subnet envelope (num bytes/handles)
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // subnet envelope (PRESENT)
+ 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, // device (handle present)
+ 0x40, 0x2f, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x79, // @/dev/sy
+ 0x73, 0x2f, 0x70, 0x63, 0x69, 0x2f, 0x30, 0x30, // s/pci/00
+ 0x3a, 0x30, 0x33, 0x2e, 0x30, 0x2f, 0x65, 0x31, // :03.0/e1
+ 0x30, 0x30, 0x30, 0x2f, 0x65, 0x74, 0x68, 0x65, // 000/ethe
+ 0x72, 0x6e, 0x65, 0x74, 0x00, 0x00, 0x00, 0x00, // rnet
+ 0x65, 0x74, 0x68, 0x70, 0x30, 0x30, 0x30, 0x33, // ethp0003
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // subnet (dhcp data)
+ },
+ handleInfos: []zx.HandleInfo{
+ {
+ Handle: zx.Handle(0xdeadbeef),
+ Rights: fidl.ProtocolRights,
+ Type: zx.ObjectTypeChannel,
+ },
+ },
+ checkRights: true,
+ }.check(t)
+
+ successCase{
+ name: "package-resolver-resolve-request",
+ context: testCtx,
+ input: &bindingstest.TestPackageResolverResolveRequest{
+ PackageUrl: "a",
+ Selectors: []string{"a"},
+ UpdatePolicy: bindingstest.UpdatePolicy{
+ FetchIfAbsent: true,
+ AllowOldVersions: true,
+ },
+ Dir: bindingstest.EthernetDeviceWithCtxInterfaceRequest{Channel: zx.Channel(0xdeadbeef)},
+ },
+ bytes: []byte{
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // package url size
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // package url ptr
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // selectors size
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // selectors ptr
+ 0x01, 0x01, 0x00, 0x00, // policy struct + padding
+ 0xFF, 0xFF, 0xFF, 0xFF, // request handle
+ // out of line data
+ 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ handleInfos: []zx.HandleInfo{
+ {
+ Handle: zx.Handle(0xdeadbeef),
+ Rights: fidl.ProtocolRights,
+ Type: zx.ObjectTypeChannel,
+ },
+ },
+ checkRights: true,
+ }.check(t)
+}
+
+// Handle rights is not in conformance testing.
+func TestHandleRightsMarshalUnmarshal(t *testing.T) {
+ data := make([]byte, 1024)
+ handleDispositions := make([]zx.HandleDisposition, 1)
+ input := &bindingstest.HandleRightsSubtypeTestStruct{H: []zx.VMO{5}}
+ _, nh, err := fidl.Marshal(input, data, handleDispositions)
+ if err != nil {
+ t.Fatal(err)
+ }
+ if nh != 1 {
+ t.Fatalf("unexpected number of handles: want %d, got %d", 1, nh)
+ }
+ if handleDispositions[0].Handle != *input.H[0].Handle() {
+ t.Fatalf("expected handle to match: want %d, got %d", input.H, handleDispositions[0].Handle)
+ }
+ if want := zx.RightDuplicate | zx.RightTransfer; handleDispositions[0].Rights != want {
+ t.Fatalf("incorrect rights: want %d, got %d", want, handleDispositions[0].Rights)
+ }
+ if want := zx.ObjectTypeVmo; handleDispositions[0].Type != want {
+ t.Fatalf("incorrect subtype: want %d, got %d", want, handleDispositions[0].Type)
+ }
+
+ // normal unmarshaling
+ {
+ handleInfos := []zx.HandleInfo{
+ {
+ Handle: handleDispositions[0].Handle,
+ Rights: handleDispositions[0].Rights,
+ Type: handleDispositions[0].Type,
+ },
+ }
+ output := &bindingstest.HandleRightsSubtypeTestStruct{}
+ if _, _, err := fidl.Unmarshal(data, handleInfos, output); err != nil {
+ t.Fatal(err)
+ }
+ if output.H[0] != input.H[0] {
+ t.Fatalf("incorrect handle: want %d, got %d", input.H, output.H)
+ }
+ }
+
+ // missing required rights
+ {
+ handleInfos := []zx.HandleInfo{
+ {
+ Handle: handleDispositions[0].Handle,
+ Rights: 0x1,
+ Type: handleDispositions[0].Type,
+ },
+ }
+ output := &bindingstest.HandleRightsSubtypeTestStruct{}
+ func() {
+ _, _, err := fidl.Unmarshal(data, handleInfos, output)
+ want := fidl.ErrMissingRequiredHandleRights
+ switch err := err.(type) {
+ case fidl.ValidationError:
+ if err.Code() == want {
+ return
+ }
+ }
+ t.Fatalf("got fidl.Unmarshal(...) = (_, _, %v), want %s", want, err)
+ }()
+ }
+
+ // incorrect handle type
+ {
+ handleInfos := []zx.HandleInfo{
+ {
+ Handle: handleDispositions[0].Handle,
+ Rights: handleDispositions[0].Rights,
+ Type: 1,
+ },
+ }
+ output := &bindingstest.HandleRightsSubtypeTestStruct{}
+ func() {
+ _, _, err := fidl.Unmarshal(data, handleInfos, output)
+ want := fidl.ErrIncorrectHandleType
+ switch err := err.(type) {
+ case fidl.ValidationError:
+ if err.Code() == want {
+ return
+ }
+ }
+ t.Fatalf("got fidl.Unmarshal(...) = (_, _, %v), want %s", want, err)
+ }()
+ }
+}
+
+// Handle rights is not in conformance testing.
+func TestHandleUncheckedSubtypeMarshalUnmarshal(t *testing.T) {
+ data := make([]byte, 1024)
+ handleDispositions := make([]zx.HandleDisposition, 1)
+ input := &bindingstest.PlainHandleTestStruct{H: zx.Handle(5)}
+ _, nh, err := fidl.Marshal(input, data, handleDispositions)
+ if err != nil {
+ t.Fatal(err)
+ }
+ if nh != 1 {
+ t.Fatalf("unexpected number of handles: want %d, got %d", 1, nh)
+ }
+ if handleDispositions[0].Handle != input.H {
+ t.Fatalf("expected handle to match: want %d, got %d", input.H, handleDispositions[0].Handle)
+ }
+ if handleDispositions[0].Type != 0 {
+ t.Fatalf("incorrect subtype: want %d, got %d", 0, handleDispositions[0].Type)
+ }
+
+ // normal unmarshaling
+ {
+ handleInfos := []zx.HandleInfo{
+ {
+ Handle: handleDispositions[0].Handle,
+ Type: handleDispositions[0].Type,
+ },
+ }
+ output := &bindingstest.PlainHandleTestStruct{}
+ if _, _, err := fidl.Unmarshal(data, handleInfos, output); err != nil {
+ t.Fatal(err)
+ }
+ if output.H != input.H {
+ t.Fatalf("incorrect handle: want %d, got %d", input.H, output.H)
+ }
+ }
+
+ // unchecked handle type
+ {
+ handleInfos := []zx.HandleInfo{
+ {
+ Handle: handleDispositions[0].Handle,
+ Type: 1,
+ },
+ }
+ output := &bindingstest.PlainHandleTestStruct{}
+ if _, _, err = fidl.Unmarshal(data, handleInfos, output); err != nil {
+ t.Fatalf("expected handle of type ZX_OBJ_TYPE_NONE to be unchecked")
+ }
+ if output.H != input.H {
+ t.Fatalf("incorrect handle: want %d, got %d", input.H, output.H)
+ }
+ }
+}
+
+// This is a specific test checking that the marshaler construction properly
+// fails with a clear error message if fed incorrect generated code. Hence,
+// this has to stay a hand written test.
+func TestFailureNullableTable(t *testing.T) {
+ type TestNullableTable struct {
+ _ struct{} `fidl:"s"`
+ A *bindingstest.SimpleTable `fidl:"0" fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ }
+ _, err := fidl.CreateMarshaler(TestNullableTable{})
+ if err == nil {
+ t.Fatalf("expected error creating marshaler for nullable table")
+ }
+ if !strings.Contains(err.Error(), "optional field marshaler") {
+ t.Fatalf("unexpected error: %s", err.Error())
+ }
+}
+
+// TODO(https://fxbug.dev/7832): We are lacking in negative tests in the conformance suite.
+func TestFailuresMarshal(t *testing.T) {
+ v1 := []int64{1, 2, 3}
+ cases := []struct {
+ name string
+ input fidl.Message
+ errorCode fidl.ErrorCode
+ }{
+ {"string3-string-too-long", &bindingstest.TestString3{
+ A: [2]string{
+ "too long!", // limit is 4, provided is longer(tm)
+ "g",
+ },
+ B: [2]*string{nil, nil},
+ }, fidl.ErrStringTooLong},
+ {"vector1-C-vector-too-long", &bindingstest.TestVector1{
+ A: []int8{1, 2, 3, 4},
+ B: nil,
+ C: []int32{99, 100, 101}, // limit is 2, provided is 3
+ D: nil,
+ }, fidl.ErrVectorTooLong},
+ {"vector1-D-vector-too-long", &bindingstest.TestVector1{
+ A: []int8{1, 2, 3, 4},
+ B: nil,
+ C: []int32{99},
+ D: &v1, // limit is 2, provided is 3
+ }, fidl.ErrVectorTooLong},
+ }
+ for _, ex := range cases {
+ t.Run(ex.name, func(t *testing.T) {
+ var respb [zx.ChannelMaxMessageBytes]byte
+ var resphd [zx.ChannelMaxMessageHandles]zx.HandleDisposition
+ _, _, err := fidl.MarshalWithContext(testCtx, ex.input, respb[:], resphd[:])
+ switch err := err.(type) {
+ case fidl.ValidationError:
+ if err.Code() == ex.errorCode {
+ return
+ }
+ }
+ t.Fatalf("got fidl.MarshalWithContext(...) = (_, _, %v), want %s", ex.errorCode, err)
+ })
+ }
+}
+
+// TODO(https://fxbug.dev/7832): We are lacking in negative tests in the conformance suite.
+func TestFailuresUnmarshalNoHandles(t *testing.T) {
+ for _, ex := range allErrorCasesUnmarshal {
+ t.Run(ex.name, func(t *testing.T) {
+ _, _, err := fidl.Unmarshal(ex.input, nil, ex.message)
+ switch err := err.(type) {
+ case fidl.ValidationError:
+ if err.Code() == ex.errorCode {
+ return
+ }
+ }
+ t.Fatalf("got fidl.Unmarshal(...) = (_, _, %v), want %s", ex.errorCode, err)
+ })
+ }
+}
+
+// TODO(https://fxbug.dev/62647): Move to GIDL once we support protocol handles.
+func TestConformanceClientEnd(t *testing.T) {
+ successCase{
+ name: "handles-clientend",
+ context: testCtx,
+ input: &bindingstest.HasClientEnd{
+ ClientEnd: bindingstest.ExampleProtocolWithCtxInterface(fidl.ChannelProxy{
+ Channel: zx.Channel(0x44332211),
+ }),
+ },
+ bytes: []byte{
+ 0xff, 0xff, 0xff, 0xff, // handle present
+ 0x00, 0x00, 0x00, 0x00, // padding
+ },
+ handleInfos: []zx.HandleInfo{
+ {
+ Handle: zx.Handle(0x44332211),
+ Rights: fidl.ProtocolRights,
+ Type: zx.ObjectTypeChannel,
+ },
+ },
+ checkRights: true,
+ }.check(t)
+}
+
+// TODO(https://fxbug.dev/62647): Move to GIDL once we support protocol handles.
+func TestConformanceServerEnd(t *testing.T) {
+ successCase{
+ name: "handles-serverend",
+ context: testCtx,
+ input: &bindingstest.HasServerEnd{
+ ServerEnd: bindingstest.ExampleProtocolWithCtxInterfaceRequest(fidl.InterfaceRequest{
+ Channel: zx.Channel(0x44332211),
+ }),
+ },
+ bytes: []byte{
+ 0xff, 0xff, 0xff, 0xff, // handle present
+ 0x00, 0x00, 0x00, 0x00, // padding
+ },
+ handleInfos: []zx.HandleInfo{
+ {
+ Handle: zx.Handle(0x44332211),
+ Rights: fidl.ProtocolRights,
+ Type: zx.ObjectTypeChannel,
+ },
+ },
+ checkRights: true,
+ }.check(t)
+}
+
+func TestBitsApi(t *testing.T) {
+ raw := uint32(0b110101)
+
+ unknownStrict := bindingstest.StrictBits(raw)
+ if !unknownStrict.HasUnknownBits() {
+ t.Error("unknown bits returned false for HasUnknownBits")
+ }
+ if unknownStrict.GetUnknownBits() != 0b110100 {
+ t.Errorf(
+ "Got wrong unknown bits: expected %b, was %b", 0b110100, unknownStrict.GetUnknownBits())
+ }
+ if unknownStrict.InvertBits() != 0b10 {
+ t.Errorf(
+ "Got wrong InvertBits: expected %b, got %b", 0b10, unknownStrict.InvertBits())
+ }
+ if unknownStrict.InvertBits().InvertBits() != 0b1 {
+ t.Errorf(
+ "Got wrong double InvertBits: expected %b, got %b", 0b1, unknownStrict.InvertBits().InvertBits())
+ }
+ if !unknownStrict.HasBits(0b1) {
+ t.Errorf("Failed to match on known bits for HasBits")
+ }
+ if !unknownStrict.HasBits(0b110000) {
+ t.Errorf("Failed to match on unknown bits for HasBits")
+ }
+ if unknownStrict.HasBits(0b10) {
+ t.Errorf("Matched on known bits for HasBits when it should not")
+ }
+ if unknownStrict.HasBits(0b1000) {
+ t.Errorf("Matched on unknown bits for HasBits when it should not")
+ }
+ if unknownStrict.ClearBits(0b1) != bindingstest.StrictBits(0b110100) {
+ t.Errorf("Failed to clear known bits for ClearBits")
+ }
+ if unknownStrict.ClearBits(0b10000) != bindingstest.StrictBits(0b100101) {
+ t.Errorf("Failed to clear unknown bits for ClearBits")
+ }
+ if unknownStrict != unknownStrict.ClearBits(0b10) {
+ t.Errorf("Cleared known bits when it should not")
+ }
+ if unknownStrict != unknownStrict.ClearBits(0b1000) {
+ t.Errorf("Cleared unknown bits when it should not")
+ }
+
+ knownStrict := unknownStrict & bindingstest.StrictBits_Mask
+ if knownStrict != bindingstest.StrictBitsOne {
+ t.Errorf("Expected masked value: %b, got %b", bindingstest.StrictBitsOne, knownStrict)
+ }
+
+ unknownFlexible := bindingstest.FlexibleBits(raw)
+ if !unknownFlexible.HasUnknownBits() {
+ t.Error("unknown bits returned false for HasUnknownBits")
+ }
+ if unknownFlexible.GetUnknownBits() != 0b110100 {
+ t.Errorf(
+ "Got wrong unknown bits: expected %b, was %b", 0b110100, unknownFlexible.GetUnknownBits())
+ }
+ if unknownFlexible.InvertBits() != 0b10 {
+ t.Errorf(
+ "Got wrong InvertBits: expected %b, got %b", 0b10, unknownFlexible.InvertBits())
+ }
+ if unknownFlexible.InvertBits().InvertBits() != 0b1 {
+ t.Errorf(
+ "Got wrong double InvertBits: expected %b, got %b", 0b1, unknownFlexible.InvertBits().InvertBits())
+ }
+ if !unknownFlexible.HasBits(0b1) {
+ t.Errorf("Failed to match on known bits for HasBits")
+ }
+ if !unknownFlexible.HasBits(0b110000) {
+ t.Errorf("Failed to match on unknown bits for HasBits")
+ }
+ if unknownFlexible.HasBits(0b10) {
+ t.Errorf("Matched on known bits for HasBits when it should not")
+ }
+ if unknownFlexible.HasBits(0b1000) {
+ t.Errorf("Matched on unknown bits for HasBits when it should not")
+ }
+ if unknownFlexible.ClearBits(0b1) != bindingstest.FlexibleBits(0b110100) {
+ t.Errorf("Failed to clear known bits for ClearBits")
+ }
+ if unknownFlexible.ClearBits(0b10000) != bindingstest.FlexibleBits(0b100101) {
+ t.Errorf("Failed to clear unknown bits for ClearBits")
+ }
+ if unknownFlexible != unknownFlexible.ClearBits(0b10) {
+ t.Errorf("Cleared known bits when it should not")
+ }
+ if unknownFlexible != unknownFlexible.ClearBits(0b1000) {
+ t.Errorf("Cleared unknown bits when it should not")
+ }
+
+ knownFlexible := unknownFlexible & bindingstest.FlexibleBits_Mask
+ if knownFlexible != bindingstest.FlexibleBitsOne {
+ t.Errorf("Expected masked value: %b, got %b", bindingstest.FlexibleBitsOne, knownFlexible)
+ }
+}
+
+func TestUnionApi(t *testing.T) {
+ union := bindingstest.XUnion1{
+ I_xUnion1Tag: 4,
+ I_unknownData: fidl.UnknownData{
+ Bytes: []byte{51},
+ },
+ }
+ if union.Which() != bindingstest.XUnion1_unknownData {
+ t.Errorf("Expected unknown union to have unknown tag")
+ }
+
+ data := union.GetUnknownData()
+ if want := []byte{51}; !bytes.Equal(data.Bytes, want) {
+ t.Errorf("Expected unknown data to be %s, got: %s", want, data.Bytes)
+ }
+ if len(data.Handles) != 0 {
+ t.Errorf("Expected empty unknown handles, got %d", data.Handles)
+ }
+
+ union.SetD(1.0)
+ if union != bindingstest.XUnion1WithD(1.0) {
+ t.Errorf("Expected modified-in-place union modified from unknown variant and constructed union to be equal")
+ }
+
+ union.SetA([3]int8{0, 1, 2})
+ if union != bindingstest.XUnion1WithA([3]int8{0, 1, 2}) {
+ t.Errorf("Expected modified-in-place union modified from known variant and constructed union to be equal")
+ }
+}
+
+func TestTableApi(t *testing.T) {
+ var emptyTable bindingstest.SimpleTable
+ if emptyTable.HasUnknownData() {
+ t.Errorf("Expected new table to have empty unknown data")
+ }
+
+ table := bindingstest.SimpleTable{
+ I_unknownData: map[uint64]fidl.UnknownData{
+ 3: {
+ Bytes: []byte{51},
+ },
+ },
+ }
+
+ table.SetX(5)
+ if !table.HasX() {
+ t.Errorf("Expected X to be set")
+ }
+ if table.GetX() != 5 {
+ t.Errorf("Expected X value 5, got: %d", table.GetX())
+ }
+ if table.HasY() {
+ t.Errorf("Expected Y to be unset")
+ }
+ y := table.GetYWithDefault(13)
+ if y != 13 {
+ t.Errorf("Expected default Y value 13, got: %d", y)
+ }
+ if !table.HasUnknownData() {
+ t.Errorf("Expected table to have unknown data")
+ }
+ unknownData := table.GetUnknownData()
+ data, ok := unknownData[3]
+ if !ok {
+ t.Errorf("Expected table to have unknown ordinal 3")
+ }
+ if want := []byte{51}; !bytes.Equal(data.Bytes, want) {
+ t.Errorf("Expected unknown data to be %s, got: %s", want, data.Bytes)
+ }
+ if len(data.Handles) != 0 {
+ t.Errorf("Expected empty unknown handles")
+ }
+}
+
+func TestRecursiveVectors(t *testing.T) {
+ successCase{
+ name: "recursive-vector-struct",
+ context: testCtx,
+ input: &bindingstest.TestRecursiveVectorStruct{
+ V: []*bindingstest.TestRecursiveVectorStruct{
+ {
+ V: []*bindingstest.TestRecursiveVectorStruct{},
+ },
+ },
+ },
+ bytes: []byte{
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ },
+ }.check(t)
+
+ a := bindingstest.TestRecursiveVectorUnionWithA(1.0)
+ b := bindingstest.TestRecursiveVectorUnionWithB([]*bindingstest.TestRecursiveVectorUnion{
+ &a,
+ })
+ successCase{
+ name: "recursive-vector-union",
+ context: testCtx,
+ input: &bindingstest.TestRecursiveUnionStruct{
+ U: &b,
+ },
+ bytes: []byte{
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00,
+ },
+ }.check(t)
+}
diff --git a/src/syscall/zx/fidl/fidl_test/testutil_test.go b/src/syscall/zx/fidl/fidl_test/testutil_test.go
new file mode 100644
index 0000000..e2f1edd
--- /dev/null
+++ b/src/syscall/zx/fidl/fidl_test/testutil_test.go
@@ -0,0 +1,306 @@
+// Copyright 2019 The Fuchsia 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 fidl_test
+
+import (
+ "bytes"
+ "fmt"
+ "reflect"
+ "testing"
+
+ "syscall/zx"
+ "syscall/zx/fidl"
+)
+
+func init() {
+ fidl.AllowV2WireFormatDecoding()
+}
+
+func makeDefault(typ reflect.Type) fidl.Message {
+ if typ.Kind() != reflect.Ptr || typ.Elem().Kind() != reflect.Struct {
+ panic(fmt.Sprintf("expecting *struct, actual %s", typ))
+ }
+ return reflect.New(typ.Elem()).Interface().(fidl.Message)
+}
+
+// Note: fidl.Marshal uses the provided buffers to encode and works positionally to allow
+// repeated encoding in the same buffer. This function doesn't do that and always starts
+// with an empty buffer so tests do not cover the repeated encoding cases.
+func encode(context fidl.MarshalerContext, input fidl.Message) ([]byte, []zx.HandleDisposition, error) {
+ var respb [zx.ChannelMaxMessageBytes]byte
+ for i := range respb {
+ respb[i] = 0xaa
+ }
+ var resphd [zx.ChannelMaxMessageHandles]zx.HandleDisposition
+ nb, nh, err := fidl.MarshalWithContext(context, input, respb[:], resphd[:])
+ if err != nil {
+ return nil, nil, err
+ }
+ return respb[:nb], resphd[:nh], nil
+}
+
+func decode(context fidl.MarshalerContext, typ reflect.Type, b []byte, hi []zx.HandleInfo) (nb int, nh int, msg fidl.Message, err error) {
+ msg = makeDefault(typ)
+ nb, nh, err = fidl.UnmarshalWithContext2(context, b, hi, msg)
+ return nb, nh, msg, err
+}
+
+type encodeSuccessCase struct {
+ name string
+ context fidl.MarshalerContext
+ input fidl.Message
+ bytes []byte
+ handleDispositions []zx.HandleDisposition
+ // This parameter is used so that encodeSuccessCases generated from GIDL
+ // ignore handle rights, but manual test cases can still opt to check them.
+ // Setting it to true also enables stricter checking of the subtype (see
+ // comment below)
+ checkRights bool
+}
+
+func (ex encodeSuccessCase) check(t *testing.T) {
+ t.Run(ex.name+" encode", func(t *testing.T) {
+ t.Cleanup(func() {
+ for _, hd := range ex.handleDispositions {
+ if err := handleClose(&hd.Handle); err != nil {
+ t.Error(err)
+ }
+ }
+ })
+ b, hd, err := encode(ex.context, ex.input)
+ if err != nil {
+ t.Fatalf("failed: %s", err)
+ }
+ if !bytes.Equal(ex.bytes, b) {
+ t.Fatalf("expected %x, got %x", ex.bytes, b)
+ }
+ if len(ex.handleDispositions) == 0 {
+ if len(hd) != 0 {
+ t.Fatalf("no handles expected, got %d", len(hd))
+ }
+ } else if len(ex.handleDispositions) != len(hd) {
+ t.Fatalf("expected %d handles, but encode outputed %d handles", len(ex.handleDispositions), len(hd))
+ } else {
+ if ex.checkRights {
+ if !reflect.DeepEqual(ex.handleDispositions, hd) {
+ t.Errorf("expected %#v, got %#v", ex.handleDispositions, hd)
+ }
+ }
+ }
+ })
+}
+
+type decodeSuccessCase struct {
+ name string
+ context fidl.MarshalerContext
+ input fidl.Message
+ bytes []byte
+ handleInfos []zx.HandleInfo
+ equalsExpected func(t *testing.T, value interface{})
+}
+
+func (ex decodeSuccessCase) check(t *testing.T) {
+ t.Run(ex.name+" decode", func(t *testing.T) {
+ t.Cleanup(func() {
+ for _, handleInfo := range ex.handleInfos {
+ if err := handleClose(&handleInfo.Handle); err != nil {
+ t.Error(err)
+ }
+ }
+ })
+ nbActual, nhActual, output, err := decode(ex.context, reflect.TypeOf(ex.input), ex.bytes, ex.handleInfos)
+ if err != nil {
+ t.Fatalf("failed: %s", err)
+ }
+ ex.equalsExpected(t, output)
+ if len(ex.bytes) != nbActual {
+ t.Fatalf("num bytes, expected: %d, got: %d", len(ex.bytes), nbActual)
+ }
+ if len(ex.handleInfos) != nhActual {
+ t.Fatalf("num handles, expected: %d, got: %d", len(ex.handleInfos), nhActual)
+ }
+ })
+}
+
+// Represents a success case where both encode and decode should succeed.
+type successCase struct {
+ name string
+ context fidl.MarshalerContext
+ input fidl.Message
+ bytes []byte
+ handleInfos []zx.HandleInfo
+ checkRights bool
+}
+
+func (ex successCase) check(t *testing.T) {
+ var handleDispositions []zx.HandleDisposition
+ for _, handleInfo := range ex.handleInfos {
+ handleDispositions = append(handleDispositions, zx.HandleDisposition{
+ Operation: zx.HandleOpMove,
+ Handle: handleInfo.Handle,
+ Type: handleInfo.Type,
+ Rights: handleInfo.Rights,
+ Result: zx.ErrOk,
+ })
+ }
+ encodeSuccessCase{
+ name: ex.name,
+ context: ex.context,
+ input: ex.input,
+ bytes: ex.bytes,
+ handleDispositions: handleDispositions,
+ checkRights: ex.checkRights,
+ }.check(t)
+ decodeSuccessCase{
+ name: ex.name,
+ context: ex.context,
+ input: ex.input,
+ bytes: ex.bytes,
+ handleInfos: ex.handleInfos,
+ equalsExpected: func(t *testing.T, input interface{}) {
+ if !reflect.DeepEqual(ex.input, input) {
+ t.Fatalf("expected: %#v, got: %#v", ex.input, input)
+ }
+ },
+ }.check(t)
+}
+
+type encodeFailureCase struct {
+ name string
+ context fidl.MarshalerContext
+ input fidl.Message
+ code fidl.ErrorCode
+ handles []zx.Handle
+}
+
+func (ex encodeFailureCase) check(t *testing.T) {
+ t.Run(ex.name, func(t *testing.T) {
+ _, _, err := encode(ex.context, ex.input)
+ if err == nil {
+ t.Fatalf("encoding failure %s expected, but no errors were found", ex.code.String())
+ }
+ fidlError, ok := err.(fidl.ValidationError)
+ if !ok {
+ t.Fatalf("wrong error type: got %T, want fidl.ValidationError", err)
+ }
+ if fidlError.Code() != ex.code {
+ t.Fatalf("wrong error code: got %s, want %s", fidlError.Code().String(), ex.code.String())
+ }
+ for i, handle := range ex.handles {
+ if isHandleValid(&handle) {
+ t.Errorf("failed to close handle at index #%d: %d", i, handle)
+ }
+ }
+ })
+}
+
+type decodeFailureCase struct {
+ name string
+ context fidl.MarshalerContext
+ valTyp reflect.Type
+ bytes []byte
+ code fidl.ErrorCode
+ handleInfos []zx.HandleInfo
+}
+
+func (ex decodeFailureCase) check(t *testing.T) {
+ t.Run(ex.name, func(t *testing.T) {
+ _, _, _, err := decode(ex.context, ex.valTyp, ex.bytes, ex.handleInfos)
+ if err == nil {
+ t.Fatalf("decoding failure %s expected, but no errors were found", ex.code.String())
+ }
+ fidlError, ok := err.(fidl.ValidationError)
+ if !ok {
+ t.Fatalf("wrong error type: got %T, want fidl.ValidationError", err)
+ }
+ if fidlError.Code() != ex.code {
+ t.Fatalf("wrong error code: got %s, want %s", fidlError.Code().String(), ex.code.String())
+ }
+ for i, info := range ex.handleInfos {
+ if isHandleValid(&info.Handle) {
+ t.Fatalf("failed to close handle at index #%d: %v", i, info)
+ }
+ }
+ })
+}
+
+type handleDef struct {
+ subtype zx.ObjectType
+ rights zx.Rights
+}
+
+// createHandlesFromHandleDef returns a list handles where subtype of result[i] == subtypes[i]
+func createHandlesFromHandleDef(defs []handleDef) []zx.Handle {
+ // calculate the number of handles of each subtype that is needed
+ handleCounts := make(map[zx.ObjectType]int)
+ for _, def := range defs {
+ handleCounts[def.subtype]++
+ }
+
+ // batch create the handles for each subtype. this makes it possible to
+ // use both handles of a pair whenever possible
+ handles := make(map[zx.ObjectType][]zx.Handle)
+ for subtype, count := range handleCounts {
+ switch subtype {
+ case zx.ObjectTypeChannel:
+ handles[subtype] = makeChannels(count)
+ case zx.ObjectTypeEvent:
+ handles[subtype] = makeEvents(count)
+ default:
+ panic(fmt.Sprintf("Unsupported handle subtype %d", subtype))
+ }
+ }
+
+ // rearrange the created handles into the order specified by the input
+ result := make([]zx.Handle, len(defs))
+ for i, def := range defs {
+ subtype := def.subtype
+ handleCounts[subtype]--
+ var err error
+ handle := handles[subtype][handleCounts[subtype]]
+ result[i], err = handleReplace(handle, def.rights)
+ if err != nil {
+ panic(fmt.Sprintf("Error in handle replace: %v", err))
+ }
+ }
+ return result
+}
+
+func makeChannels(count int) []zx.Handle {
+ channels := make([]zx.Handle, count)
+ for i := 0; i < count/2; i++ {
+ c1, c2, err := newChannel(0)
+ if err != nil {
+ panic(err)
+ }
+ channels[i*2] = zx.Handle(c1)
+ channels[i*2+1] = zx.Handle(c2)
+ }
+
+ if count%2 == 1 {
+ c1, c2, err := newChannel(0)
+ if err != nil {
+ panic(err)
+ }
+ channels[count-1] = zx.Handle(c1)
+ if err := channelClose(&c2); err != nil {
+ panic(err)
+ }
+ }
+
+ return channels
+}
+
+func makeEvents(count int) []zx.Handle {
+ events := make([]zx.Handle, count)
+ for i := 0; i < count; i++ {
+ event, err := newEvent(0)
+ if err != nil {
+ panic(err)
+ }
+ events[i] = zx.Handle(event)
+ }
+ return events
+}
diff --git a/src/syscall/zx/fidl/fidl_test/zx_fuchsia_test.go b/src/syscall/zx/fidl/fidl_test/zx_fuchsia_test.go
new file mode 100644
index 0000000..3108e85
--- /dev/null
+++ b/src/syscall/zx/fidl/fidl_test/zx_fuchsia_test.go
@@ -0,0 +1,22 @@
+// 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 fidl_test
+
+import "syscall/zx"
+
+func handleClose(h *zx.Handle) error {
+ err := h.Close()
+ if err, ok := err.(*zx.Error); ok && err.Status == zx.ErrBadHandle {
+ return nil
+ }
+ return err
+}
+
+var handleReplace = zx.Handle.Replace
+var handleGetBasicInfo = (*zx.Handle).GetInfoHandleBasic
+var channelClose = (*zx.Channel).Close
+var newChannel = zx.NewChannel
+var newEvent = zx.NewEvent
+var isHandleValid = (*zx.Handle).GetInfoHandleValid
diff --git a/src/syscall/zx/fidl/fidl_test/zx_notfuchsia_test.go b/src/syscall/zx/fidl/fidl_test/zx_notfuchsia_test.go
new file mode 100644
index 0000000..a69ae8f
--- /dev/null
+++ b/src/syscall/zx/fidl/fidl_test/zx_notfuchsia_test.go
@@ -0,0 +1,44 @@
+// 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.
+
+// +build !fuchsia
+
+package fidl_test
+
+import "syscall/zx"
+
+var handleCounter = 0
+
+func handleClose(*zx.Handle) error {
+ return nil
+}
+
+func handleReplace(handle zx.Handle, rights zx.Rights) (zx.Handle, error) {
+ return nextHandle(), nil
+}
+
+func handleGetBasicInfo(handle *zx.Handle) (zx.InfoHandleBasic, error) {
+ panic("shouldn't be called on host")
+}
+
+func channelClose(*zx.Channel) error {
+ return nil
+}
+
+func newChannel(uint32) (zx.Channel, zx.Channel, error) {
+ return zx.Channel(nextHandle()), zx.Channel(nextHandle()), nil
+}
+
+func newEvent(uint32) (zx.Event, error) {
+ return zx.Event(nextHandle()), nil
+}
+
+func isHandleValid(handle *zx.Handle) bool {
+ return false
+}
+
+func nextHandle() zx.Handle {
+ handleCounter++
+ return zx.Handle(handleCounter)
+}
diff --git a/src/syscall/zx/fidl/interface.go b/src/syscall/zx/fidl/interface.go
new file mode 100644
index 0000000..3ba9f15
--- /dev/null
+++ b/src/syscall/zx/fidl/interface.go
@@ -0,0 +1,335 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package fidl
+
+import (
+ "sync"
+ "syscall/zx"
+ "syscall/zx/internal/context"
+)
+
+// ServiceRequest is an abstraction over a FIDL interface request which is
+// intended to be used as part of service discovery.
+type ServiceRequest interface {
+ // Name returns the name of the service being requested.
+ Name() string
+
+ // ToChannel returns the underlying channel of the ServiceRequest.
+ ToChannel() zx.Channel
+}
+
+// InterfaceRequest is a wrapper type around a channel and represents the server side
+// of a FIDL interface, to be sent to a server as a request.
+type InterfaceRequest struct {
+ zx.Channel
+}
+
+// NewInterfaceRequest generates two sides of a channel with one layer of
+// type casts out of the way to minimize the amount of generated code. Semantically,
+// the two sides of the channel represent the interface request and the client
+// side of the interface (the proxy). It returns an error on failure.
+func NewInterfaceRequest() (InterfaceRequest, *ChannelProxy, error) {
+ h0, h1, err := newChannel(0)
+ if err != nil {
+ return InterfaceRequest{}, nil, err
+ }
+ return InterfaceRequest{Channel: h0}, &ChannelProxy{Channel: h1}, nil
+}
+
+// Proxy represents the client side of a FIDL interface.
+type Proxy interface {
+ IsValid() bool
+ Send(ordinal uint64, req Message) error
+ Recv(ordinal uint64, resp Message) error
+ Call(ordinal uint64, req Message, resp Message) error
+}
+
+type DispatchArgs struct {
+ Ctx Context
+ Ordinal uint64
+ Bytes []byte
+ HandleInfos []zx.HandleInfo
+}
+
+// Stub represents a generated type which wraps the server-side implementation of a
+// FIDL interface.
+//
+// It contains logic which is able to dispatch into the correct implementation given
+// the incoming message ordinal and its data.
+type Stub interface {
+ // Dispatch dispatches into the appropriate method implementation for a FIDL
+ // interface by using the ordinal.
+ //
+ // It also takes the data as bytes and transforms it into arguments usable by
+ // the method implementation. It then optionally returns a response if the
+ // method has a response, in which case, the boolean return value is true.
+ Dispatch(args DispatchArgs) (Message, bool, error)
+}
+
+type readResult struct {
+ header MessageHeader
+ objBytes []byte // decoded bytes (excluding header)
+ handleInfos []zx.HandleInfo // decoded handles
+ // full objects retreived from the byte and handles pool to be returned to the pool.
+ poolBytes []byte
+ poolHandleInfos []zx.HandleInfo
+}
+
+// ChannelProxy a Proxy that is backed by a channel.
+type ChannelProxy struct {
+ // Channel is the underlying channel endpoint for this interface.
+ zx.Channel
+
+ mu struct {
+ sync.Mutex
+ lastTxid uint32
+ results map[uint32]readResult
+ // 0-txid corresponds to event messages that lack request/response pair.
+ // Multiple of these can be read before they are processed and there needs
+ // to be a place to store them.
+ zeroTxidResults []readResult
+ err error
+ readerElected bool
+ callsAwaitingReply map[uint32]struct{}
+ }
+ cond sync.Cond
+ initOnce sync.Once
+}
+
+func (p *ChannelProxy) init() {
+ p.cond.L = &p.mu.Mutex
+ p.mu.results = make(map[uint32]readResult)
+ p.mu.callsAwaitingReply = make(map[uint32]struct{})
+}
+
+// Assert that ChannelProxy implements the Proxy interface.
+var _ Proxy = &ChannelProxy{}
+
+// IsValid returns true if the underlying channel is a valid handle.
+func (p *ChannelProxy) IsValid() bool {
+ return p.Channel.Handle().IsValid()
+}
+
+// Send sends the request over the channel with the specified ordinal
+// without a response.
+func (p *ChannelProxy) Send(ordinal uint64, req Message) error {
+ // Messages that do not require a response should be written with transaction id 0.
+ // (See https://fuchsia.dev/fuchsia-src/development/languages/fidl/reference/wire-format).
+ err := p.send(0, ordinal, req)
+ if err != nil {
+ // TODO: do something with this error?
+ _ = channelClose(&p.Channel)
+ }
+ return err
+}
+
+func (p *ChannelProxy) send(txid uint32, ordinal uint64, req Message) error {
+ reqHeader := newCtx().NewHeader()
+
+ reqHeader.Txid = txid
+ reqHeader.Ordinal = ordinal
+
+ respb := messageBytesPool.Get().([]byte)
+ resphd := messageHandleDispositionsPool.Get().([]zx.HandleDisposition)
+
+ defer messageBytesPool.Put(respb)
+ defer messageHandleDispositionsPool.Put(resphd)
+
+ nb, nh, err := MarshalHeaderThenMessage(&reqHeader, req, respb[:], resphd[:])
+ if err != nil {
+ return err
+ }
+
+ // Write the encoded bytes to the channel.
+ return withRetryContext(context.Background(), func() error {
+ return channelWriteEtc(&p.Channel, respb[:nb], resphd[:nh], 0)
+ }, *p.Channel.Handle(), zx.SignalChannelWritable, zx.SignalChannelPeerClosed)
+}
+
+// Recv waits for an event and writes the response into the response.
+func (p *ChannelProxy) Recv(ordinal uint64, resp Message) error {
+ // Messages that do not require a response should be written with transaction id 0.
+ // (See https://fuchsia.dev/fuchsia-src/development/languages/fidl/reference/wire-format).
+ err := p.recv(0, ordinal, resp)
+ if err != nil {
+ // TODO: do something with this error?
+ _ = channelClose(&p.Channel)
+ }
+ return err
+}
+
+func (res *readResult) consume(ordinal uint64, resp Message) error {
+ defer messageBytesPool.Put(res.poolBytes)
+ defer messageHandleInfosPool.Put(res.poolHandleInfos)
+
+ if res.header.Ordinal != ordinal {
+ return newExpectError(ErrUnexpectedOrdinal, ordinal, res.header.Ordinal)
+ }
+
+ var err error
+ if resp != nil {
+ _, _, err = UnmarshalWithContext2(res.header.NewCtx(), res.objBytes, res.handleInfos, resp)
+ }
+
+ return err
+}
+
+func (p *ChannelProxy) read(header *MessageHeader, poolBytes []byte, poolHandleInfos []zx.HandleInfo) ([]byte, []zx.HandleInfo, error) {
+ var nb, nh uint32
+ if err := withRetryContext(context.Background(), func() error {
+ var err error
+ nb, nh, err = channelReadEtc(&p.Channel, poolBytes[:], poolHandleInfos[:], 0)
+ return err
+ }, *p.Channel.Handle(), zx.SignalChannelReadable, zx.SignalChannelPeerClosed); err != nil {
+ return nil, nil, err
+ }
+ objBytes := poolBytes[:nb]
+ handleInfos := poolHandleInfos[:nh]
+
+ hnb, _, err := Unmarshal(objBytes, nil, header)
+ if err != nil {
+ return nil, nil, err
+ }
+ objBytes = objBytes[hnb:]
+ if !header.IsSupportedVersion() {
+ return nil, nil, ErrUnknownMagic
+ }
+ return objBytes, handleInfos, nil
+}
+
+func (p *ChannelProxy) recv(txid uint32, ordinal uint64, resp Message) error {
+ p.initOnce.Do(p.init)
+
+ p.mu.Lock()
+ defer p.mu.Unlock()
+
+ for {
+ // Check if a result for this txid already exists and handle it.
+ if txid == 0 {
+ if len(p.mu.zeroTxidResults) != 0 {
+ res := p.mu.zeroTxidResults[0]
+ // Reset the lost element to release references it holds, since
+ // slicing does not release the underlying memory.
+ p.mu.zeroTxidResults[0] = readResult{}
+ p.mu.zeroTxidResults = p.mu.zeroTxidResults[1:]
+ return res.consume(ordinal, resp)
+ }
+ } else {
+ if res, ok := p.mu.results[txid]; ok {
+ delete(p.mu.results, txid)
+ return res.consume(ordinal, resp)
+ }
+ }
+
+ // Check if the channel already errored.
+ if p.mu.err != nil {
+ return p.mu.err
+ }
+
+ // If another goroutine is reading from the channel, wait for it to finish.
+ if p.mu.readerElected {
+ p.cond.Wait()
+ continue
+ }
+
+ // This goroutine is the reader, so read from the channel.
+ p.mu.readerElected = true
+
+ poolBytes := messageBytesPool.Get().([]byte)
+ poolHandleInfos := messageHandleInfosPool.Get().([]zx.HandleInfo)
+ var header MessageHeader
+ if err := func() error {
+ p.mu.Unlock()
+ objBytes, handleInfos, err := p.read(&header, poolBytes, poolHandleInfos)
+ p.mu.Lock()
+
+ if err != nil {
+ return err
+ }
+ result := readResult{
+ header: header,
+ objBytes: objBytes,
+ handleInfos: handleInfos,
+ poolBytes: poolBytes,
+ poolHandleInfos: poolHandleInfos,
+ }
+ if header.Txid == 0 {
+ p.mu.zeroTxidResults = append(p.mu.zeroTxidResults, result)
+ } else {
+ if _, ok := p.mu.results[header.Txid]; ok {
+ return newValueError(ErrDuplicateTxidReceived, header.Txid)
+ }
+ if _, ok := p.mu.callsAwaitingReply[header.Txid]; !ok {
+ return newValueError(ErrResponseWithoutRequest, header.Txid)
+ }
+ p.mu.results[header.Txid] = result
+ delete(p.mu.callsAwaitingReply, header.Txid)
+ }
+ return nil
+ }(); err != nil {
+ messageBytesPool.Put(poolBytes)
+ messageHandleInfosPool.Put(poolHandleInfos)
+
+ p.mu.err = err
+ // NB: we do not reset p.mu.results because each element there has a
+ // sitting waiter that will consume the result.
+ for _, res := range p.mu.zeroTxidResults {
+ messageBytesPool.Put(res.poolBytes)
+ messageHandleInfosPool.Put(res.poolHandleInfos)
+ }
+ p.mu.zeroTxidResults = nil
+ p.mu.callsAwaitingReply = nil
+ }
+
+ p.mu.readerElected = false
+ p.cond.Broadcast()
+ }
+}
+
+// Call sends the request over the channel with the specified ordinal
+// and synchronously waits for a response. It then writes the response into the
+// response.
+func (p *ChannelProxy) Call(ordinal uint64, req Message, resp Message) error {
+ p.initOnce.Do(p.init)
+
+ err := func() error {
+ var txid uint32
+ if err := func() error {
+ p.mu.Lock()
+ defer p.mu.Unlock()
+
+ if err := p.mu.err; err != nil {
+ return err
+ }
+
+ for {
+ p.mu.lastTxid++
+ // Transaction id 1 through 0x7fffffff are reserved for userspace.
+ // (See https://fuchsia.dev/fuchsia-src/development/languages/fidl/reference/wire-format).
+ if id := p.mu.lastTxid & 0x7fffffff; id != 0 {
+ txid = id
+ break
+ }
+ }
+ if _, ok := p.mu.callsAwaitingReply[txid]; ok {
+ return newValueError(ErrDuplicateTxidWaiting, txid)
+ }
+ p.mu.callsAwaitingReply[txid] = struct{}{}
+ return nil
+ }(); err != nil {
+ return err
+ }
+
+ if err := p.send(txid, ordinal, req); err != nil {
+ return err
+ }
+ return p.recv(txid, ordinal, resp)
+ }()
+ if err != nil {
+ // TODO: do something with this error?
+ _ = channelClose(&p.Channel)
+ }
+ return err
+}
diff --git a/src/syscall/zx/fidl/interface_test.go b/src/syscall/zx/fidl/interface_test.go
new file mode 100644
index 0000000..439d181
--- /dev/null
+++ b/src/syscall/zx/fidl/interface_test.go
@@ -0,0 +1,366 @@
+// Copyright 2019 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.
+
+// `go mod` ignores file names for the purpose of resolving
+// dependencies, and zxwait doesn't build on not-Fuchsia.
+//go:build fuchsia
+// +build fuchsia
+
+package fidl_test
+
+import (
+ "context"
+ "math/rand"
+ "sync"
+ "syscall/zx"
+ "syscall/zx/fidl"
+ "syscall/zx/zxwait"
+ "testing"
+)
+
+var _ fidl.Message = (*message)(nil)
+
+type message struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"0"`
+}
+
+var _mMessage = fidl.MustCreateMarshaler(message{})
+
+func (*message) Marshaler() fidl.Marshaler {
+ return _mMessage
+}
+
+func TestProxySimple(t *testing.T) {
+ c0, c1, err := zx.NewChannel(0)
+ if err != nil {
+ t.Fatal(err)
+ }
+ defer func() {
+ if err := c0.Close(); err != nil {
+ t.Error(err)
+ }
+ if err := c1.Close(); err != nil {
+ t.Error(err)
+ }
+ }()
+
+ var wg sync.WaitGroup
+ defer wg.Wait()
+
+ wg.Add(1)
+ go func() {
+ defer wg.Done()
+ sender := &fidl.ChannelProxy{Channel: c0}
+ if err := sender.Call(1, &message{}, &message{}); err != nil {
+ t.Error(err)
+ }
+ }()
+
+ if err := serve(c1); err != nil {
+ t.Fatal(err)
+ }
+}
+
+func TestCallReturnsError(t *testing.T) {
+ var c zx.Channel // Invalid channel.
+ sender := &fidl.ChannelProxy{Channel: c}
+ if err, ok := sender.Call(1, &message{}, &message{}).(*zx.Error); !(ok && err.Status == zx.ErrBadHandle) {
+ t.Errorf("got sender.Call(...) = %v, want = ErrBadHandle", err)
+ }
+}
+
+func TestCall(t *testing.T) {
+ const concurrency = 10
+ const numMessages = 100
+
+ c0, c1, err := zx.NewChannel(0)
+ if err != nil {
+ t.Fatal(err)
+ }
+ defer func() {
+ if err := c0.Close(); err != nil {
+ t.Log(err)
+ }
+ if err := c1.Close(); err != nil {
+ t.Log(err)
+ }
+ }()
+
+ var wg sync.WaitGroup
+ defer wg.Wait()
+
+ sender := fidl.ChannelProxy{Channel: c0}
+ // Spin up |concurrency| senders, each sending |numMessages|.
+ for i := 0; i < concurrency; i++ {
+ wg.Add(1)
+ go func() {
+ defer wg.Done()
+ for i := 0; i < numMessages; i++ {
+ ordinal := rand.Uint64()
+
+ if err := sender.Call(ordinal, &message{}, &message{}); err != nil {
+ t.Error(err)
+ }
+ }
+ }()
+ }
+
+ // A few extra reads from the channel to observe peer closure.
+ //
+ // This is a regression test for issues where observed errors would cause:
+ //
+ // - all outstanding calls to fail even if their responses had already
+ // been read.
+ //
+ // - pending reads to deadlock because the proxy did not release the "read
+ // lease", causing "followers" to wait indefinitely.
+ for i := 0; i < 5; i++ {
+ wg.Add(1)
+ go func() {
+ defer wg.Done()
+ if err := sender.Recv(0, &message{}); err == nil {
+ t.Error("expected ErrPeerClosed")
+ } else if zerr, ok := err.(*zx.Error); !ok || zerr.Status != zx.ErrPeerClosed {
+ t.Errorf("unexpected error: %s", err)
+ }
+ }()
+ }
+
+ // Echo the |concurrency*numMessages| messages sent by the senders above.
+ for i := 0; i < concurrency*numMessages; i++ {
+ if err := serve(c1); err != nil {
+ t.Fatal(err)
+ }
+ }
+ if err := c1.Close(); err != nil {
+ t.Error(err)
+ }
+}
+
+func TestRecv(t *testing.T) {
+ const n = 100
+ c0, c1, err := zx.NewChannel(0)
+ if err != nil {
+ t.Fatal(err)
+ }
+ defer func() {
+ if err := c0.Close(); err != nil {
+ t.Error(err)
+ }
+ if err := c1.Close(); err != nil {
+ t.Error(err)
+ }
+ }()
+
+ const ordinal uint64 = 1
+
+ var wg sync.WaitGroup
+ defer wg.Wait()
+
+ for i := 0; i < n; i++ {
+ wg.Add(1)
+ go func() {
+ defer wg.Done()
+
+ receiver := &fidl.ChannelProxy{Channel: c1}
+ if err := zxwait.WithRetryContext(context.Background(), func() error {
+ return receiver.Recv(ordinal, &message{})
+ }, *receiver.Channel.Handle(), zx.SignalChannelReadable, zx.SignalChannelPeerClosed); err != nil {
+ t.Error(err)
+ }
+ }()
+ }
+
+ for i := 0; i < n; i++ {
+ sender := &fidl.ChannelProxy{Channel: c0}
+ if err := sender.Send(ordinal, &message{}); err != nil {
+ t.Fatal(err)
+ }
+ }
+}
+
+func TestRecvReturnsError(t *testing.T) {
+ var c zx.Channel // Invalid channel.
+ sender := &fidl.ChannelProxy{Channel: c}
+ if err, ok := sender.Recv(1, &message{}).(*zx.Error); !(ok && err.Status == zx.ErrBadHandle) {
+ t.Errorf("got sender.Recv(...) = %v, want = ErrBadHandle", err)
+ }
+}
+
+func TestMagicNumberSend(t *testing.T) {
+ ch, sh, err := zx.NewChannel(0)
+ if err != nil {
+ t.Fatal(err)
+ }
+ defer func() {
+ if err := ch.Close(); err != nil {
+ t.Error(err)
+ }
+ if err := sh.Close(); err != nil {
+ t.Error(err)
+ }
+ }()
+
+ var msg message
+ client := fidl.ChannelProxy{Channel: ch}
+ if err := client.Send(0, &msg); err != nil {
+ t.Fatal(err)
+ }
+
+ respb := make([]byte, zx.ChannelMaxMessageBytes)
+ resphi := make([]zx.HandleInfo, zx.ChannelMaxMessageHandles)
+ nb, nh, err := sh.ReadEtc(respb[:], resphi[:], 0)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ var header fidl.MessageHeader
+ if err := fidl.UnmarshalHeaderThenMessage(respb[:nb], resphi[:nh], &header, &msg); err != nil {
+ t.Fatal(err)
+ }
+
+ if header.Magic != fidl.FidlWireFormatMagicNumberInitial {
+ t.Fatalf("got header.Magic = %d, want = %d", header.Magic, fidl.FidlWireFormatMagicNumberInitial)
+ }
+}
+
+func TestMagicNumberCheck(t *testing.T) {
+ ch, sh, err := zx.NewChannel(0)
+ if err != nil {
+ t.Fatal(err)
+ }
+ defer func() {
+ if err, ok := ch.Close().(*zx.Error); !(ok && err.Status == zx.ErrBadHandle) {
+ t.Errorf("got ch.Close() = %v, want = ErrBadHandle", err)
+ }
+ if err := sh.Close(); err != nil {
+ t.Error(err)
+ }
+ }()
+
+ client := fidl.ChannelProxy{Channel: ch}
+
+ // send an event with an unknown magic number
+ event := []byte{
+ 0, 0, 0, 0, //txid
+ 0, 0, 0, // flags
+ 0, // magic number,
+ 0, 0, 0, 0, 0, 0, 0, 0, // method ordinal
+ 0, 0, 0, 0, 0, 0, 0, 0, // empty struct data
+ }
+ if err := sh.Write(event, []zx.Handle{}, 0); err != nil {
+ t.Fatal(err)
+ }
+
+ var eventMsg message
+ if err := client.Recv(0, &eventMsg); err != fidl.ErrUnknownMagic {
+ t.Fatalf("got client.Recv(...) = %v, want = %s", err, fidl.ErrUnknownMagic)
+ }
+
+ func() {
+ // read directly from channel to ensure it is closed.
+ _, _, err := sh.Read(nil, nil, 0)
+ switch err := err.(type) {
+ case *zx.Error:
+ if err.Status == zx.ErrPeerClosed {
+ return
+ }
+ }
+ t.Fatalf("got sh.Read(...) = %v, want = %s", err, zx.ErrPeerClosed)
+ }()
+}
+
+func TestConcurrentUseOfChannelProxy(t *testing.T) {
+ const nEvents = 500
+ const nMessages = 500
+
+ clientChan, serverChan, err := zx.NewChannel(0)
+ if err != nil {
+ t.Fatal(err)
+ }
+ defer func() {
+ if err := clientChan.Close(); err != nil {
+ t.Error(err)
+ }
+ if err := serverChan.Close(); err != nil {
+ t.Error(err)
+ }
+ }()
+
+ var wg sync.WaitGroup
+ defer wg.Wait()
+
+ wg.Add(1)
+ go func() {
+ defer wg.Done()
+ for i := 0; i < nMessages; i++ {
+ if err := serve(serverChan); err != nil {
+ t.Error(err)
+ }
+ }
+ }()
+
+ wg.Add(1)
+ go func() {
+ defer wg.Done()
+ sender := &fidl.ChannelProxy{Channel: serverChan}
+ for i := 0; i < nEvents; i++ {
+ if err := sender.Send(1, &message{}); err != nil {
+ t.Error(err)
+ }
+ }
+ }()
+
+ client := &fidl.ChannelProxy{Channel: clientChan}
+
+ for i := 0; i < nMessages; i++ {
+ wg.Add(1)
+ go func() {
+ defer wg.Done()
+ if err := client.Call(1, &message{}, &message{}); err != nil {
+ t.Error(err)
+ }
+ }()
+ }
+
+ for i := 0; i < nEvents; i++ {
+ wg.Add(1)
+ go func() {
+ defer wg.Done()
+ if err := client.Recv(1, &message{}); err != nil {
+ t.Error(err)
+ }
+ }()
+ }
+}
+
+func serve(ch zx.Channel) error {
+ var respb [zx.ChannelMaxMessageBytes]byte
+
+ var header fidl.MessageHeader
+ var msg message
+ if err := zxwait.WithRetryContext(context.Background(), func() error {
+ nb, _, err := ch.Read(respb[:], nil, 0)
+ if err != nil {
+ return err
+ }
+ if err := fidl.UnmarshalHeaderThenMessage(respb[:nb], nil, &header, &msg); err != nil {
+ return err
+ }
+ return nil
+ }, *ch.Handle(), zx.SignalChannelReadable, zx.SignalChannelPeerClosed); err != nil {
+ return err
+ }
+
+ cnb, _, err := fidl.MarshalHeaderThenMessage(&header, &msg, respb[:], nil)
+ if err != nil {
+ return err
+ }
+
+ if err := ch.Write(respb[:cnb], nil, 0); err != nil {
+ return err
+ }
+
+ return nil
+}
diff --git a/src/syscall/zx/fidl/internal/bindingstest/BUILD.gn b/src/syscall/zx/fidl/internal/bindingstest/BUILD.gn
new file mode 100644
index 0000000..98b5941
--- /dev/null
+++ b/src/syscall/zx/fidl/internal/bindingstest/BUILD.gn
@@ -0,0 +1,10 @@
+# Copyright 2018 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//build/fidl/fidl.gni")
+
+fidl("bindingstest") {
+ public_deps = [ "//zircon/vdso/zx" ]
+ sources = [ "test.test.fidl" ]
+}
diff --git a/src/syscall/zx/fidl/internal/bindingstest/impl.go b/src/syscall/zx/fidl/internal/bindingstest/impl.go
new file mode 100644
index 0000000..1d6798e
--- /dev/null
+++ b/src/syscall/zx/fidl/internal/bindingstest/impl.go
@@ -0,0 +1,1883 @@
+// Copyright 2020 The Fuchsia Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// Code generated by third_party/go/regen-fidl; DO NOT EDIT.
+
+package bindingstest
+
+import (
+ _zx "syscall/zx"
+ _bindings "syscall/zx/fidl"
+)
+
+const (
+ KMaxBuf uint64 = 8192
+)
+
+var _ _bindings.Enum = TestUcharEnum(0)
+
+type TestUcharEnum uint8
+
+const (
+ TestUcharEnumUcharEnum1 TestUcharEnum = 1
+ TestUcharEnumUcharEnum2 TestUcharEnum = 2
+)
+
+func (_ TestUcharEnum) I_EnumValues() []TestUcharEnum {
+ return []TestUcharEnum{
+ TestUcharEnumUcharEnum1,
+ TestUcharEnumUcharEnum2,
+ }
+}
+
+func (_ TestUcharEnum) I_EnumIsStrict() bool {
+ return true
+}
+
+func (x TestUcharEnum) IsUnknown() bool {
+ switch x {
+ case 1:
+ return true
+ case 2:
+ return true
+ default:
+ return false
+ }
+}
+
+func (x TestUcharEnum) String() string {
+ switch x {
+ case 1:
+ return "UcharEnum1"
+ case 2:
+ return "UcharEnum2"
+ }
+ return "Unknown"
+}
+
+var _ _bindings.Bits = StrictBits(0)
+
+type StrictBits uint32
+
+const (
+ StrictBitsOne StrictBits = 1
+ StrictBitsTwo StrictBits = 2
+ StrictBits_Mask StrictBits = 3
+)
+
+func (_ StrictBits) I_BitsMask() StrictBits {
+ return StrictBits_Mask
+}
+
+func (_ StrictBits) I_BitsIsStrict() bool {
+ return true
+}
+
+func (x StrictBits) HasUnknownBits() bool {
+ return x.GetUnknownBits() != 0
+}
+
+func (x StrictBits) GetUnknownBits() uint64 {
+ return uint64(^StrictBits_Mask & x)
+}
+
+func (x StrictBits) InvertBits() StrictBits {
+ return StrictBits_Mask & ^x
+}
+
+// HasBits validates that all flipped bits in the mask are set.
+func (x StrictBits) HasBits(mask StrictBits) bool {
+ return mask|x == x
+}
+
+// ClearBits ensures all flipped bits in the mask are unset.
+func (x StrictBits) ClearBits(mask StrictBits) StrictBits {
+ return ^mask & x
+}
+
+func (x StrictBits) String() string {
+ switch x {
+ case 1:
+ return "One"
+ case 2:
+ return "Two"
+ }
+ return "Unknown"
+}
+
+var _ _bindings.Bits = FlexibleBits(0)
+
+type FlexibleBits uint32
+
+const (
+ FlexibleBitsOne FlexibleBits = 1
+ FlexibleBitsTwo FlexibleBits = 2
+ FlexibleBits_Mask FlexibleBits = 3
+)
+
+func (_ FlexibleBits) I_BitsMask() FlexibleBits {
+ return FlexibleBits_Mask
+}
+
+func (_ FlexibleBits) I_BitsIsStrict() bool {
+ return false
+}
+
+func (x FlexibleBits) HasUnknownBits() bool {
+ return x.GetUnknownBits() != 0
+}
+
+func (x FlexibleBits) GetUnknownBits() uint64 {
+ return uint64(^FlexibleBits_Mask & x)
+}
+
+func (x FlexibleBits) InvertBits() FlexibleBits {
+ return FlexibleBits_Mask & ^x
+}
+
+// HasBits validates that all flipped bits in the mask are set.
+func (x FlexibleBits) HasBits(mask FlexibleBits) bool {
+ return mask|x == x
+}
+
+// ClearBits ensures all flipped bits in the mask are unset.
+func (x FlexibleBits) ClearBits(mask FlexibleBits) FlexibleBits {
+ return ^mask & x
+}
+
+func (x FlexibleBits) String() string {
+ switch x {
+ case 1:
+ return "One"
+ case 2:
+ return "Two"
+ }
+ return "Unknown"
+}
+
+type TestSimple struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ X int64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mTestSimple = _bindings.CreateLazyMarshaler(TestSimple{})
+
+func (msg *TestSimple) Marshaler() _bindings.Marshaler {
+ return _mTestSimple
+}
+
+type TestSimpleBool struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+ X bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mTestSimpleBool = _bindings.CreateLazyMarshaler(TestSimpleBool{})
+
+func (msg *TestSimpleBool) Marshaler() _bindings.Marshaler {
+ return _mTestSimpleBool
+}
+
+type TestAlignment1 struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"4" fidl_size_v2:"8" fidl_alignment_v2:"4"`
+ X int8 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Y int8 `fidl_offset_v1:"1" fidl_offset_v2:"1"`
+ Z uint32 `fidl_offset_v1:"4" fidl_offset_v2:"4"`
+}
+
+var _mTestAlignment1 = _bindings.CreateLazyMarshaler(TestAlignment1{})
+
+func (msg *TestAlignment1) Marshaler() _bindings.Marshaler {
+ return _mTestAlignment1
+}
+
+type TestAlignment2 struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"20" fidl_alignment_v1:"4" fidl_size_v2:"20" fidl_alignment_v2:"4"`
+ A uint32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ B uint32 `fidl_offset_v1:"4" fidl_offset_v2:"4"`
+ C int8 `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+ D int8 `fidl_offset_v1:"9" fidl_offset_v2:"9"`
+ E int8 `fidl_offset_v1:"10" fidl_offset_v2:"10"`
+ F uint8 `fidl_offset_v1:"11" fidl_offset_v2:"11"`
+ G uint32 `fidl_offset_v1:"12" fidl_offset_v2:"12"`
+ H uint16 `fidl_offset_v1:"16" fidl_offset_v2:"16"`
+ I uint16 `fidl_offset_v1:"18" fidl_offset_v2:"18"`
+}
+
+var _mTestAlignment2 = _bindings.CreateLazyMarshaler(TestAlignment2{})
+
+func (msg *TestAlignment2) Marshaler() _bindings.Marshaler {
+ return _mTestAlignment2
+}
+
+type TestFloat1 struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"4" fidl_alignment_v1:"4" fidl_size_v2:"4" fidl_alignment_v2:"4"`
+ A float32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mTestFloat1 = _bindings.CreateLazyMarshaler(TestFloat1{})
+
+func (msg *TestFloat1) Marshaler() _bindings.Marshaler {
+ return _mTestFloat1
+}
+
+type TestFloat2 struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ A float64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mTestFloat2 = _bindings.CreateLazyMarshaler(TestFloat2{})
+
+func (msg *TestFloat2) Marshaler() _bindings.Marshaler {
+ return _mTestFloat2
+}
+
+type TestFloat3 struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"32" fidl_alignment_v1:"8" fidl_size_v2:"32" fidl_alignment_v2:"8"`
+ A float32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ B float64 `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+ C uint64 `fidl_offset_v1:"16" fidl_offset_v2:"16"`
+ D float32 `fidl_offset_v1:"24" fidl_offset_v2:"24"`
+}
+
+var _mTestFloat3 = _bindings.CreateLazyMarshaler(TestFloat3{})
+
+func (msg *TestFloat3) Marshaler() _bindings.Marshaler {
+ return _mTestFloat3
+}
+
+type TestArray1 struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"5" fidl_alignment_v1:"1" fidl_size_v2:"5" fidl_alignment_v2:"1"`
+ A [5]int8 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mTestArray1 = _bindings.CreateLazyMarshaler(TestArray1{})
+
+func (msg *TestArray1) Marshaler() _bindings.Marshaler {
+ return _mTestArray1
+}
+
+type TestArray2 struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ A float64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ B [1]float32 `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+}
+
+var _mTestArray2 = _bindings.CreateLazyMarshaler(TestArray2{})
+
+func (msg *TestArray2) Marshaler() _bindings.Marshaler {
+ return _mTestArray2
+}
+
+type TestArray3 struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"24" fidl_alignment_v2:"8"`
+ A int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ B [3]uint16 `fidl_offset_v1:"4" fidl_offset_v2:"4"`
+ C uint64 `fidl_offset_v1:"16" fidl_offset_v2:"16"`
+}
+
+var _mTestArray3 = _bindings.CreateLazyMarshaler(TestArray3{})
+
+func (msg *TestArray3) Marshaler() _bindings.Marshaler {
+ return _mTestArray3
+}
+
+type TestArray4 struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"9" fidl_alignment_v1:"1" fidl_size_v2:"9" fidl_alignment_v2:"1"`
+ A [9]bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mTestArray4 = _bindings.CreateLazyMarshaler(TestArray4{})
+
+func (msg *TestArray4) Marshaler() _bindings.Marshaler {
+ return _mTestArray4
+}
+
+type TestString1 struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"32" fidl_alignment_v1:"8" fidl_size_v2:"32" fidl_alignment_v2:"8"`
+ A string `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:""`
+ B *string `fidl_offset_v1:"16" fidl_offset_v2:"16" fidl_bounds:""`
+}
+
+var _mTestString1 = _bindings.CreateLazyMarshaler(TestString1{})
+
+func (msg *TestString1) Marshaler() _bindings.Marshaler {
+ return _mTestString1
+}
+
+type TestString2 struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"32" fidl_alignment_v1:"8" fidl_size_v2:"32" fidl_alignment_v2:"8"`
+ A [2]string `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:""`
+}
+
+var _mTestString2 = _bindings.CreateLazyMarshaler(TestString2{})
+
+func (msg *TestString2) Marshaler() _bindings.Marshaler {
+ return _mTestString2
+}
+
+type TestString3 struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"64" fidl_alignment_v1:"8" fidl_size_v2:"64" fidl_alignment_v2:"8"`
+ A [2]string `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"4"`
+ B [2]*string `fidl_offset_v1:"32" fidl_offset_v2:"32" fidl_bounds:"4"`
+}
+
+var _mTestString3 = _bindings.CreateLazyMarshaler(TestString3{})
+
+func (msg *TestString3) Marshaler() _bindings.Marshaler {
+ return _mTestString3
+}
+
+type TestStringWithBound struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ A string `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"8"`
+}
+
+var _mTestStringWithBound = _bindings.CreateLazyMarshaler(TestStringWithBound{})
+
+func (msg *TestStringWithBound) Marshaler() _bindings.Marshaler {
+ return _mTestStringWithBound
+}
+
+type TestOptStringWithBound struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ A *string `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"8"`
+}
+
+var _mTestOptStringWithBound = _bindings.CreateLazyMarshaler(TestOptStringWithBound{})
+
+func (msg *TestOptStringWithBound) Marshaler() _bindings.Marshaler {
+ return _mTestOptStringWithBound
+}
+
+type TestVector1 struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"64" fidl_alignment_v1:"8" fidl_size_v2:"64" fidl_alignment_v2:"8"`
+ A []int8 `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:""`
+ B *[]int16 `fidl_offset_v1:"16" fidl_offset_v2:"16" fidl_bounds:""`
+ C []int32 `fidl_offset_v1:"32" fidl_offset_v2:"32" fidl_bounds:"2"`
+ D *[]int64 `fidl_offset_v1:"48" fidl_offset_v2:"48" fidl_bounds:"2"`
+}
+
+var _mTestVector1 = _bindings.CreateLazyMarshaler(TestVector1{})
+
+func (msg *TestVector1) Marshaler() _bindings.Marshaler {
+ return _mTestVector1
+}
+
+type TestVector2 struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"64" fidl_alignment_v1:"8" fidl_size_v2:"64" fidl_alignment_v2:"8"`
+ A [2][]int8 `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:""`
+ B [][]int8 `fidl_offset_v1:"32" fidl_offset_v2:"32" fidl_bounds:"2,"`
+ C []*[]string `fidl_offset_v1:"48" fidl_offset_v2:"48" fidl_bounds:"2,2,5"`
+}
+
+var _mTestVector2 = _bindings.CreateLazyMarshaler(TestVector2{})
+
+func (msg *TestVector2) Marshaler() _bindings.Marshaler {
+ return _mTestVector2
+}
+
+type TestStruct1 struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ A TestSimple `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ B *TestSimple `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+}
+
+var _mTestStruct1 = _bindings.CreateLazyMarshaler(TestStruct1{})
+
+func (msg *TestStruct1) Marshaler() _bindings.Marshaler {
+ return _mTestStruct1
+}
+
+type TestStruct2 struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"88" fidl_alignment_v1:"8" fidl_size_v2:"88" fidl_alignment_v2:"8"`
+ A TestArray1 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ B TestFloat1 `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+ C TestVector1 `fidl_offset_v1:"16" fidl_offset_v2:"16"`
+ D *TestString1 `fidl_offset_v1:"80" fidl_offset_v2:"80"`
+}
+
+var _mTestStruct2 = _bindings.CreateLazyMarshaler(TestStruct2{})
+
+func (msg *TestStruct2) Marshaler() _bindings.Marshaler {
+ return _mTestStruct2
+}
+
+type EmptyStruct struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mEmptyStruct = _bindings.CreateLazyMarshaler(EmptyStruct{})
+
+func (msg *EmptyStruct) Marshaler() _bindings.Marshaler {
+ return _mEmptyStruct
+}
+
+type TestRecursiveStruct struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S *TestRecursiveStruct `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mTestRecursiveStruct = _bindings.CreateLazyMarshaler(TestRecursiveStruct{})
+
+func (msg *TestRecursiveStruct) Marshaler() _bindings.Marshaler {
+ return _mTestRecursiveStruct
+}
+
+type TestRecursiveVectorStruct struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ V []*TestRecursiveVectorStruct `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:""`
+}
+
+var _mTestRecursiveVectorStruct = _bindings.CreateLazyMarshaler(TestRecursiveVectorStruct{})
+
+func (msg *TestRecursiveVectorStruct) Marshaler() _bindings.Marshaler {
+ return _mTestRecursiveVectorStruct
+}
+
+type TestRecursiveUnionStruct struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ U *TestRecursiveVectorUnion `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mTestRecursiveUnionStruct = _bindings.CreateLazyMarshaler(TestRecursiveUnionStruct{})
+
+func (msg *TestRecursiveUnionStruct) Marshaler() _bindings.Marshaler {
+ return _mTestRecursiveUnionStruct
+}
+
+type TestUnion1 struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"48" fidl_alignment_v1:"8" fidl_size_v2:"32" fidl_alignment_v2:"8"`
+ A Union1 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ B *Union1 `fidl_offset_v1:"24" fidl_offset_v2:"16"`
+}
+
+var _mTestUnion1 = _bindings.CreateLazyMarshaler(TestUnion1{})
+
+func (msg *TestUnion1) Marshaler() _bindings.Marshaler {
+ return _mTestUnion1
+}
+
+type TestUnion2 struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"32" fidl_alignment_v1:"8" fidl_size_v2:"32" fidl_alignment_v2:"8"`
+ A []Union1 `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:""`
+ B []*Union1 `fidl_offset_v1:"16" fidl_offset_v2:"16" fidl_bounds:""`
+}
+
+var _mTestUnion2 = _bindings.CreateLazyMarshaler(TestUnion2{})
+
+func (msg *TestUnion2) Marshaler() _bindings.Marshaler {
+ return _mTestUnion2
+}
+
+type XUnion1Struct struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Xu XUnion1 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mXUnion1Struct = _bindings.CreateLazyMarshaler(XUnion1Struct{})
+
+func (msg *XUnion1Struct) Marshaler() _bindings.Marshaler {
+ return _mXUnion1Struct
+}
+
+type XUnion1AsUnionStruct struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Xuau XUnion1AsUnion `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mXUnion1AsUnionStruct = _bindings.CreateLazyMarshaler(XUnion1AsUnionStruct{})
+
+func (msg *XUnion1AsUnionStruct) Marshaler() _bindings.Marshaler {
+ return _mXUnion1AsUnionStruct
+}
+
+type UnionInsideUnionStruct struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ U UnionInsideUnion `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mUnionInsideUnionStruct = _bindings.CreateLazyMarshaler(UnionInsideUnionStruct{})
+
+func (msg *UnionInsideUnionStruct) Marshaler() _bindings.Marshaler {
+ return _mUnionInsideUnionStruct
+}
+
+type XUnionInsideXUnionStruct struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ U XUnionInsideXUnion `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mXUnionInsideXUnionStruct = _bindings.CreateLazyMarshaler(XUnionInsideXUnionStruct{})
+
+func (msg *XUnionInsideXUnionStruct) Marshaler() _bindings.Marshaler {
+ return _mXUnionInsideXUnionStruct
+}
+
+type TestXUnion1 struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"48" fidl_alignment_v1:"8" fidl_size_v2:"32" fidl_alignment_v2:"8"`
+ A XUnion1 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ B *XUnion1 `fidl_offset_v1:"24" fidl_offset_v2:"16"`
+}
+
+var _mTestXUnion1 = _bindings.CreateLazyMarshaler(TestXUnion1{})
+
+func (msg *TestXUnion1) Marshaler() _bindings.Marshaler {
+ return _mTestXUnion1
+}
+
+type TestXUnion2 struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"32" fidl_alignment_v1:"8" fidl_size_v2:"32" fidl_alignment_v2:"8"`
+ A []XUnion1 `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:""`
+ B []*XUnion1 `fidl_offset_v1:"16" fidl_offset_v2:"16" fidl_bounds:""`
+}
+
+var _mTestXUnion2 = _bindings.CreateLazyMarshaler(TestXUnion2{})
+
+func (msg *TestXUnion2) Marshaler() _bindings.Marshaler {
+ return _mTestXUnion2
+}
+
+type StrictXUnion1Struct struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Xu StrictXUnion1 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mStrictXUnion1Struct = _bindings.CreateLazyMarshaler(StrictXUnion1Struct{})
+
+func (msg *StrictXUnion1Struct) Marshaler() _bindings.Marshaler {
+ return _mStrictXUnion1Struct
+}
+
+type TestStrictXUnion1 struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"48" fidl_alignment_v1:"8" fidl_size_v2:"32" fidl_alignment_v2:"8"`
+ A StrictXUnion1 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ B *StrictXUnion1 `fidl_offset_v1:"24" fidl_offset_v2:"16"`
+}
+
+var _mTestStrictXUnion1 = _bindings.CreateLazyMarshaler(TestStrictXUnion1{})
+
+func (msg *TestStrictXUnion1) Marshaler() _bindings.Marshaler {
+ return _mTestStrictXUnion1
+}
+
+type TestStrictXUnion2 struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"32" fidl_alignment_v1:"8" fidl_size_v2:"32" fidl_alignment_v2:"8"`
+ A []StrictXUnion1 `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:""`
+ B []*StrictXUnion1 `fidl_offset_v1:"16" fidl_offset_v2:"16" fidl_bounds:""`
+}
+
+var _mTestStrictXUnion2 = _bindings.CreateLazyMarshaler(TestStrictXUnion2{})
+
+func (msg *TestStrictXUnion2) Marshaler() _bindings.Marshaler {
+ return _mTestStrictXUnion2
+}
+
+type TestHandle1 struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"4" fidl_size_v2:"16" fidl_alignment_v2:"4"`
+ A _zx.Handle `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_handle_subtype:"0" fidl_handle_rights:"2147483648" fidl_bounds:"0"`
+ B _zx.Handle `fidl_offset_v1:"4" fidl_offset_v2:"4" fidl_handle_subtype:"0" fidl_handle_rights:"2147483648" fidl_bounds:"1"`
+ C _zx.VMO `fidl_offset_v1:"8" fidl_offset_v2:"8" fidl_handle_subtype:"3" fidl_handle_rights:"2147483648" fidl_bounds:"0"`
+ D _zx.VMO `fidl_offset_v1:"12" fidl_offset_v2:"12" fidl_handle_subtype:"3" fidl_handle_rights:"2147483648" fidl_bounds:"1"`
+}
+
+var _mTestHandle1 = _bindings.CreateLazyMarshaler(TestHandle1{})
+
+func (msg *TestHandle1) Marshaler() _bindings.Marshaler {
+ return _mTestHandle1
+}
+
+type TestHandle2 struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"32" fidl_alignment_v1:"8" fidl_size_v2:"32" fidl_alignment_v2:"8"`
+ A []_zx.Handle `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_handle_subtype:"0" fidl_handle_rights:"2147483648" fidl_bounds:"1,0"`
+ B []_zx.VMO `fidl_offset_v1:"16" fidl_offset_v2:"16" fidl_handle_subtype:"3" fidl_handle_rights:"2147483648" fidl_bounds:"1,1"`
+}
+
+var _mTestHandle2 = _bindings.CreateLazyMarshaler(TestHandle2{})
+
+func (msg *TestHandle2) Marshaler() _bindings.Marshaler {
+ return _mTestHandle2
+}
+
+type HasClientEnd struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"4" fidl_alignment_v1:"4" fidl_size_v2:"4" fidl_alignment_v2:"4"`
+ ClientEnd ExampleProtocolWithCtxInterface `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_handle_subtype:"4"`
+}
+
+var _mHasClientEnd = _bindings.CreateLazyMarshaler(HasClientEnd{})
+
+func (msg *HasClientEnd) Marshaler() _bindings.Marshaler {
+ return _mHasClientEnd
+}
+
+type HasServerEnd struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"4" fidl_alignment_v1:"4" fidl_size_v2:"4" fidl_alignment_v2:"4"`
+ ServerEnd ExampleProtocolWithCtxInterfaceRequest `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_handle_subtype:"4" fidl_bounds:"0"`
+}
+
+var _mHasServerEnd = _bindings.CreateLazyMarshaler(HasServerEnd{})
+
+func (msg *HasServerEnd) Marshaler() _bindings.Marshaler {
+ return _mHasServerEnd
+}
+
+type TestInterface1 struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"4" fidl_size_v2:"16" fidl_alignment_v2:"4"`
+ A Test1WithCtxInterface `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_handle_subtype:"4"`
+ B Test1WithCtxInterface `fidl_offset_v1:"4" fidl_offset_v2:"4" fidl_handle_subtype:"4"`
+ C Test1WithCtxInterfaceRequest `fidl_offset_v1:"8" fidl_offset_v2:"8" fidl_handle_subtype:"4" fidl_bounds:"0"`
+ D Test1WithCtxInterfaceRequest `fidl_offset_v1:"12" fidl_offset_v2:"12" fidl_handle_subtype:"4" fidl_bounds:"1"`
+}
+
+var _mTestInterface1 = _bindings.CreateLazyMarshaler(TestInterface1{})
+
+func (msg *TestInterface1) Marshaler() _bindings.Marshaler {
+ return _mTestInterface1
+}
+
+type TestSimpleTable struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Table SimpleTable `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mTestSimpleTable = _bindings.CreateLazyMarshaler(TestSimpleTable{})
+
+func (msg *TestSimpleTable) Marshaler() _bindings.Marshaler {
+ return _mTestSimpleTable
+}
+
+type TestOlderSimpleTable struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Table OlderSimpleTable `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mTestOlderSimpleTable = _bindings.CreateLazyMarshaler(TestOlderSimpleTable{})
+
+func (msg *TestOlderSimpleTable) Marshaler() _bindings.Marshaler {
+ return _mTestOlderSimpleTable
+}
+
+type TestNewerSimpleTable struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Table NewerSimpleTable `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mTestNewerSimpleTable = _bindings.CreateLazyMarshaler(TestNewerSimpleTable{})
+
+func (msg *TestNewerSimpleTable) Marshaler() _bindings.Marshaler {
+ return _mTestNewerSimpleTable
+}
+
+type TestWithTableAndInt struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"24" fidl_alignment_v2:"8"`
+ Table SimpleTable `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Foo uint64 `fidl_offset_v1:"16" fidl_offset_v2:"16"`
+}
+
+var _mTestWithTableAndInt = _bindings.CreateLazyMarshaler(TestWithTableAndInt{})
+
+func (msg *TestWithTableAndInt) Marshaler() _bindings.Marshaler {
+ return _mTestWithTableAndInt
+}
+
+type Int64Struct struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ X int64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mInt64Struct = _bindings.CreateLazyMarshaler(Int64Struct{})
+
+func (msg *Int64Struct) Marshaler() _bindings.Marshaler {
+ return _mInt64Struct
+}
+
+type TestFuchsiaIoReadAtResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"24" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Data []uint8 `fidl_offset_v1:"8" fidl_offset_v2:"8" fidl_bounds:"8192"`
+}
+
+var _mTestFuchsiaIoReadAtResponse = _bindings.CreateLazyMarshaler(TestFuchsiaIoReadAtResponse{})
+
+func (msg *TestFuchsiaIoReadAtResponse) Marshaler() _bindings.Marshaler {
+ return _mTestFuchsiaIoReadAtResponse
+}
+
+type TestFuchsiaIoWriteAtRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"24" fidl_alignment_v2:"8"`
+ Data []uint8 `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"8192"`
+ Offset uint64 `fidl_offset_v1:"16" fidl_offset_v2:"16"`
+}
+
+var _mTestFuchsiaIoWriteAtRequest = _bindings.CreateLazyMarshaler(TestFuchsiaIoWriteAtRequest{})
+
+func (msg *TestFuchsiaIoWriteAtRequest) Marshaler() _bindings.Marshaler {
+ return _mTestFuchsiaIoWriteAtRequest
+}
+
+type TestFuchsiaPosixSocketSendMsgRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"56" fidl_alignment_v1:"8" fidl_size_v2:"56" fidl_alignment_v2:"8"`
+ Sockaddr []uint8 `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"128"`
+ Data [][]uint8 `fidl_offset_v1:"16" fidl_offset_v2:"16" fidl_bounds:""`
+ Control []uint8 `fidl_offset_v1:"32" fidl_offset_v2:"32" fidl_bounds:""`
+ Flags int16 `fidl_offset_v1:"48" fidl_offset_v2:"48"`
+}
+
+var _mTestFuchsiaPosixSocketSendMsgRequest = _bindings.CreateLazyMarshaler(TestFuchsiaPosixSocketSendMsgRequest{})
+
+func (msg *TestFuchsiaPosixSocketSendMsgRequest) Marshaler() _bindings.Marshaler {
+ return _mTestFuchsiaPosixSocketSendMsgRequest
+}
+
+type InterfaceConfig struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"40" fidl_alignment_v1:"8" fidl_size_v2:"32" fidl_alignment_v2:"8"`
+ Name string `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:""`
+ IpAddressConfig IpAddressConfig `fidl_offset_v1:"16" fidl_offset_v2:"16"`
+}
+
+var _mInterfaceConfig = _bindings.CreateLazyMarshaler(InterfaceConfig{})
+
+func (msg *InterfaceConfig) Marshaler() _bindings.Marshaler {
+ return _mInterfaceConfig
+}
+
+type TestAddEthernetDeviceRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"64" fidl_alignment_v1:"8" fidl_size_v2:"56" fidl_alignment_v2:"8"`
+ TopologicalPath string `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:""`
+ Config InterfaceConfig `fidl_offset_v1:"16" fidl_offset_v2:"16"`
+ Device EthernetDeviceWithCtxInterface `fidl_offset_v1:"56" fidl_offset_v2:"48" fidl_handle_subtype:"4"`
+}
+
+var _mTestAddEthernetDeviceRequest = _bindings.CreateLazyMarshaler(TestAddEthernetDeviceRequest{})
+
+func (msg *TestAddEthernetDeviceRequest) Marshaler() _bindings.Marshaler {
+ return _mTestAddEthernetDeviceRequest
+}
+
+type TestPackageResolverResolveRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"40" fidl_alignment_v1:"8" fidl_size_v2:"40" fidl_alignment_v2:"8"`
+ PackageUrl string `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:""`
+ Selectors []string `fidl_offset_v1:"16" fidl_offset_v2:"16" fidl_bounds:""`
+ UpdatePolicy UpdatePolicy `fidl_offset_v1:"32" fidl_offset_v2:"32"`
+ Dir EthernetDeviceWithCtxInterfaceRequest `fidl_offset_v1:"36" fidl_offset_v2:"36" fidl_handle_subtype:"4" fidl_bounds:"0"`
+}
+
+var _mTestPackageResolverResolveRequest = _bindings.CreateLazyMarshaler(TestPackageResolverResolveRequest{})
+
+func (msg *TestPackageResolverResolveRequest) Marshaler() _bindings.Marshaler {
+ return _mTestPackageResolverResolveRequest
+}
+
+type UpdatePolicy struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"2" fidl_alignment_v1:"1" fidl_size_v2:"2" fidl_alignment_v2:"1"`
+ FetchIfAbsent bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ AllowOldVersions bool `fidl_offset_v1:"1" fidl_offset_v2:"1"`
+}
+
+var _mUpdatePolicy = _bindings.CreateLazyMarshaler(UpdatePolicy{})
+
+func (msg *UpdatePolicy) Marshaler() _bindings.Marshaler {
+ return _mUpdatePolicy
+}
+
+type TestUcharEnumVec struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Values []TestUcharEnum `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:""`
+}
+
+var _mTestUcharEnumVec = _bindings.CreateLazyMarshaler(TestUcharEnumVec{})
+
+func (msg *TestUcharEnumVec) Marshaler() _bindings.Marshaler {
+ return _mTestUcharEnumVec
+}
+
+type HandleRightsSubtypeTestStruct struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ H []_zx.VMO `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_handle_subtype:"3" fidl_handle_rights:"3" fidl_bounds:",0"`
+}
+
+var _mHandleRightsSubtypeTestStruct = _bindings.CreateLazyMarshaler(HandleRightsSubtypeTestStruct{})
+
+func (msg *HandleRightsSubtypeTestStruct) Marshaler() _bindings.Marshaler {
+ return _mHandleRightsSubtypeTestStruct
+}
+
+type PlainHandleTestStruct struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"4" fidl_alignment_v1:"4" fidl_size_v2:"4" fidl_alignment_v2:"4"`
+ H _zx.Handle `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_handle_subtype:"0" fidl_handle_rights:"2147483648" fidl_bounds:"0"`
+}
+
+var _mPlainHandleTestStruct = _bindings.CreateLazyMarshaler(PlainHandleTestStruct{})
+
+func (msg *PlainHandleTestStruct) Marshaler() _bindings.Marshaler {
+ return _mPlainHandleTestStruct
+}
+
+type test1WithCtxEchoRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ In *string `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:""`
+}
+
+var _mtest1WithCtxEchoRequest = _bindings.CreateLazyMarshaler(test1WithCtxEchoRequest{})
+
+func (msg *test1WithCtxEchoRequest) Marshaler() _bindings.Marshaler {
+ return _mtest1WithCtxEchoRequest
+}
+
+type test1WithCtxEchoResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Out *string `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:""`
+}
+
+var _mtest1WithCtxEchoResponse = _bindings.CreateLazyMarshaler(test1WithCtxEchoResponse{})
+
+func (msg *test1WithCtxEchoResponse) Marshaler() _bindings.Marshaler {
+ return _mtest1WithCtxEchoResponse
+}
+
+type test1WithCtxSurpriseResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Foo string `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:""`
+}
+
+var _mtest1WithCtxSurpriseResponse = _bindings.CreateLazyMarshaler(test1WithCtxSurpriseResponse{})
+
+func (msg *test1WithCtxSurpriseResponse) Marshaler() _bindings.Marshaler {
+ return _mtest1WithCtxSurpriseResponse
+}
+
+type test1WithCtxEchoHandleRightsRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ H _zx.Port `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_handle_subtype:"6" fidl_handle_rights:"7" fidl_bounds:"0"`
+}
+
+var _mtest1WithCtxEchoHandleRightsRequest = _bindings.CreateLazyMarshaler(test1WithCtxEchoHandleRightsRequest{})
+
+func (msg *test1WithCtxEchoHandleRightsRequest) Marshaler() _bindings.Marshaler {
+ return _mtest1WithCtxEchoHandleRightsRequest
+}
+
+type test1WithCtxEchoHandleRightsResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Rights uint32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mtest1WithCtxEchoHandleRightsResponse = _bindings.CreateLazyMarshaler(test1WithCtxEchoHandleRightsResponse{})
+
+func (msg *test1WithCtxEchoHandleRightsResponse) Marshaler() _bindings.Marshaler {
+ return _mtest1WithCtxEchoHandleRightsResponse
+}
+
+type I_testRecursiveVectorUnionTag uint64
+
+const (
+ TestRecursiveVectorUnion_unknownData = 0 // 0x00000000
+ TestRecursiveVectorUnionA = 1 // 0x00000001
+ TestRecursiveVectorUnionB = 2 // 0x00000002
+)
+
+type TestRecursiveVectorUnion struct {
+ I_testRecursiveVectorUnionTag `fidl:"x" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ I_unknownData interface{}
+ A float32 `fidl_ordinal:"1"`
+ B []*TestRecursiveVectorUnion `fidl_bounds:"" fidl_ordinal:"2"`
+}
+
+func (_m *TestRecursiveVectorUnion) reset() {
+ switch _m.I_testRecursiveVectorUnionTag {
+ case 1:
+ var _zeroed float32
+ _m.A = _zeroed
+ case 2:
+ var _zeroed []*TestRecursiveVectorUnion
+ _m.B = _zeroed
+ default:
+ var _zeroed interface{}
+ _m.I_unknownData = _zeroed
+ }
+}
+
+func (_m *TestRecursiveVectorUnion) Which() I_testRecursiveVectorUnionTag {
+ switch _m.I_testRecursiveVectorUnionTag {
+ case 1:
+ return TestRecursiveVectorUnionA
+ case 2:
+ return TestRecursiveVectorUnionB
+ default:
+ return TestRecursiveVectorUnion_unknownData
+ }
+}
+
+func (_m *TestRecursiveVectorUnion) Ordinal() uint64 {
+ return uint64(_m.I_testRecursiveVectorUnionTag)
+}
+
+func (_m *TestRecursiveVectorUnion) SetA(a float32) {
+ _m.reset()
+ _m.I_testRecursiveVectorUnionTag = TestRecursiveVectorUnionA
+ _m.A = a
+}
+
+func TestRecursiveVectorUnionWithA(a float32) TestRecursiveVectorUnion {
+ var _u TestRecursiveVectorUnion
+ _u.SetA(a)
+ return _u
+}
+
+func (_m *TestRecursiveVectorUnion) SetB(b []*TestRecursiveVectorUnion) {
+ _m.reset()
+ _m.I_testRecursiveVectorUnionTag = TestRecursiveVectorUnionB
+ _m.B = b
+}
+
+func TestRecursiveVectorUnionWithB(b []*TestRecursiveVectorUnion) TestRecursiveVectorUnion {
+ var _u TestRecursiveVectorUnion
+ _u.SetB(b)
+ return _u
+}
+func (_m *TestRecursiveVectorUnion) GetUnknownData() _bindings.UnknownData {
+ return _m.I_unknownData.(_bindings.UnknownData)
+}
+
+type I_union1Tag uint64
+
+const (
+ Union1A = 1 // 0x00000001
+ Union1B = 2 // 0x00000002
+ Union1D = 3 // 0x00000003
+)
+
+type Union1 struct {
+ I_union1Tag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ A [3]int8 `fidl_ordinal:"1"`
+ B TestSimple `fidl_ordinal:"2"`
+ D float32 `fidl_ordinal:"3"`
+}
+
+func (_m *Union1) reset() {
+ switch _m.I_union1Tag {
+ case 1:
+ var _zeroed [3]int8
+ _m.A = _zeroed
+ case 2:
+ var _zeroed TestSimple
+ _m.B = _zeroed
+ case 3:
+ var _zeroed float32
+ _m.D = _zeroed
+ }
+}
+
+func (_m *Union1) Which() I_union1Tag {
+ return _m.I_union1Tag
+}
+
+func (_m *Union1) Ordinal() uint64 {
+ return uint64(_m.I_union1Tag)
+}
+
+func (_m *Union1) SetA(a [3]int8) {
+ _m.reset()
+ _m.I_union1Tag = Union1A
+ _m.A = a
+}
+
+func Union1WithA(a [3]int8) Union1 {
+ var _u Union1
+ _u.SetA(a)
+ return _u
+}
+
+func (_m *Union1) SetB(b TestSimple) {
+ _m.reset()
+ _m.I_union1Tag = Union1B
+ _m.B = b
+}
+
+func Union1WithB(b TestSimple) Union1 {
+ var _u Union1
+ _u.SetB(b)
+ return _u
+}
+
+func (_m *Union1) SetD(d float32) {
+ _m.reset()
+ _m.I_union1Tag = Union1D
+ _m.D = d
+}
+
+func Union1WithD(d float32) Union1 {
+ var _u Union1
+ _u.SetD(d)
+ return _u
+}
+
+type I_xUnion1Tag uint64
+
+const (
+ XUnion1_unknownData = 0 // 0x00000000
+ XUnion1A = 1 // 0x00000001
+ XUnion1B = 2 // 0x00000002
+ XUnion1D = 3 // 0x00000003
+)
+
+type XUnion1 struct {
+ I_xUnion1Tag `fidl:"x" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ I_unknownData interface{}
+ A [3]int8 `fidl_ordinal:"1"`
+ B TestSimple `fidl_ordinal:"2"`
+ D float32 `fidl_ordinal:"3"`
+}
+
+func (_m *XUnion1) reset() {
+ switch _m.I_xUnion1Tag {
+ case 1:
+ var _zeroed [3]int8
+ _m.A = _zeroed
+ case 2:
+ var _zeroed TestSimple
+ _m.B = _zeroed
+ case 3:
+ var _zeroed float32
+ _m.D = _zeroed
+ default:
+ var _zeroed interface{}
+ _m.I_unknownData = _zeroed
+ }
+}
+
+func (_m *XUnion1) Which() I_xUnion1Tag {
+ switch _m.I_xUnion1Tag {
+ case 1:
+ return XUnion1A
+ case 2:
+ return XUnion1B
+ case 3:
+ return XUnion1D
+ default:
+ return XUnion1_unknownData
+ }
+}
+
+func (_m *XUnion1) Ordinal() uint64 {
+ return uint64(_m.I_xUnion1Tag)
+}
+
+func (_m *XUnion1) SetA(a [3]int8) {
+ _m.reset()
+ _m.I_xUnion1Tag = XUnion1A
+ _m.A = a
+}
+
+func XUnion1WithA(a [3]int8) XUnion1 {
+ var _u XUnion1
+ _u.SetA(a)
+ return _u
+}
+
+func (_m *XUnion1) SetB(b TestSimple) {
+ _m.reset()
+ _m.I_xUnion1Tag = XUnion1B
+ _m.B = b
+}
+
+func XUnion1WithB(b TestSimple) XUnion1 {
+ var _u XUnion1
+ _u.SetB(b)
+ return _u
+}
+
+func (_m *XUnion1) SetD(d float32) {
+ _m.reset()
+ _m.I_xUnion1Tag = XUnion1D
+ _m.D = d
+}
+
+func XUnion1WithD(d float32) XUnion1 {
+ var _u XUnion1
+ _u.SetD(d)
+ return _u
+}
+func (_m *XUnion1) GetUnknownData() _bindings.UnknownData {
+ return _m.I_unknownData.(_bindings.UnknownData)
+}
+
+type I_xUnion1AsUnionTag uint64
+
+const (
+ XUnion1AsUnionA = 1 // 0x00000001
+ XUnion1AsUnionB = 2 // 0x00000002
+ XUnion1AsUnionD = 3 // 0x00000003
+)
+
+type XUnion1AsUnion struct {
+ I_xUnion1AsUnionTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ A [3]int8 `fidl_ordinal:"1"`
+ B TestSimple `fidl_ordinal:"2"`
+ D float32 `fidl_ordinal:"3"`
+}
+
+func (_m *XUnion1AsUnion) reset() {
+ switch _m.I_xUnion1AsUnionTag {
+ case 1:
+ var _zeroed [3]int8
+ _m.A = _zeroed
+ case 2:
+ var _zeroed TestSimple
+ _m.B = _zeroed
+ case 3:
+ var _zeroed float32
+ _m.D = _zeroed
+ }
+}
+
+func (_m *XUnion1AsUnion) Which() I_xUnion1AsUnionTag {
+ return _m.I_xUnion1AsUnionTag
+}
+
+func (_m *XUnion1AsUnion) Ordinal() uint64 {
+ return uint64(_m.I_xUnion1AsUnionTag)
+}
+
+func (_m *XUnion1AsUnion) SetA(a [3]int8) {
+ _m.reset()
+ _m.I_xUnion1AsUnionTag = XUnion1AsUnionA
+ _m.A = a
+}
+
+func XUnion1AsUnionWithA(a [3]int8) XUnion1AsUnion {
+ var _u XUnion1AsUnion
+ _u.SetA(a)
+ return _u
+}
+
+func (_m *XUnion1AsUnion) SetB(b TestSimple) {
+ _m.reset()
+ _m.I_xUnion1AsUnionTag = XUnion1AsUnionB
+ _m.B = b
+}
+
+func XUnion1AsUnionWithB(b TestSimple) XUnion1AsUnion {
+ var _u XUnion1AsUnion
+ _u.SetB(b)
+ return _u
+}
+
+func (_m *XUnion1AsUnion) SetD(d float32) {
+ _m.reset()
+ _m.I_xUnion1AsUnionTag = XUnion1AsUnionD
+ _m.D = d
+}
+
+func XUnion1AsUnionWithD(d float32) XUnion1AsUnion {
+ var _u XUnion1AsUnion
+ _u.SetD(d)
+ return _u
+}
+
+type I_unionInsideUnionTag uint64
+
+const (
+ UnionInsideUnionA = 1 // 0x00000001
+ UnionInsideUnionB = 2 // 0x00000002
+)
+
+type UnionInsideUnion struct {
+ I_unionInsideUnionTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ A float32 `fidl_ordinal:"1"`
+ B XUnion1AsUnion `fidl_ordinal:"2"`
+}
+
+func (_m *UnionInsideUnion) reset() {
+ switch _m.I_unionInsideUnionTag {
+ case 1:
+ var _zeroed float32
+ _m.A = _zeroed
+ case 2:
+ var _zeroed XUnion1AsUnion
+ _m.B = _zeroed
+ }
+}
+
+func (_m *UnionInsideUnion) Which() I_unionInsideUnionTag {
+ return _m.I_unionInsideUnionTag
+}
+
+func (_m *UnionInsideUnion) Ordinal() uint64 {
+ return uint64(_m.I_unionInsideUnionTag)
+}
+
+func (_m *UnionInsideUnion) SetA(a float32) {
+ _m.reset()
+ _m.I_unionInsideUnionTag = UnionInsideUnionA
+ _m.A = a
+}
+
+func UnionInsideUnionWithA(a float32) UnionInsideUnion {
+ var _u UnionInsideUnion
+ _u.SetA(a)
+ return _u
+}
+
+func (_m *UnionInsideUnion) SetB(b XUnion1AsUnion) {
+ _m.reset()
+ _m.I_unionInsideUnionTag = UnionInsideUnionB
+ _m.B = b
+}
+
+func UnionInsideUnionWithB(b XUnion1AsUnion) UnionInsideUnion {
+ var _u UnionInsideUnion
+ _u.SetB(b)
+ return _u
+}
+
+type I_xUnionInsideXUnionTag uint64
+
+const (
+ XUnionInsideXUnion_unknownData = 0 // 0x00000000
+ XUnionInsideXUnionA = 1 // 0x00000001
+ XUnionInsideXUnionB = 2 // 0x00000002
+)
+
+type XUnionInsideXUnion struct {
+ I_xUnionInsideXUnionTag `fidl:"x" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ I_unknownData interface{}
+ A float32 `fidl_ordinal:"1"`
+ B XUnion1 `fidl_ordinal:"2"`
+}
+
+func (_m *XUnionInsideXUnion) reset() {
+ switch _m.I_xUnionInsideXUnionTag {
+ case 1:
+ var _zeroed float32
+ _m.A = _zeroed
+ case 2:
+ var _zeroed XUnion1
+ _m.B = _zeroed
+ default:
+ var _zeroed interface{}
+ _m.I_unknownData = _zeroed
+ }
+}
+
+func (_m *XUnionInsideXUnion) Which() I_xUnionInsideXUnionTag {
+ switch _m.I_xUnionInsideXUnionTag {
+ case 1:
+ return XUnionInsideXUnionA
+ case 2:
+ return XUnionInsideXUnionB
+ default:
+ return XUnionInsideXUnion_unknownData
+ }
+}
+
+func (_m *XUnionInsideXUnion) Ordinal() uint64 {
+ return uint64(_m.I_xUnionInsideXUnionTag)
+}
+
+func (_m *XUnionInsideXUnion) SetA(a float32) {
+ _m.reset()
+ _m.I_xUnionInsideXUnionTag = XUnionInsideXUnionA
+ _m.A = a
+}
+
+func XUnionInsideXUnionWithA(a float32) XUnionInsideXUnion {
+ var _u XUnionInsideXUnion
+ _u.SetA(a)
+ return _u
+}
+
+func (_m *XUnionInsideXUnion) SetB(b XUnion1) {
+ _m.reset()
+ _m.I_xUnionInsideXUnionTag = XUnionInsideXUnionB
+ _m.B = b
+}
+
+func XUnionInsideXUnionWithB(b XUnion1) XUnionInsideXUnion {
+ var _u XUnionInsideXUnion
+ _u.SetB(b)
+ return _u
+}
+func (_m *XUnionInsideXUnion) GetUnknownData() _bindings.UnknownData {
+ return _m.I_unknownData.(_bindings.UnknownData)
+}
+
+type I_strictXUnion1Tag uint64
+
+const (
+ StrictXUnion1A = 1 // 0x00000001
+ StrictXUnion1B = 2 // 0x00000002
+ StrictXUnion1D = 3 // 0x00000003
+)
+
+type StrictXUnion1 struct {
+ I_strictXUnion1Tag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ A [3]int8 `fidl_ordinal:"1"`
+ B TestSimple `fidl_ordinal:"2"`
+ D float32 `fidl_ordinal:"3"`
+}
+
+func (_m *StrictXUnion1) reset() {
+ switch _m.I_strictXUnion1Tag {
+ case 1:
+ var _zeroed [3]int8
+ _m.A = _zeroed
+ case 2:
+ var _zeroed TestSimple
+ _m.B = _zeroed
+ case 3:
+ var _zeroed float32
+ _m.D = _zeroed
+ }
+}
+
+func (_m *StrictXUnion1) Which() I_strictXUnion1Tag {
+ return _m.I_strictXUnion1Tag
+}
+
+func (_m *StrictXUnion1) Ordinal() uint64 {
+ return uint64(_m.I_strictXUnion1Tag)
+}
+
+func (_m *StrictXUnion1) SetA(a [3]int8) {
+ _m.reset()
+ _m.I_strictXUnion1Tag = StrictXUnion1A
+ _m.A = a
+}
+
+func StrictXUnion1WithA(a [3]int8) StrictXUnion1 {
+ var _u StrictXUnion1
+ _u.SetA(a)
+ return _u
+}
+
+func (_m *StrictXUnion1) SetB(b TestSimple) {
+ _m.reset()
+ _m.I_strictXUnion1Tag = StrictXUnion1B
+ _m.B = b
+}
+
+func StrictXUnion1WithB(b TestSimple) StrictXUnion1 {
+ var _u StrictXUnion1
+ _u.SetB(b)
+ return _u
+}
+
+func (_m *StrictXUnion1) SetD(d float32) {
+ _m.reset()
+ _m.I_strictXUnion1Tag = StrictXUnion1D
+ _m.D = d
+}
+
+func StrictXUnion1WithD(d float32) StrictXUnion1 {
+ var _u StrictXUnion1
+ _u.SetD(d)
+ return _u
+}
+
+type I_simpleUnionTag uint64
+
+const (
+ SimpleUnionI32 = 1 // 0x00000001
+ SimpleUnionI64 = 2 // 0x00000002
+ SimpleUnionS = 3 // 0x00000003
+ SimpleUnionStr = 4 // 0x00000004
+)
+
+type SimpleUnion struct {
+ I_simpleUnionTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ I32 int32 `fidl_ordinal:"1"`
+ I64 int64 `fidl_ordinal:"2"`
+ S Int64Struct `fidl_ordinal:"3"`
+ Str string `fidl_bounds:"" fidl_ordinal:"4"`
+}
+
+func (_m *SimpleUnion) reset() {
+ switch _m.I_simpleUnionTag {
+ case 1:
+ var _zeroed int32
+ _m.I32 = _zeroed
+ case 2:
+ var _zeroed int64
+ _m.I64 = _zeroed
+ case 3:
+ var _zeroed Int64Struct
+ _m.S = _zeroed
+ case 4:
+ var _zeroed string
+ _m.Str = _zeroed
+ }
+}
+
+func (_m *SimpleUnion) Which() I_simpleUnionTag {
+ return _m.I_simpleUnionTag
+}
+
+func (_m *SimpleUnion) Ordinal() uint64 {
+ return uint64(_m.I_simpleUnionTag)
+}
+
+func (_m *SimpleUnion) SetI32(i32 int32) {
+ _m.reset()
+ _m.I_simpleUnionTag = SimpleUnionI32
+ _m.I32 = i32
+}
+
+func SimpleUnionWithI32(i32 int32) SimpleUnion {
+ var _u SimpleUnion
+ _u.SetI32(i32)
+ return _u
+}
+
+func (_m *SimpleUnion) SetI64(i64 int64) {
+ _m.reset()
+ _m.I_simpleUnionTag = SimpleUnionI64
+ _m.I64 = i64
+}
+
+func SimpleUnionWithI64(i64 int64) SimpleUnion {
+ var _u SimpleUnion
+ _u.SetI64(i64)
+ return _u
+}
+
+func (_m *SimpleUnion) SetS(s Int64Struct) {
+ _m.reset()
+ _m.I_simpleUnionTag = SimpleUnionS
+ _m.S = s
+}
+
+func SimpleUnionWithS(s Int64Struct) SimpleUnion {
+ var _u SimpleUnion
+ _u.SetS(s)
+ return _u
+}
+
+func (_m *SimpleUnion) SetStr(str string) {
+ _m.reset()
+ _m.I_simpleUnionTag = SimpleUnionStr
+ _m.Str = str
+}
+
+func SimpleUnionWithStr(str string) SimpleUnion {
+ var _u SimpleUnion
+ _u.SetStr(str)
+ return _u
+}
+
+type I_ipAddressConfigTag uint64
+
+const (
+ IpAddressConfigPaddingSize24Align4 = 1 // 0x00000001
+ IpAddressConfigDhcp = 2 // 0x00000002
+)
+
+type IpAddressConfig struct {
+ I_ipAddressConfigTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ PaddingSize24Align4 [6]uint32 `fidl_ordinal:"1"`
+ Dhcp bool `fidl_ordinal:"2"`
+}
+
+func (_m *IpAddressConfig) reset() {
+ switch _m.I_ipAddressConfigTag {
+ case 1:
+ var _zeroed [6]uint32
+ _m.PaddingSize24Align4 = _zeroed
+ case 2:
+ var _zeroed bool
+ _m.Dhcp = _zeroed
+ }
+}
+
+func (_m *IpAddressConfig) Which() I_ipAddressConfigTag {
+ return _m.I_ipAddressConfigTag
+}
+
+func (_m *IpAddressConfig) Ordinal() uint64 {
+ return uint64(_m.I_ipAddressConfigTag)
+}
+
+func (_m *IpAddressConfig) SetPaddingSize24Align4(paddingSize24Align4 [6]uint32) {
+ _m.reset()
+ _m.I_ipAddressConfigTag = IpAddressConfigPaddingSize24Align4
+ _m.PaddingSize24Align4 = paddingSize24Align4
+}
+
+func IpAddressConfigWithPaddingSize24Align4(paddingSize24Align4 [6]uint32) IpAddressConfig {
+ var _u IpAddressConfig
+ _u.SetPaddingSize24Align4(paddingSize24Align4)
+ return _u
+}
+
+func (_m *IpAddressConfig) SetDhcp(dhcp bool) {
+ _m.reset()
+ _m.I_ipAddressConfigTag = IpAddressConfigDhcp
+ _m.Dhcp = dhcp
+}
+
+func IpAddressConfigWithDhcp(dhcp bool) IpAddressConfig {
+ var _u IpAddressConfig
+ _u.SetDhcp(dhcp)
+ return _u
+}
+
+type SimpleTable struct {
+ _ struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ I_unknownData interface{}
+ X int64 `fidl_ordinal:"1"`
+ XPresent bool
+ Y int64 `fidl_ordinal:"5"`
+ YPresent bool
+}
+
+func (u *SimpleTable) SetX(x int64) {
+ u.X = x
+ u.XPresent = true
+}
+
+func (u *SimpleTable) GetX() int64 {
+ return u.X
+}
+
+func (u *SimpleTable) GetXWithDefault(_default int64) int64 {
+ if !u.HasX() {
+ return _default
+ }
+ return u.X
+}
+
+func (u *SimpleTable) HasX() bool {
+ return u.XPresent
+}
+
+func (u *SimpleTable) ClearX() {
+ u.XPresent = false
+}
+
+func (u *SimpleTable) SetY(y int64) {
+ u.Y = y
+ u.YPresent = true
+}
+
+func (u *SimpleTable) GetY() int64 {
+ return u.Y
+}
+
+func (u *SimpleTable) GetYWithDefault(_default int64) int64 {
+ if !u.HasY() {
+ return _default
+ }
+ return u.Y
+}
+
+func (u *SimpleTable) HasY() bool {
+ return u.YPresent
+}
+
+func (u *SimpleTable) ClearY() {
+ u.YPresent = false
+}
+
+func (u *SimpleTable) HasUnknownData() bool {
+ return u.I_unknownData != nil
+}
+
+func (u *SimpleTable) GetUnknownData() map[uint64]_bindings.UnknownData {
+ return u.I_unknownData.(map[uint64]_bindings.UnknownData)
+}
+
+type OlderSimpleTable struct {
+ _ struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ I_unknownData interface{}
+ X int64 `fidl_ordinal:"1"`
+ XPresent bool
+}
+
+func (u *OlderSimpleTable) SetX(x int64) {
+ u.X = x
+ u.XPresent = true
+}
+
+func (u *OlderSimpleTable) GetX() int64 {
+ return u.X
+}
+
+func (u *OlderSimpleTable) GetXWithDefault(_default int64) int64 {
+ if !u.HasX() {
+ return _default
+ }
+ return u.X
+}
+
+func (u *OlderSimpleTable) HasX() bool {
+ return u.XPresent
+}
+
+func (u *OlderSimpleTable) ClearX() {
+ u.XPresent = false
+}
+
+func (u *OlderSimpleTable) HasUnknownData() bool {
+ return u.I_unknownData != nil
+}
+
+func (u *OlderSimpleTable) GetUnknownData() map[uint64]_bindings.UnknownData {
+ return u.I_unknownData.(map[uint64]_bindings.UnknownData)
+}
+
+type NewerSimpleTable struct {
+ _ struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ I_unknownData interface{}
+ X int64 `fidl_ordinal:"1"`
+ XPresent bool
+ Y int64 `fidl_ordinal:"5"`
+ YPresent bool
+ Z int64 `fidl_ordinal:"6"`
+ ZPresent bool
+}
+
+func (u *NewerSimpleTable) SetX(x int64) {
+ u.X = x
+ u.XPresent = true
+}
+
+func (u *NewerSimpleTable) GetX() int64 {
+ return u.X
+}
+
+func (u *NewerSimpleTable) GetXWithDefault(_default int64) int64 {
+ if !u.HasX() {
+ return _default
+ }
+ return u.X
+}
+
+func (u *NewerSimpleTable) HasX() bool {
+ return u.XPresent
+}
+
+func (u *NewerSimpleTable) ClearX() {
+ u.XPresent = false
+}
+
+func (u *NewerSimpleTable) SetY(y int64) {
+ u.Y = y
+ u.YPresent = true
+}
+
+func (u *NewerSimpleTable) GetY() int64 {
+ return u.Y
+}
+
+func (u *NewerSimpleTable) GetYWithDefault(_default int64) int64 {
+ if !u.HasY() {
+ return _default
+ }
+ return u.Y
+}
+
+func (u *NewerSimpleTable) HasY() bool {
+ return u.YPresent
+}
+
+func (u *NewerSimpleTable) ClearY() {
+ u.YPresent = false
+}
+
+func (u *NewerSimpleTable) SetZ(z int64) {
+ u.Z = z
+ u.ZPresent = true
+}
+
+func (u *NewerSimpleTable) GetZ() int64 {
+ return u.Z
+}
+
+func (u *NewerSimpleTable) GetZWithDefault(_default int64) int64 {
+ if !u.HasZ() {
+ return _default
+ }
+ return u.Z
+}
+
+func (u *NewerSimpleTable) HasZ() bool {
+ return u.ZPresent
+}
+
+func (u *NewerSimpleTable) ClearZ() {
+ u.ZPresent = false
+}
+
+func (u *NewerSimpleTable) HasUnknownData() bool {
+ return u.I_unknownData != nil
+}
+
+func (u *NewerSimpleTable) GetUnknownData() map[uint64]_bindings.UnknownData {
+ return u.I_unknownData.(map[uint64]_bindings.UnknownData)
+}
+
+const (
+ Test1EchoOrdinal uint64 = 0x4adc92c9e871ae62
+ Test1NoResponseOrdinal uint64 = 0x584f4d438578f337
+ Test1EmptyResponseOrdinal uint64 = 0x12ee80a1f8a85427
+ Test1SurpriseOrdinal uint64 = 0xf93fd4731796fd9
+ Test1EchoHandleRightsOrdinal uint64 = 0x53b1df24e93e434e
+)
+
+type Test1WithCtxInterface _bindings.ChannelProxy
+
+func (p *Test1WithCtxInterface) Echo(ctx_ _bindings.Context, in *string) (*string, error) {
+ req_ := &test1WithCtxEchoRequest{
+ In: in,
+ }
+ resp_ := &test1WithCtxEchoResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(Test1EchoOrdinal, req_, resp_)
+ return resp_.Out, err_
+}
+
+func (p *Test1WithCtxInterface) NoResponse(ctx_ _bindings.Context) error {
+ var req_ _bindings.Message
+ err_ := ((*_bindings.ChannelProxy)(p)).Send(Test1NoResponseOrdinal, req_)
+ return err_
+}
+
+func (p *Test1WithCtxInterface) EmptyResponse(ctx_ _bindings.Context) error {
+ var req_ _bindings.Message
+ var resp_ _bindings.Message
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(Test1EmptyResponseOrdinal, req_, resp_)
+ return err_
+}
+
+func (p *Test1WithCtxInterface) ExpectSurprise(ctx_ _bindings.Context) (string, error) {
+ resp_ := &test1WithCtxSurpriseResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Recv(Test1SurpriseOrdinal, resp_)
+ return resp_.Foo, err_
+}
+
+func (p *Test1WithCtxInterface) EchoHandleRights(ctx_ _bindings.Context, h _zx.Port) (uint32, error) {
+ req_ := &test1WithCtxEchoHandleRightsRequest{
+ H: h,
+ }
+ resp_ := &test1WithCtxEchoHandleRightsResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(Test1EchoHandleRightsOrdinal, req_, resp_)
+ return resp_.Rights, err_
+}
+
+type Test1WithCtx interface {
+ Echo(ctx_ _bindings.Context, in *string) (*string, error)
+ NoResponse(ctx_ _bindings.Context) error
+ EmptyResponse(ctx_ _bindings.Context) error
+ EchoHandleRights(ctx_ _bindings.Context, h _zx.Port) (uint32, error)
+}
+
+type Test1WithCtxTransitionalBase struct{}
+
+type Test1WithCtxInterfaceRequest _bindings.InterfaceRequest
+
+func NewTest1WithCtxInterfaceRequest() (Test1WithCtxInterfaceRequest, *Test1WithCtxInterface, error) {
+ req, cli, err := _bindings.NewInterfaceRequest()
+ return Test1WithCtxInterfaceRequest(req), (*Test1WithCtxInterface)(cli), err
+}
+
+type Test1WithCtxStub struct {
+ Impl Test1WithCtx
+}
+
+func (s_ *Test1WithCtxStub) Dispatch(args_ _bindings.DispatchArgs) (_bindings.Message, bool, error) {
+ switch args_.Ordinal {
+ case Test1EchoOrdinal:
+ in_ := test1WithCtxEchoRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ out, err_ := s_.Impl.Echo(args_.Ctx, in_.In)
+ out_ := test1WithCtxEchoResponse{}
+ out_.Out = out
+ return &out_, true, err_
+ case Test1NoResponseOrdinal:
+ err_ := s_.Impl.NoResponse(args_.Ctx)
+ return nil, false, err_
+ case Test1EmptyResponseOrdinal:
+ err_ := s_.Impl.EmptyResponse(args_.Ctx)
+ return nil, true, err_
+ case Test1EchoHandleRightsOrdinal:
+ in_ := test1WithCtxEchoHandleRightsRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ rights, err_ := s_.Impl.EchoHandleRights(args_.Ctx, in_.H)
+ out_ := test1WithCtxEchoHandleRightsResponse{}
+ out_.Rights = rights
+ return &out_, true, err_
+ }
+ return nil, false, _bindings.ErrUnknownOrdinal
+}
+
+type Test1EventProxy _bindings.ChannelProxy
+
+func (p *Test1EventProxy) Surprise(foo string) error {
+ event_ := &test1WithCtxSurpriseResponse{
+ Foo: foo,
+ }
+ return ((*_bindings.ChannelProxy)(p)).Send(Test1SurpriseOrdinal, event_)
+}
+
+type ExampleProtocolWithCtxInterface _bindings.ChannelProxy
+
+type ExampleProtocolWithCtx interface {
+}
+
+type ExampleProtocolWithCtxTransitionalBase struct{}
+
+type ExampleProtocolWithCtxInterfaceRequest _bindings.InterfaceRequest
+
+func NewExampleProtocolWithCtxInterfaceRequest() (ExampleProtocolWithCtxInterfaceRequest, *ExampleProtocolWithCtxInterface, error) {
+ req, cli, err := _bindings.NewInterfaceRequest()
+ return ExampleProtocolWithCtxInterfaceRequest(req), (*ExampleProtocolWithCtxInterface)(cli), err
+}
+
+type ExampleProtocolWithCtxStub struct {
+ Impl ExampleProtocolWithCtx
+}
+
+func (s_ *ExampleProtocolWithCtxStub) Dispatch(args_ _bindings.DispatchArgs) (_bindings.Message, bool, error) {
+ switch args_.Ordinal {
+ }
+ return nil, false, _bindings.ErrUnknownOrdinal
+}
+
+type ExampleProtocolEventProxy _bindings.ChannelProxy
+
+type EthernetDeviceWithCtxInterface _bindings.ChannelProxy
+
+type EthernetDeviceWithCtx interface {
+}
+
+type EthernetDeviceWithCtxTransitionalBase struct{}
+
+type EthernetDeviceWithCtxInterfaceRequest _bindings.InterfaceRequest
+
+func NewEthernetDeviceWithCtxInterfaceRequest() (EthernetDeviceWithCtxInterfaceRequest, *EthernetDeviceWithCtxInterface, error) {
+ req, cli, err := _bindings.NewInterfaceRequest()
+ return EthernetDeviceWithCtxInterfaceRequest(req), (*EthernetDeviceWithCtxInterface)(cli), err
+}
+
+type EthernetDeviceWithCtxStub struct {
+ Impl EthernetDeviceWithCtx
+}
+
+func (s_ *EthernetDeviceWithCtxStub) Dispatch(args_ _bindings.DispatchArgs) (_bindings.Message, bool, error) {
+ switch args_.Ordinal {
+ }
+ return nil, false, _bindings.ErrUnknownOrdinal
+}
+
+type EthernetDeviceEventProxy _bindings.ChannelProxy
diff --git a/src/syscall/zx/fidl/internal/bindingstest/test.test.fidl b/src/syscall/zx/fidl/internal/bindingstest/test.test.fidl
new file mode 100644
index 0000000..e6d54dd
--- /dev/null
+++ b/src/syscall/zx/fidl/internal/bindingstest/test.test.fidl
@@ -0,0 +1,391 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+deprecated_syntax;
+library bindingstest;
+
+using zx;
+
+struct TestSimple {
+ int64 x;
+};
+
+struct TestSimpleBool {
+ bool x;
+};
+
+struct TestAlignment1 {
+ int8 x;
+ int8 y;
+ uint32 z;
+};
+
+struct TestAlignment2 {
+ uint32 a;
+ uint32 b;
+ int8 c;
+ int8 d;
+ int8 e;
+ uint8 f;
+ uint32 g;
+ uint16 h;
+ uint16 i;
+};
+
+struct TestFloat1 {
+ float32 a;
+};
+
+struct TestFloat2 {
+ float64 a;
+};
+
+struct TestFloat3 {
+ float32 a;
+ float64 b;
+ uint64 c;
+ float32 d;
+};
+
+struct TestArray1 {
+ array<int8>:5 a;
+};
+
+struct TestArray2 {
+ float64 a;
+ array<float32>:1 b;
+};
+
+struct TestArray3 {
+ int32 a;
+ array<uint16>:3 b;
+ uint64 c;
+};
+
+struct TestArray4 {
+ array<bool>:9 a;
+};
+
+struct TestString1 {
+ string a;
+ string? b;
+};
+
+struct TestString2 {
+ array<string>:2 a;
+};
+
+struct TestString3 {
+ array<string:4>:2 a;
+ array<string:4?>:2 b;
+};
+
+struct TestStringWithBound {
+ string:8 a;
+};
+
+struct TestOptStringWithBound {
+ string:8? a;
+};
+
+struct TestVector1 {
+ vector<int8> a;
+ vector<int16>? b;
+ vector<int32>:2 c;
+ vector<int64>:2? d;
+};
+
+struct TestVector2 {
+ array<vector<int8>>:2 a;
+ vector<vector<int8>>:2 b;
+ vector<vector<string:5>:2?>:2 c;
+};
+
+struct TestStruct1 {
+ TestSimple a;
+ TestSimple? b;
+};
+
+struct TestStruct2 {
+ TestArray1 a;
+ TestFloat1 b;
+ TestVector1 c;
+ TestString1? d;
+};
+
+struct EmptyStruct {
+};
+
+struct TestRecursiveStruct {
+ TestRecursiveStruct? s;
+};
+
+struct TestRecursiveVectorStruct {
+ vector<TestRecursiveVectorStruct?> v;
+};
+
+flexible union TestRecursiveVectorUnion {
+ 1: float32 a;
+ 2: vector<TestRecursiveVectorUnion?> b;
+};
+
+struct TestRecursiveUnionStruct {
+ TestRecursiveVectorUnion? u;
+};
+
+union Union1 {
+ 1: array<int8>:3 a;
+ 2: TestSimple b;
+ 3: float32 d;
+};
+
+struct TestUnion1 {
+ Union1 a;
+ Union1? b;
+};
+
+struct TestUnion2 {
+ vector<Union1> a;
+ vector<Union1?> b;
+};
+
+flexible union XUnion1 {
+ 1: array<int8>:3 a;
+ 2: TestSimple b;
+ 3: float32 d;
+};
+
+struct XUnion1Struct {
+ XUnion1 xu;
+};
+
+union XUnion1AsUnion {
+ 1: array<int8>:3 a;
+ 2: TestSimple b;
+ 3: float32 d;
+};
+
+struct XUnion1AsUnionStruct {
+ XUnion1AsUnion xuau;
+};
+
+union UnionInsideUnion {
+ 1: float32 a;
+ 2: XUnion1AsUnion b;
+};
+
+struct UnionInsideUnionStruct {
+ UnionInsideUnion u;
+};
+
+flexible union XUnionInsideXUnion {
+ 1: float32 a;
+ 2: XUnion1 b;
+};
+
+struct XUnionInsideXUnionStruct {
+ XUnionInsideXUnion u;
+};
+
+struct TestXUnion1 {
+ XUnion1 a;
+ XUnion1? b;
+};
+
+struct TestXUnion2 {
+ vector<XUnion1> a;
+ vector<XUnion1?> b;
+};
+
+union StrictXUnion1 {
+ 1: array<int8>:3 a;
+ 2: TestSimple b;
+ 3: float32 d;
+};
+
+struct StrictXUnion1Struct {
+ StrictXUnion1 xu;
+};
+
+struct TestStrictXUnion1 {
+ StrictXUnion1 a;
+ StrictXUnion1? b;
+};
+
+struct TestStrictXUnion2 {
+ vector<StrictXUnion1> a;
+ vector<StrictXUnion1?> b;
+};
+
+resource struct TestHandle1 {
+ zx.handle a;
+ zx.handle? b;
+ zx.handle:VMO c;
+ zx.handle:VMO? d;
+};
+
+resource struct TestHandle2 {
+ vector<zx.handle>:1 a;
+ vector<zx.handle:VMO?>:1 b;
+};
+
+protocol Test1 {
+ Echo(string? in) -> (string? out);
+ NoResponse();
+ EmptyResponse() -> ();
+ -> Surprise(string foo);
+ EchoHandleRights(zx.handle:<PORT, zx.rights.READ | zx.rights.TRANSFER | zx.rights.DUPLICATE> h) -> (uint32 rights);
+};
+
+protocol ExampleProtocol {};
+
+resource struct HasClientEnd {
+ ExampleProtocol client_end;
+};
+
+resource struct HasServerEnd {
+ request<ExampleProtocol> server_end;
+};
+
+resource struct TestInterface1 {
+ Test1 a;
+ Test1? b;
+ request<Test1> c;
+ request<Test1>? d;
+};
+
+table SimpleTable {
+ 1: int64 x;
+ 2: reserved;
+ 3: reserved;
+ 4: reserved;
+ 5: int64 y;
+};
+
+struct TestSimpleTable {
+ SimpleTable table;
+};
+
+// A variant of SimpleTable that has just the first few fields.
+// Think of this as an older variant of that type!
+table OlderSimpleTable {
+ 1: int64 x;
+ 2: reserved;
+};
+
+struct TestOlderSimpleTable {
+ OlderSimpleTable table;
+};
+
+// A variant of SimpleTable that has some additional new fields.
+// Think of this as an newer variant of that type!
+table NewerSimpleTable {
+ 1: int64 x;
+ 2: reserved;
+ 3: reserved;
+ 4: reserved;
+ 5: int64 y;
+ 6: int64 z;
+ 7: reserved;
+};
+
+struct TestNewerSimpleTable {
+ NewerSimpleTable table;
+};
+
+struct TestWithTableAndInt {
+ SimpleTable table;
+ uint64 foo;
+};
+
+union SimpleUnion {
+ 1: int32 i32;
+ 2: int64 i64;
+ 3: Int64Struct s;
+ 4: string str;
+};
+
+struct Int64Struct {
+ int64 x;
+};
+
+// examples from fuchsia world.
+
+const uint64 kMaxBuf = 8192;
+
+struct TestFuchsiaIoReadAtResponse {
+ zx.status s;
+ vector<uint8>:kMaxBuf data;
+};
+
+struct TestFuchsiaIoWriteAtRequest {
+ vector<uint8>:kMaxBuf data;
+ uint64 offset;
+};
+
+struct TestFuchsiaPosixSocketSendMsgRequest {
+ bytes:128 sockaddr;
+ vector<bytes>:MAX data;
+ bytes control;
+ int16 flags;
+};
+
+protocol EthernetDevice {
+};
+
+struct InterfaceConfig {
+ string name;
+ IpAddressConfig ip_address_config;
+};
+
+union IpAddressConfig {
+ 1: array<uint32>:6 padding_size_24_align_4;
+ 2: bool dhcp;
+};
+
+resource struct TestAddEthernetDeviceRequest {
+ string topological_path;
+ InterfaceConfig config;
+ EthernetDevice device;
+};
+
+resource struct TestPackageResolverResolveRequest {
+ string package_url;
+ vector<string> selectors;
+ UpdatePolicy update_policy;
+ request<EthernetDevice> dir;
+};
+
+struct UpdatePolicy {
+ bool fetch_if_absent;
+ bool allow_old_versions;
+};
+
+enum TestUcharEnum : uint8 {
+ UcharEnum1 = 1;
+ UcharEnum2 = 2;
+};
+
+// TODO(pascallouis): Move to GIDL
+struct TestUcharEnumVec {
+ vector<TestUcharEnum:10> values;
+};
+
+resource struct HandleRightsSubtypeTestStruct {
+ vector<zx.handle:<VMO, zx.rights.DUPLICATE | zx.rights.TRANSFER>> h;
+};
+
+resource struct PlainHandleTestStruct {
+ zx.handle h;
+};
+
+bits StrictBits {
+ ONE = 0b01;
+ TWO = 0b10;
+};
+
+flexible bits FlexibleBits {
+ ONE = 0b01;
+ TWO = 0b10;
+};
diff --git a/src/syscall/zx/fidl/internal/unsafevalue/unsafevalue.go b/src/syscall/zx/fidl/internal/unsafevalue/unsafevalue.go
new file mode 100644
index 0000000..ec9f083
--- /dev/null
+++ b/src/syscall/zx/fidl/internal/unsafevalue/unsafevalue.go
@@ -0,0 +1,199 @@
+// 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.
+
+// This package defines a reflect.Value-like interface that uses unsafe.Pointers
+// to reduce the amount of work for each operation, as compared with the
+// reflect package.
+// This is possible because the Marshaler is built for a specific type and
+// therefore the type and structure is known in advance and checks normally
+// performed by the reflect package are redundant.
+// ASSUMPTIONS:
+// - Go's interface implementation is two pointers, type followed by value.
+// - reflect.Type is an interface with the runtime type as the concrete
+// implementation.
+package unsafevalue
+
+import (
+ "reflect"
+ "unsafe"
+)
+
+// A pointer to a go value.
+type Value struct{ data unsafe.Pointer }
+
+// Construct a Value from an interface.
+// ValueOf(&x) is identical to ValueOf(x), except the latter will make a
+// copy of x (when putting it into the interface).
+func ValueOf(i interface{}) Value {
+ return Value{extractInterface(i).data}
+}
+
+func (v Value) UnsafeAddr() uintptr {
+ return uintptr(v.data)
+}
+
+func (v Value) Bool() bool {
+ return *(*bool)(v.data)
+}
+func (v Value) Int8() int8 {
+ return *(*int8)(v.data)
+}
+func (v Value) Int16() int16 {
+ return *(*int16)(v.data)
+}
+func (v Value) Int32() int32 {
+ return *(*int32)(v.data)
+}
+func (v Value) Int64() int64 {
+ return *(*int64)(v.data)
+}
+func (v Value) Uint8() uint8 {
+ return *(*uint8)(v.data)
+}
+func (v Value) Uint16() uint16 {
+ return *(*uint16)(v.data)
+}
+func (v Value) Uint32() uint32 {
+ return *(*uint32)(v.data)
+}
+func (v Value) Uint64() uint64 {
+ return *(*uint64)(v.data)
+}
+func (v Value) Float32() float32 {
+ return *(*float32)(v.data)
+}
+func (v Value) Float64() float64 {
+ return *(*float64)(v.data)
+}
+func (v Value) String() string {
+ return *(*string)(v.data)
+}
+func (v Value) Bytes() []byte {
+ return *(*[]byte)(v.data)
+}
+func (v Value) Interface() interface{} {
+ return *(*interface{})(v.data)
+}
+
+func (v Value) SetBool(b bool) {
+ *(*bool)(v.data) = b
+}
+func (v Value) SetInt8(i int8) {
+ *(*int8)(v.data) = i
+}
+func (v Value) SetInt16(i int16) {
+ *(*int16)(v.data) = i
+}
+func (v Value) SetInt32(i int32) {
+ *(*int32)(v.data) = i
+}
+func (v Value) SetInt64(i int64) {
+ *(*int64)(v.data) = i
+}
+func (v Value) SetUint8(i uint8) {
+ *(*uint8)(v.data) = i
+}
+func (v Value) SetUint16(i uint16) {
+ *(*uint16)(v.data) = i
+}
+func (v Value) SetUint32(i uint32) {
+ *(*uint32)(v.data) = i
+}
+func (v Value) SetUint64(i uint64) {
+ *(*uint64)(v.data) = i
+}
+func (v Value) SetFloat32(i float32) {
+ *(*float32)(v.data) = i
+}
+func (v Value) SetFloat64(i float64) {
+ *(*float64)(v.data) = i
+}
+func (v Value) SetString(s string) {
+ *(*string)(v.data) = s
+}
+func (v Value) SetBytes(b []byte) {
+ *(*[]byte)(v.data) = b
+}
+func (v Value) SetInterface(s interface{}) {
+ *(*interface{})(v.data) = s
+}
+
+func (v Value) SliceLen() int {
+ return (*reflect.SliceHeader)(v.data).Len
+}
+
+func (v Value) SliceCap() int {
+ return (*reflect.SliceHeader)(v.data).Cap
+}
+
+func (v Value) SliceIndex(elemSize uintptr, index int) Value {
+ return Value{unsafe.Pointer(uintptr((*reflect.SliceHeader)(v.data).Data) + uintptr(index)*elemSize)}
+}
+
+// Analogous to rv.Set(reflect.MakeSlice(elemType, len, cap)).
+func (v Value) SliceSetMakeSlice(elemType reflect.Type, len, cap int) {
+ sh := (*reflect.SliceHeader)(v.data)
+ sh.Len = len
+ sh.Cap = cap
+ sh.Data = uintptr(unsafe_NewArray(runtimeTypeFromReflectType(elemType), cap))
+}
+
+func (v Value) ArrayIndex(elemSize uintptr, index int) Value {
+ return Value{unsafe.Pointer(uintptr(v.data) + uintptr(index)*elemSize)}
+}
+
+func (v Value) StructFieldOffset(offset uintptr) Value {
+ return Value{unsafe.Pointer(uintptr(v.data) + offset)}
+}
+
+func (v Value) PointerElem() Value {
+ return Value{*(*unsafe.Pointer)(v.data)}
+}
+
+func (v Value) PointerIsNil() bool {
+ return *(*unsafe.Pointer)(v.data) == nil
+}
+
+func (v Value) PointerSetNil() {
+ *(*unsafe.Pointer)(v.data) = nil
+}
+
+// Analogous to rv.Set(reflect.New(elemType)).
+func (v Value) PointerSetNew(elemType reflect.Type) {
+ *(*unsafe.Pointer)(v.data) = unsafeNew(runtimeTypeFromReflectType(elemType))
+}
+
+// The runtime type of a value in go.
+// Equivalent to *reflect.rtype.
+type runtimeType uintptr
+
+// A struct representing the in-memory layout of a go interface.
+type runtimeInterfaceImpl struct {
+ rtype runtimeType
+ data unsafe.Pointer
+}
+
+// Extract the underlying in-memory structure from an interface.
+func extractInterface(i interface{}) *runtimeInterfaceImpl {
+ // It is also possible to get the data field via
+ // reflect.ValueOf(v).Elem().UnsafeAddr(), but this does
+ // not require a heap allocation and dereferences the
+ // pointer in the interface.
+ return (*runtimeInterfaceImpl)(unsafe.Pointer(&i))
+}
+
+// Extract the runtime type from a reflect.Type.
+func runtimeTypeFromReflectType(rt reflect.Type) runtimeType {
+ // A reflect type is an interface with rtype as its data.
+ // (see reflect/type.go)/
+ return runtimeType(extractInterface(rt).data)
+}
+
+// unsafeNew is equivalent to reflect.New(rt).Elem().UnsafeAddr().
+//go:linkname unsafeNew reflect.unsafe_New
+func unsafeNew(rtype runtimeType) unsafe.Pointer
+
+// unsafe_NewArray allocates a new array of the specified type.
+//go:linkname unsafe_NewArray reflect.unsafe_NewArray
+func unsafe_NewArray(rtype runtimeType, length int) unsafe.Pointer
diff --git a/src/syscall/zx/fidl/internal/unsafevalue/unsafevalue_test.go b/src/syscall/zx/fidl/internal/unsafevalue/unsafevalue_test.go
new file mode 100644
index 0000000..4926b77
--- /dev/null
+++ b/src/syscall/zx/fidl/internal/unsafevalue/unsafevalue_test.go
@@ -0,0 +1,428 @@
+// 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 unsafevalue_test
+
+import (
+ "reflect"
+ "syscall/zx/fidl/internal/unsafevalue"
+ "testing"
+ "unsafe"
+)
+
+// We assume that the interface is two pointers (type, data).
+// We also assume that reflect.Type contains the runtime type in the data field.
+func TestAssumptionInterfaceAndTypeLayout(t *testing.T) {
+ var x int64
+ var y interface{} = &x
+
+ type interfaceLayout struct {
+ typ *int64
+ data *int64
+ }
+
+ if (*interfaceLayout)((unsafe.Pointer)(&y)).data != &x {
+ t.Errorf("data pointer doesn't match")
+ }
+
+ rtype := (*interfaceLayout)((unsafe.Pointer)(&y)).typ
+
+ rt := reflect.TypeOf(&x)
+ rtypeFromReflect := (*interfaceLayout)((unsafe.Pointer)(&rt)).data
+
+ if rtype != rtypeFromReflect {
+ t.Errorf("type pointer doesn't match")
+ }
+}
+
+func TestValueOfPointerInput(t *testing.T) {
+ var x int32
+ if got, want := (*int32)(unsafe.Pointer(unsafevalue.ValueOf(&x).UnsafeAddr())), &x; got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+}
+
+func TestValueOfValueInput(t *testing.T) {
+ var x int32 = 2
+ if got, want := *(*int32)(unsafe.Pointer(unsafevalue.ValueOf(x).UnsafeAddr())), x; got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+}
+
+func TestValueOfNilInput(t *testing.T) {
+ if got, want := unsafevalue.ValueOf(nil).UnsafeAddr(), uintptr(0); got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+}
+
+func TestBool(t *testing.T) {
+ x := true
+ if got, want := unsafevalue.ValueOf(&x).Bool(), x; got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+}
+
+func TestInt8(t *testing.T) {
+ var x int8 = 2
+ if got, want := unsafevalue.ValueOf(&x).Int8(), x; got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+}
+
+func TestInt16(t *testing.T) {
+ var x int16 = 2
+ if got, want := unsafevalue.ValueOf(&x).Int16(), x; got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+}
+
+func TestInt32(t *testing.T) {
+ var x int32 = 2
+ if got, want := unsafevalue.ValueOf(&x).Int32(), x; got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+}
+
+func TestInt64(t *testing.T) {
+ var x int64 = 2
+ if got, want := unsafevalue.ValueOf(&x).Int64(), x; got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+}
+
+func TestUint8(t *testing.T) {
+ var x uint8 = 2
+ if got, want := unsafevalue.ValueOf(&x).Uint8(), x; got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+}
+
+func TestUint16(t *testing.T) {
+ var x uint16 = 2
+ if got, want := unsafevalue.ValueOf(&x).Uint16(), x; got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+}
+
+func TestUint32(t *testing.T) {
+ var x uint32 = 2
+ if got, want := unsafevalue.ValueOf(&x).Uint32(), x; got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+}
+
+func TestUint64(t *testing.T) {
+ var x uint64 = 2
+ if got, want := unsafevalue.ValueOf(&x).Uint64(), x; got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+}
+
+func TestFloat32(t *testing.T) {
+ var x float32 = 2.0
+ if got, want := unsafevalue.ValueOf(&x).Float32(), x; got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+}
+
+func TestFloat64(t *testing.T) {
+ var x float64 = 2.0
+ if got, want := unsafevalue.ValueOf(&x).Float64(), x; got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+}
+
+func TestString(t *testing.T) {
+ x := "abcd"
+ if got, want := unsafevalue.ValueOf(&x).String(), x; got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+}
+
+func TestBytes(t *testing.T) {
+ x := []byte{1, 2, 3}
+ if got, want := unsafevalue.ValueOf(&x).Bytes(), x; !reflect.DeepEqual(got, want) {
+ t.Errorf("got %v, want %v", got, want)
+ }
+}
+
+func TestSetBool(t *testing.T) {
+ x := true
+ newval := false
+ unsafevalue.ValueOf(&x).SetBool(newval)
+ if got, want := x, newval; got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+}
+
+func TestSetInt8(t *testing.T) {
+ var x int8 = 2
+ var newval int8 = 5
+ unsafevalue.ValueOf(&x).SetInt8(newval)
+ if got, want := x, newval; got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+}
+
+func TestSetInt16(t *testing.T) {
+ var x int16 = 2
+ var newval int16 = 5
+ unsafevalue.ValueOf(&x).SetInt16(newval)
+ if got, want := x, newval; got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+}
+
+func TestSetInt32(t *testing.T) {
+ var x int32 = 2
+ var newval int32 = 5
+ unsafevalue.ValueOf(&x).SetInt32(newval)
+ if got, want := x, newval; got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+}
+
+func TestSetInt64(t *testing.T) {
+ var x int64 = 2
+ var newval int64 = 5
+ unsafevalue.ValueOf(&x).SetInt64(newval)
+ if got, want := x, newval; got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+}
+
+func TestSetUint8(t *testing.T) {
+ var x uint8 = 2
+ var newval uint8 = 5
+ unsafevalue.ValueOf(&x).SetUint8(newval)
+ if got, want := x, newval; got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+}
+
+func TestSetUint16(t *testing.T) {
+ var x uint16 = 2
+ var newval uint16 = 5
+ unsafevalue.ValueOf(&x).SetUint16(newval)
+ if got, want := x, newval; got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+}
+
+func TestSetUint32(t *testing.T) {
+ var x uint32 = 2
+ var newval uint32 = 5
+ unsafevalue.ValueOf(&x).SetUint32(newval)
+ if got, want := x, newval; got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+}
+
+func TestSetUint64(t *testing.T) {
+ var x uint64 = 2
+ var newval uint64 = 5
+ unsafevalue.ValueOf(&x).SetUint64(newval)
+ if got, want := x, newval; got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+}
+
+func TestSetFloat32(t *testing.T) {
+ var x float32 = 2.0
+ var newval float32 = 5.0
+ unsafevalue.ValueOf(&x).SetFloat32(newval)
+ if got, want := x, newval; got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+}
+
+func TestSetFloat64(t *testing.T) {
+ var x float64 = 2.0
+ var newval float64 = 5.0
+ unsafevalue.ValueOf(&x).SetFloat64(newval)
+ if got, want := x, newval; got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+}
+
+func TestSetString(t *testing.T) {
+ x := "abcd"
+ newval := "xyz"
+ unsafevalue.ValueOf(&x).SetString(newval)
+ if got, want := x, newval; got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+}
+
+func TestSetBytes(t *testing.T) {
+ x := []byte{1, 2, 3}
+ newval := []byte{100, 101}
+ unsafevalue.ValueOf(&x).SetBytes(newval)
+ if got, want := x, newval; !reflect.DeepEqual(got, want) {
+ t.Errorf("got %v, want %v", got, want)
+ }
+}
+
+func TestNilSliceLen(t *testing.T) {
+ var x []int32
+ if got, want := unsafevalue.ValueOf(&x).SliceLen(), 0; got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+}
+
+func TestNilSliceCap(t *testing.T) {
+ var x []int32
+ if got, want := unsafevalue.ValueOf(&x).SliceCap(), 0; got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+}
+
+func TestNilSliceSetMakeSlice(t *testing.T) {
+ var x []int32
+ unsafevalue.ValueOf(&x).SliceSetMakeSlice(reflect.TypeOf(x).Elem(), 1, 2)
+ if got, want := len(x), 1; got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+ if got, want := cap(x), 2; got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+ if got, want := x[0], int32(0); got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+ x = append(x, 1)
+ if got, want := len(x), 2; got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+ if got, want := cap(x), 2; got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+ if got, want := x[1], int32(1); got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+}
+
+func TestSliceLen(t *testing.T) {
+ x := make([]int32, 3, 5)
+ if got, want := unsafevalue.ValueOf(&x).SliceLen(), 3; got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+}
+
+func TestSliceCap(t *testing.T) {
+ x := make([]int32, 3, 5)
+ if got, want := unsafevalue.ValueOf(&x).SliceCap(), 5; got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+}
+
+func TestSliceIndex(t *testing.T) {
+ x := []int32{1, 2, 3}
+ if got, want := unsafevalue.ValueOf(&x).SliceIndex(4, 0).Int32(), x[0]; got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+ if got, want := unsafevalue.ValueOf(&x).SliceIndex(4, 1).Int32(), x[1]; got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+ if got, want := unsafevalue.ValueOf(&x).SliceIndex(4, 2).Int32(), x[2]; got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+}
+
+func TestSliceSetMakeSlice(t *testing.T) {
+ x := []int32{8, 9, 10}
+ unsafevalue.ValueOf(&x).SliceSetMakeSlice(reflect.TypeOf(x).Elem(), 1, 2)
+ if got, want := len(x), 1; got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+ if got, want := cap(x), 2; got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+ if got, want := x[0], int32(0); got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+ x = append(x, 1)
+ if got, want := len(x), 2; got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+ if got, want := cap(x), 2; got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+ if got, want := x[1], int32(1); got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+}
+
+func TestArrayIndex(t *testing.T) {
+ x := [3]int32{1, 2, 3}
+ if got, want := unsafevalue.ValueOf(&x).ArrayIndex(4, 0).Int32(), x[0]; got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+ if got, want := unsafevalue.ValueOf(&x).ArrayIndex(4, 1).Int32(), x[1]; got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+ if got, want := unsafevalue.ValueOf(&x).ArrayIndex(4, 2).Int32(), x[2]; got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+}
+
+func TestStructFieldOffset(t *testing.T) {
+ type X struct {
+ _ struct{}
+ A int32
+ B string
+ }
+ x := X{
+ A: 3,
+ B: "test",
+ }
+ v := unsafevalue.ValueOf(&x)
+ offsetA := reflect.TypeOf(x).Field(1).Offset
+ offsetB := reflect.TypeOf(x).Field(2).Offset
+ if got, want := v.StructFieldOffset(offsetA).Int32(), x.A; got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+ if got, want := v.StructFieldOffset(offsetB).String(), x.B; got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+}
+
+func TestNilPointerIsNil(t *testing.T) {
+ var x *int32
+ if got, want := unsafevalue.ValueOf(&x).PointerIsNil(), true; got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+}
+
+func TestNonNilPointerIsNil(t *testing.T) {
+ var y int32
+ x := &y
+ if got, want := unsafevalue.ValueOf(&x).PointerIsNil(), false; got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+}
+
+func TestPointerElem(t *testing.T) {
+ var y int32 = 2
+ x := &y
+ if got, want := unsafevalue.ValueOf(&x).PointerElem().Int32(), y; got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+}
+
+func TestPointerSetNil(t *testing.T) {
+ var y int32 = 2
+ x := &y
+ unsafevalue.ValueOf(&x).PointerSetNil()
+ if got, want := x, (*int32)(nil); got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+}
+
+func TestPointerSetNew(t *testing.T) {
+ var x *int32
+ unsafevalue.ValueOf(&x).PointerSetNew(reflect.TypeOf(x).Elem())
+ if got, want := *x, int32(0); got != want {
+ t.Errorf("got %v, want %v", got, want)
+ }
+}
diff --git a/src/syscall/zx/fidl/message.go b/src/syscall/zx/fidl/message.go
new file mode 100644
index 0000000..54f327d
--- /dev/null
+++ b/src/syscall/zx/fidl/message.go
@@ -0,0 +1,70 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package fidl
+
+import (
+ "sync"
+
+ "syscall/zx"
+)
+
+// messageBytesPool is a pool of buffers that can fit the data part of any
+// FIDL message.
+var messageBytesPool = sync.Pool{
+ New: func() interface{} {
+ return make([]byte, zx.ChannelMaxMessageBytes)
+ },
+}
+
+// messageHandleInfosPool is a pool of buffers that can fit the handle infos
+// for a FIDL message.
+var messageHandleInfosPool = sync.Pool{
+ New: func() interface{} {
+ return make([]zx.HandleInfo, zx.ChannelMaxMessageHandles)
+ },
+}
+
+// messageHandlesPool is a pool of buffers that can fit the handle dispositions
+// for a FIDL message.
+var messageHandleDispositionsPool = sync.Pool{
+ New: func() interface{} {
+ return make([]zx.HandleDisposition, zx.ChannelMaxMessageHandles)
+ },
+}
+
+// MarshalHeaderThenMessage marshals a transactional message
+// (see https://fuchsia.googlesource.com/fuchsia/+/master/docs/development/languages/fidl/reference/wire-format/README.md#messages-for-transactions).
+// It marshals a `MessageHeader`, optionally followed by a `Message` (body).
+func MarshalHeaderThenMessage(header *MessageHeader, body Message, data []byte, handleDispositions []zx.HandleDisposition) (int, int, error) {
+ hnb, _, err := Marshal(header, data, nil)
+ if err != nil {
+ return 0, 0, err
+ }
+ if body == nil {
+ return hnb, 0, nil
+ }
+ nb, nh, err := Marshal(body, data[hnb:], handleDispositions)
+ if err != nil {
+ return 0, 0, err
+ }
+ return hnb + nb, nh, nil
+}
+
+// UnmarshalHeaderThenMessage unmarshals a transactional message
+// (see https://fuchsia.googlesource.com/fuchsia/+/master/docs/development/languages/fidl/reference/wire-format/README.md#messages-for-transactions).
+// It unmarshals a `MessageHeader`, optionally followed by a `Message` (body).
+func UnmarshalHeaderThenMessage(data []byte, handleInfos []zx.HandleInfo, header *MessageHeader, body Message) error {
+ hnb, _, err := Unmarshal(data, nil, header)
+ if err != nil {
+ return err
+ }
+ if body == nil {
+ return nil
+ }
+ if _, _, err := UnmarshalWithContext2(header.NewCtx(), data[hnb:], handleInfos, body); err != nil {
+ return err
+ }
+ return nil
+}
diff --git a/src/syscall/zx/fidl/types.go b/src/syscall/zx/fidl/types.go
new file mode 100644
index 0000000..1bacc86
--- /dev/null
+++ b/src/syscall/zx/fidl/types.go
@@ -0,0 +1,44 @@
+// 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 fidl
+
+import "syscall/zx"
+
+// Enum is implemented by any value that is a FIDL enum.
+//
+// During code generation, `fidlgen_go` ensures that all domain types generated
+// to represent FIDL enum implement this interface.
+type Enum interface {
+ // IsUnknown indicates whether this enum value is unknown, i.e. whether it
+ // falls outside of known FIDL enum members.
+ //
+ // While strict FIDL enums ensure that no unknown enums can be decoded, it
+ // is still possible to construct an unknown enum by casting a primitive
+ // value.
+ IsUnknown() bool
+}
+
+// Bits is implemented by any value that is a FIDL bits type.
+//
+// During code generation, `fidlgen_go` ensures that all domain types generated
+// to represent FIDL bits implement this interface.
+//
+// While strict FIDL bits ensure that no unknown bits can be decoded, it
+// is still possible to construct a bits value with unknown bits by casting
+// a primitive value.
+type Bits interface {
+ // HasUnknownBits indicates whether this bits value contains any unknown
+ // bits
+ HasUnknownBits() bool
+
+ // GetUnknownBits returns a uint64 containing only the unknown bits
+ GetUnknownBits() uint64
+}
+
+// UnknownData represents the raw bytes and handles of an unknown payload
+type UnknownData struct {
+ Bytes []byte
+ Handles []zx.HandleInfo
+}
diff --git a/src/syscall/zx/fidl/zx_fuchsia.go b/src/syscall/zx/fidl/zx_fuchsia.go
new file mode 100644
index 0000000..eb9d20c
--- /dev/null
+++ b/src/syscall/zx/fidl/zx_fuchsia.go
@@ -0,0 +1,25 @@
+// 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.
+
+// `go mod` ignores file names for the purpose of resolving
+// dependencies, and zxwait doesn't build on not-Fuchsia.
+//go:build fuchsia
+// +build fuchsia
+
+package fidl
+
+import (
+ "syscall/zx"
+ "syscall/zx/zxwait"
+)
+
+var handleClose = (*zx.Handle).Close
+var handleReplace = zx.Handle.Replace
+
+var newChannel = zx.NewChannel
+var channelClose = (*zx.Channel).Close
+var channelReadEtc = (*zx.Channel).ReadEtc
+var channelWriteEtc = (*zx.Channel).WriteEtc
+
+var withRetryContext = zxwait.WithRetryContext
diff --git a/src/syscall/zx/fidl/zx_notfuchsia.go b/src/syscall/zx/fidl/zx_notfuchsia.go
new file mode 100644
index 0000000..ae85ffc
--- /dev/null
+++ b/src/syscall/zx/fidl/zx_notfuchsia.go
@@ -0,0 +1,46 @@
+// 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.
+
+//go:build !fuchsia
+// +build !fuchsia
+
+package fidl
+
+import (
+ "syscall/zx"
+ "syscall/zx/internal/context"
+)
+
+// Return nil rather than panicking so that tests can use fake handles on non-fuchsia.
+// Tests on non-fuchsia end up calling this because unmarshalers for strict types close
+// handles when they receive unknown data with handles.
+func handleClose(*zx.Handle) error {
+ return nil
+}
+
+func handleReplace(handle zx.Handle, rights zx.Rights) (zx.Handle, error) {
+ // The conformance tests use simulated handles on host, so this
+ // can't panic. Instead, return an invalid handle.
+ return zx.HandleInvalid, nil
+}
+
+func newChannel(uint32) (zx.Channel, zx.Channel, error) {
+ panic("channel new only supported on fuchsia")
+}
+
+func channelClose(*zx.Channel) error {
+ panic("channel close only supported on fuchsia")
+}
+
+func channelReadEtc(*zx.Channel, []byte, []zx.HandleInfo, uint32) (uint32, uint32, error) {
+ panic("channel read etc only supported on fuchsia")
+}
+
+func channelWriteEtc(*zx.Channel, []byte, []zx.HandleDisposition, uint32) error {
+ panic("channel write etc only supported on fuchsia")
+}
+
+func withRetryContext(_ context.Context, fn func() error, _ zx.Handle, _, _ zx.Signals) error {
+ return fn()
+}
diff --git a/src/syscall/zx/handle.go b/src/syscall/zx/handle.go
new file mode 100644
index 0000000..6a592bc
--- /dev/null
+++ b/src/syscall/zx/handle.go
@@ -0,0 +1,46 @@
+// 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 zx
+
+import "sync/atomic"
+
+type Socket Handle
+type Event Handle
+type Channel Handle
+type Port Handle
+type VMO Handle
+type VMAR Handle
+type Log Handle
+
+func (s *Socket) Handle() *Handle {
+ return (*Handle)(s)
+}
+func (e *Event) Handle() *Handle {
+ return (*Handle)(e)
+}
+func (c *Channel) Handle() *Handle {
+ return (*Handle)(c)
+}
+func (p *Port) Handle() *Handle {
+ return (*Handle)(p)
+}
+func (vmo *VMO) Handle() *Handle {
+ return (*Handle)(vmo)
+}
+func (l *Log) Handle() *Handle {
+ return (*Handle)(l)
+}
+
+func (h *Handle) Load() Handle {
+ return Handle(atomic.LoadUint32((*uint32)(h)))
+}
+func (h *Handle) IsValid() bool {
+ return h.Load() > HandleInvalid
+}
+
+const (
+ ChannelMaxMessageBytes = 65536
+ ChannelMaxMessageHandles = 64
+)
diff --git a/src/syscall/zx/handle_fuchsia.go b/src/syscall/zx/handle_fuchsia.go
new file mode 100644
index 0000000..4d28141
--- /dev/null
+++ b/src/syscall/zx/handle_fuchsia.go
@@ -0,0 +1,566 @@
+// 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 zx
+
+import (
+ "internal/oserror"
+ "sync/atomic"
+ "unsafe"
+)
+
+// Process-wide FDIO handles.
+var (
+ StdioHandles [3]Handle // in/out/err
+ StdioHandleTypes [3]int
+ CwdHandle Handle
+ ProcHandle Handle
+ VMARRoot VMAR
+ RootNSMap map[string]Handle
+)
+
+const ZX_CPRNG_DRAW_MAX_LEN = 256
+
+func set_stdio_handle(n int, h uint32, t uint32) {
+ StdioHandles[n] = Handle(h)
+ StdioHandleTypes[n] = int(t)
+}
+
+func set_proc_handle(h uint32) {
+ ProcHandle = Handle(h)
+}
+
+func get_proc_handle() uint32 {
+ return uint32(ProcHandle)
+}
+
+func set_vmar_root(h uint32) {
+ VMARRoot = VMAR(h)
+}
+
+func set_namespace(ns map[string]uint32) {
+ if RootNSMap == nil {
+ RootNSMap = make(map[string]Handle)
+ }
+
+ for k, v := range ns {
+ RootNSMap[k] = Handle(v)
+ }
+}
+
+func (h Handle) Replace(rights Rights) (Handle, error) {
+ var out Handle
+ status := Sys_handle_replace(h, rights, &out)
+ if status != ErrOk {
+ return Handle(0), &Error{Status: status, Text: "zx.Handle.Replace"}
+ }
+ return out, nil
+}
+
+func bytesPtr(data []byte) unsafe.Pointer {
+ if len(data) > 0 {
+ return unsafe.Pointer(&data[0])
+ }
+ return nil
+}
+
+func (s *Socket) Read(data []byte, flags uint32) (int, error) {
+ var actual uint
+ status := Sys_socket_read(s.Handle().Load(), flags, bytesPtr(data), uint(len(data)), &actual)
+ if status != ErrOk {
+ return int(actual), &Error{Status: status, Text: "zx.Socket.Read"}
+ }
+ return int(actual), nil
+}
+
+func (s *Socket) Write(data []byte, flags uint32) (int, error) {
+ var actual uint
+ status := Sys_socket_write(s.Handle().Load(), flags, bytesPtr(data), uint(len(data)), &actual)
+ if status != ErrOk {
+ return int(actual), &Error{Status: status, Text: "zx.Socket.Write"}
+ }
+ return int(actual), nil
+}
+
+func (s *Socket) Close() error {
+ return s.Handle().Close()
+}
+
+func (s *Socket) Shutdown(flags uint32) error {
+ status := Sys_socket_shutdown(s.Handle().Load(), flags)
+ if status != ErrOk {
+ return &Error{Status: status, Text: "zx.Socket.Shutdown"}
+ }
+ return nil
+}
+
+func NewSocket(flags uint32) (Socket, Socket, error) {
+ var h0, h1 Handle
+ if status := Sys_socket_create(flags, &h0, &h1); status != ErrOk {
+ return Socket(HandleInvalid), Socket(HandleInvalid), &Error{Status: status, Text: "zx.Socket"}
+ }
+ return Socket(h0), Socket(h1), nil
+}
+
+func NewEvent(options uint32) (Event, error) {
+ var h Handle
+ if status := Sys_event_create(options, &h); status != ErrOk {
+ return Event(HandleInvalid), &Error{Status: status, Text: "zx.Event"}
+ }
+ return Event(h), nil
+}
+
+func (e *Event) Close() error {
+ return e.Handle().Close()
+}
+
+func (e *Event) Duplicate(rights Rights) (Event, error) {
+ h := e.Handle().Load()
+ h, err := h.Duplicate(rights)
+ if err != nil {
+ return Event(HandleInvalid), err
+ }
+ return Event(h), nil
+}
+
+var zxwaitCloseFn = func(Handle, func(Handle) error) error { return nil }
+
+// SetZXWaitCloseFn is used by package zxwait to avoid a circular dependency.
+func SetZXWaitCloseFn(fn func(Handle, func(Handle) error) error) {
+ zxwaitCloseFn = fn
+}
+
+func (h *Handle) Close() error {
+ if handle := Handle(atomic.SwapUint32((*uint32)(h), uint32(HandleInvalid))); handle != HandleInvalid {
+ if err := zxwaitCloseFn(handle, closeHandle); err != nil {
+ return err
+ }
+ }
+ return nil
+}
+
+func closeHandle(handle Handle) error {
+ if status := Sys_handle_close(handle); status != ErrOk {
+ return &Error{Status: status, Text: "zx.Handle.Close"}
+ }
+ return nil
+}
+
+func (h *Handle) Duplicate(rights Rights) (Handle, error) {
+ var dup Handle
+ if status := Sys_handle_duplicate(h.Load(), rights, &dup); status != ErrOk {
+ return HandleInvalid, &Error{Status: status, Text: "zx.Handle.Duplicate"}
+ }
+ return dup, nil
+}
+
+func (h *Handle) Signal(clearMask, setMask Signals) error {
+ if status := Sys_object_signal(h.Load(), uint32(clearMask), uint32(setMask)); status != ErrOk {
+ return &Error{Status: status, Text: "zx.Handle.Signal"}
+ }
+ return nil
+}
+
+func (h *Handle) SignalPeer(clearMask, setMask Signals) error {
+ if status := Sys_object_signal_peer(h.Load(), uint32(clearMask), uint32(setMask)); status != ErrOk {
+ return &Error{Status: status, Text: "zx.Handle.SignalPeer"}
+ }
+ return nil
+}
+
+func (h *Handle) GetInfo(topic uint32, buffer unsafe.Pointer, bufferSize uint) error {
+ if status := Sys_object_get_info(h.Load(), topic, buffer, bufferSize, nil, nil); status != ErrOk {
+ return &Error{Status: status, Text: "zx.Handle.GetInfo"}
+ }
+ return nil
+}
+
+func (h *Handle) GetInfoHandleBasic() (InfoHandleBasic, error) {
+ var info InfoHandleBasic
+ err := h.GetInfo(ObjectInfoHandleBasic, unsafe.Pointer(&info), uint(unsafe.Sizeof(info)))
+ return info, err
+}
+
+func (h *Handle) GetInfoHandleValid() bool {
+ err := h.GetInfo(ObjectInfoHandleValid, nil, 0)
+ return err == nil
+}
+
+func (h *Handle) GetProperty(property uint32, data []byte) error {
+ var numBytes = uint(len(data))
+ if status := Sys_object_get_property(h.Load(), property, bytesPtr(data), numBytes); status != ErrOk {
+ return &Error{Status: status, Text: "zx.Handle.GetProperty"}
+ }
+ return nil
+}
+
+func (h *Handle) SetProperty(property uint32, data []byte) error {
+ var numBytes = uint(len(data))
+ if status := Sys_object_set_property(h.Load(), property, bytesPtr(data), numBytes); status != ErrOk {
+ return &Error{Status: status, Text: "zx.Handle.SetProperty"}
+ }
+ return nil
+}
+
+func WaitMany(items []WaitItem, timeout Time) error {
+ var ptr *WaitItem
+ if len(items) > 0 {
+ ptr = &items[0]
+ }
+ if status := Sys_object_wait_many(ptr, uint(len(items)), timeout); status != ErrOk {
+ return &Error{Status: status, Text: "zx.Handle.WaitMany"}
+ }
+ return nil
+}
+
+func (c *Channel) Close() error {
+ return c.Handle().Close()
+}
+
+func handlePtr(data []Handle) *Handle {
+ if len(data) > 0 {
+ return &data[0]
+ }
+ return nil
+}
+
+func handleInfoPtr(data []HandleInfo) *HandleInfo {
+ if len(data) > 0 {
+ return &data[0]
+ }
+ return nil
+}
+
+func handleDispositionPtr(data []HandleDisposition) *HandleDisposition {
+ if len(data) > 0 {
+ return &data[0]
+ }
+ return nil
+}
+
+func (c *Channel) Read(data []byte, handles []Handle, flags uint32) (numBytes, numHandles uint32, _ error) {
+ numBytes = uint32(len(data))
+ numHandles = uint32(len(handles))
+ if status := Sys_channel_read(c.Handle().Load(), flags, bytesPtr(data), handlePtr(handles), numBytes, numHandles, &numBytes, &numHandles); status != ErrOk {
+ return 0, 0, &Error{Status: status, Text: "zx.Channel.Read"}
+ }
+ return numBytes, numHandles, nil
+}
+
+func (c *Channel) ReadEtc(data []byte, handleInfos []HandleInfo, flags uint32) (numBytes, numHandles uint32, _ error) {
+ numBytes = uint32(len(data))
+ numHandles = uint32(len(handleInfos))
+ if status := Sys_channel_read_etc(c.Handle().Load(), flags, bytesPtr(data), handleInfoPtr(handleInfos), numBytes, numHandles, &numBytes, &numHandles); status != ErrOk {
+ return 0, 0, &Error{Status: status, Text: "zx.Channel.ReadEtc"}
+ }
+ return numBytes, numHandles, nil
+}
+
+func (c *Channel) Write(data []byte, handles []Handle, flags uint32) error {
+ if status := Sys_channel_write(c.Handle().Load(), flags, bytesPtr(data), uint32(len(data)), handlePtr(handles), uint32(len(handles))); status != ErrOk {
+ return &Error{Status: status, Text: "zx.Channel.Write"}
+ }
+ return nil
+}
+
+func (c *Channel) WriteEtc(data []byte, handleDispositions []HandleDisposition, flags uint32) error {
+ if status := Sys_channel_write_etc(c.Handle().Load(), flags, bytesPtr(data), uint32(len(data)), handleDispositionPtr(handleDispositions), uint32(len(handleDispositions))); status != ErrOk {
+ return &Error{Status: status, Text: "zx.Channel.WriteEtc"}
+ }
+ return nil
+}
+
+func (c *Channel) Call(flags uint32, deadline Time, wData []byte, wHandles []Handle, rData []byte, rHandles []Handle) (actualBytes, actualHandles uint32, _ error) {
+ args := &ChannelCallArgs{
+ WriteBytes: bytesPtr(wData),
+ WriteHandles: handlePtr(wHandles),
+ ReadBytes: bytesPtr(rData),
+ ReadHandles: handlePtr(rHandles),
+ WriteNumBytes: uint32(len(wData)),
+ WriteNumHandles: uint32(len(wHandles)),
+ ReadNumBytes: uint32(len(rData)),
+ ReadNumHandles: uint32(len(rHandles)),
+ }
+
+ if status := Sys_channel_call(c.Handle().Load(), flags, deadline, args, &actualBytes, &actualHandles); status != ErrOk {
+ return 0, 0, &Error{Status: status, Text: "zx.Channel.Call"}
+ }
+ return actualBytes, actualHandles, nil
+}
+
+func (c *Channel) CallEtc(flags uint32, deadline Time, wData []byte, wHandles []HandleDisposition, rData []byte, rHandles []HandleInfo) (actualBytes, actualHandles uint32, _ error) {
+ args := &ChannelCallEtcArgs{
+ WriteBytes: bytesPtr(wData),
+ WriteHandles: handleDispositionPtr(wHandles),
+ ReadBytes: bytesPtr(rData),
+ ReadHandles: handleInfoPtr(rHandles),
+ WriteNumBytes: uint32(len(wData)),
+ WriteNumHandles: uint32(len(wHandles)),
+ ReadNumBytes: uint32(len(rData)),
+ ReadNumHandles: uint32(len(rHandles)),
+ }
+
+ if status := Sys_channel_call_etc(c.Handle().Load(), flags, deadline, args, &actualBytes, &actualHandles); status != ErrOk {
+ return 0, 0, &Error{Status: status, Text: "zx.Channel.CallEtc"}
+ }
+ return actualBytes, actualHandles, nil
+}
+
+func NewChannel(flags uint32) (Channel, Channel, error) {
+ var h0, h1 Handle
+ if status := Sys_channel_create(flags, &h0, &h1); status != ErrOk {
+ return Channel(HandleInvalid), Channel(HandleInvalid), &Error{Status: status, Text: "zx.Channel"}
+ }
+ return Channel(h0), Channel(h1), nil
+}
+
+const (
+ PortWaitAsyncOnce = iota
+ PortWaitAsyncTimestamp
+)
+
+const (
+ PortPacketTypeUser = iota
+ PortPacketTypeSignalOne
+ PortPacketTypeSignalRepeating
+)
+
+const (
+ PacketHeaderSize = uint(unsafe.Sizeof(PacketHeader{}))
+ PacketMaxSize = uint(unsafe.Sizeof(Packet{}))
+)
+
+type PortPacket interface {
+ Header() *PacketHeader
+}
+
+type PacketHeader struct {
+ Key uint64
+ Type uint32
+ Status Status
+}
+
+// Packet describes packets read from (*Port).Wait.
+type Packet struct {
+ Hdr PacketHeader
+ Bytes [32]uint8
+}
+
+func (p *Packet) Header() *PacketHeader {
+ return &p.Hdr
+}
+
+func (p *Packet) Signal() *PacketSignal {
+ return (*PacketSignal)(unsafe.Pointer(p))
+}
+
+// PacketSignal describes packets of type PortPacketTypeSignal.
+type PacketSignal struct {
+ Hdr PacketHeader
+ Trigger Signals
+ Observed Signals
+ Count uint64
+ Timestamp uint64
+ Reserved1 uint64
+}
+
+func (s *PacketSignal) Header() *PacketHeader {
+ return &s.Hdr
+}
+
+func (p *Port) Close() error {
+ return p.Handle().Close()
+}
+
+// Queue a PortPacket, which may have a varying size.
+func (p *Port) Queue(packet PortPacket) error {
+ if status := Sys_port_queue(p.Handle().Load(), (*int)(unsafe.Pointer(packet.Header()))); status != ErrOk {
+ return &Error{Status: status, Text: "zx.Port.Queue"}
+ }
+ return nil
+}
+
+// Wait for a Packet, which must be as large as the largest
+// possible packet that may be received.
+func (p *Port) Wait(packet *Packet, deadline Time) error {
+ if status := Sys_port_wait(p.Handle().Load(), deadline, (*int)(unsafe.Pointer(packet))); status != ErrOk {
+ return &Error{Status: status, Text: "zx.Port.Wait"}
+ }
+ return nil
+}
+
+func (p *Port) Cancel(source Handle, key uint64) error {
+ if status := Sys_port_cancel(p.Handle().Load(), source, key); status != ErrOk {
+ return &Error{Status: status, Text: "zx.Port.Cancel"}
+ }
+ return nil
+}
+
+func (p *Port) WaitAsync(handle Handle, key uint64, signals Signals, options uint32) error {
+ if status := Sys_object_wait_async(handle, p.Handle().Load(), key, signals, options); status != ErrOk {
+ return &Error{Status: status, Text: "fdio.Port.WaitAsync"}
+ }
+ return nil
+}
+
+func NewPort(options uint32) (Port, error) {
+ var h Handle
+ if status := Sys_port_create(options, &h); status != ErrOk {
+ return Port(HandleInvalid), &Error{Status: status, Text: "zx.Port"}
+ }
+ return Port(h), nil
+}
+
+func (vmo *VMO) CreateChild(options VMOChildOption, offset, size uint64) (VMO, error) {
+ var h Handle
+ if status := Sys_vmo_create_child(vmo.Handle().Load(), uint32(options), offset, size, &h); status != ErrOk {
+ return VMO(HandleInvalid), &Error{Status: status, Text: "zx.VMO.CreateChild"}
+ }
+ return VMO(h), nil
+}
+
+func (vmo *VMO) Read(b []byte, offset uint64) error {
+ if status := Sys_vmo_read(vmo.Handle().Load(), bytesPtr(b), offset, uint(len(b))); status != ErrOk {
+ return &Error{Status: status, Text: "zx.VMO.Read"}
+ }
+ return nil
+}
+
+func (vmo *VMO) Write(b []byte, offset uint64) error {
+ if status := Sys_vmo_write(vmo.Handle().Load(), bytesPtr(b), offset, uint(len(b))); status != ErrOk {
+ return &Error{Status: status, Text: "zx.VMO.Write"}
+ }
+ return nil
+}
+
+func (vmo *VMO) Size() (uint64, error) {
+ var size uint64
+ if status := Sys_vmo_get_size(vmo.Handle().Load(), &size); status != ErrOk {
+ return size, &Error{Status: status, Text: "zx.VMO.Size"}
+ }
+ return size, nil
+}
+
+func (vmo *VMO) SetSize(size uint64) error {
+ if status := Sys_vmo_set_size(vmo.Handle().Load(), size); status != ErrOk {
+ return &Error{Status: status, Text: "zx.VMO.SetSize"}
+ }
+ return nil
+}
+
+func (vmo *VMO) OpRange(op uint32, offset, size uint64, b []byte) error {
+ if status := Sys_vmo_op_range(vmo.Handle().Load(), op, offset, size, bytesPtr(b), uint(len(b))); status != ErrOk {
+ return &Error{Status: status, Text: "zx.VMO.OpRange"}
+ }
+ return nil
+}
+
+func (vmo *VMO) Close() error {
+ return vmo.Handle().Close()
+}
+
+func NewVMO(size uint64, options VMOOption) (VMO, error) {
+ var h Handle
+ if status := Sys_vmo_create(size, uint32(options), &h); status != ErrOk {
+ return VMO(HandleInvalid), &Error{Status: status, Text: "zx.VMO"}
+ }
+ return VMO(h), nil
+}
+
+func (v VMAR) Destroy() error {
+ if status := Sys_vmar_destroy(Handle(v)); status != ErrOk {
+ return &Error{Status: status, Text: "zx.VMAR.Destroy"}
+ }
+ return nil
+}
+
+func (v VMAR) Map(vmarOffset uint64, vmo VMO, vmoOffset, len uint64, flags VMFlag) (Vaddr, error) {
+ var addr Vaddr
+ if status := Sys_vmar_map(Handle(v), flags, uint(vmarOffset), Handle(vmo), vmoOffset, uint(len), &addr); status != ErrOk {
+ return 0, &Error{Status: status, Text: "zx.VMAR.Map"}
+ }
+ return addr, nil
+}
+
+func (v VMAR) Unmap(addr Vaddr, len uint64) error {
+ if status := Sys_vmar_unmap(Handle(v), addr, uint(len)); status != ErrOk {
+ return &Error{Status: status, Text: "zx.VMAR.Unmap"}
+ }
+ return nil
+}
+
+func (v VMAR) Protect(addr Vaddr, len uint64, flags VMFlag) error {
+ if status := Sys_vmar_protect(Handle(v), flags, addr, uint(len)); status != ErrOk {
+ return &Error{Status: status, Text: "zx.VMAR.Protect"}
+ }
+ return nil
+}
+
+func NewVMAR(parent VMAR, offset, size uint64, flags VMFlag) (VMAR, Vaddr, error) {
+ var childHandle Handle
+ var addr Vaddr
+ if status := Sys_vmar_allocate(Handle(parent), flags, uint(offset), uint(size), &childHandle, &addr); status != ErrOk {
+ return 0, 0, &Error{Status: status, Text: "zx.NewVMAR"}
+ }
+ return VMAR(childHandle), addr, nil
+}
+
+func NewLog(options uint32) Log {
+ var h Handle
+ status := Sys_debuglog_create(HandleInvalid, options, &h)
+ if status != ErrOk {
+ return Log(HandleInvalid)
+ }
+ return Log(h)
+}
+
+func (l Log) Write(b []byte) (int, error) {
+ if status := Sys_debuglog_write(Handle(l), 0, bytesPtr(b), uint(len(b))); status != ErrOk {
+ return 0, &Error{Status: status, Text: "zx.Log.Write"}
+ }
+ return len(b), nil
+}
+
+func (l Log) Read(b []byte) (int, error) {
+ if status := Sys_debuglog_read(Handle(l), 0, bytesPtr(b), uint(len(b))); status != ErrOk {
+ return 0, &Error{Status: status, Text: "zx.Log.Read"}
+ }
+ return len(b), nil
+}
+
+func (l *Log) Close() error {
+ return l.Handle().Close()
+}
+
+func RandRead(b []byte) {
+ Sys_cprng_draw(bytesPtr(b), uint(len(b)))
+}
+
+// Error is a Status with associated error text.
+// It is used as a Go error.
+type Error struct {
+ Status Status
+ Text string
+}
+
+var _ error = (*Error)(nil)
+
+func (e *Error) Error() string {
+ if e.Text == "" {
+ return "zx.Status: " + e.Status.String()
+ }
+ return e.Status.String() + ": " + e.Text
+}
+
+func (e *Error) Is(target error) bool {
+ switch target {
+ case oserror.ErrPermission:
+ return e.Status == ErrAccessDenied
+ case oserror.ErrExist:
+ return e.Status == ErrAlreadyExists
+ case oserror.ErrNotExist:
+ return e.Status == ErrNotFound
+ }
+ return false
+}
diff --git a/src/syscall/zx/hardware/ethernet/impl.go b/src/syscall/zx/hardware/ethernet/impl.go
new file mode 100644
index 0000000..36112a8
--- /dev/null
+++ b/src/syscall/zx/hardware/ethernet/impl.go
@@ -0,0 +1,716 @@
+// Copyright 2020 The Fuchsia Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// Code generated by third_party/go/regen-fidl; DO NOT EDIT.
+
+package ethernet
+
+import (
+ _zx "syscall/zx"
+ _bindings "syscall/zx/fidl"
+)
+
+const (
+ // Signal that is asserted on the RX fifo whenever the Device has a status
+ // change. This is ZX_USER_SIGNAL_0.
+ SignalStatus uint32 = 16777216
+ // Max client name length
+ MaxClientNameLen uint32 = 15
+ // For compatibility with a past revision, allow one extra byte for an optional
+ // null-terminator.
+ SetClientNameMaxLen uint32 = 16
+)
+
+var _ _bindings.Bits = Features(0)
+
+// Features distinguishes between NICs with different features.
+type Features uint32
+
+const (
+ FeaturesWlan Features = 1
+ FeaturesSynthetic Features = 2
+ FeaturesLoopback Features = 4
+ Features_Mask Features = 7
+)
+
+func (_ Features) I_BitsMask() Features {
+ return Features_Mask
+}
+
+func (_ Features) I_BitsIsStrict() bool {
+ return true
+}
+
+func (x Features) HasUnknownBits() bool {
+ return x.GetUnknownBits() != 0
+}
+
+func (x Features) GetUnknownBits() uint64 {
+ return uint64(^Features_Mask & x)
+}
+
+func (x Features) InvertBits() Features {
+ return Features_Mask & ^x
+}
+
+// HasBits validates that all flipped bits in the mask are set.
+func (x Features) HasBits(mask Features) bool {
+ return mask|x == x
+}
+
+// ClearBits ensures all flipped bits in the mask are unset.
+func (x Features) ClearBits(mask Features) Features {
+ return ^mask & x
+}
+
+func (x Features) String() string {
+ switch x {
+ case 1:
+ return "Wlan"
+ case 2:
+ return "Synthetic"
+ case 4:
+ return "Loopback"
+ }
+ return "Unknown"
+}
+
+var _ _bindings.Bits = DeviceStatus(0)
+
+type DeviceStatus uint32
+
+const (
+ DeviceStatusOnline DeviceStatus = 1
+ DeviceStatus_Mask DeviceStatus = 1
+)
+
+func (_ DeviceStatus) I_BitsMask() DeviceStatus {
+ return DeviceStatus_Mask
+}
+
+func (_ DeviceStatus) I_BitsIsStrict() bool {
+ return true
+}
+
+func (x DeviceStatus) HasUnknownBits() bool {
+ return x.GetUnknownBits() != 0
+}
+
+func (x DeviceStatus) GetUnknownBits() uint64 {
+ return uint64(^DeviceStatus_Mask & x)
+}
+
+func (x DeviceStatus) InvertBits() DeviceStatus {
+ return DeviceStatus_Mask & ^x
+}
+
+// HasBits validates that all flipped bits in the mask are set.
+func (x DeviceStatus) HasBits(mask DeviceStatus) bool {
+ return mask|x == x
+}
+
+// ClearBits ensures all flipped bits in the mask are unset.
+func (x DeviceStatus) ClearBits(mask DeviceStatus) DeviceStatus {
+ return ^mask & x
+}
+
+func (x DeviceStatus) String() string {
+ switch x {
+ case 1:
+ return "Online"
+ }
+ return "Unknown"
+}
+
+type MacAddress struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"6" fidl_alignment_v1:"1" fidl_size_v2:"6" fidl_alignment_v2:"1"`
+ Octets [6]uint8 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mMacAddress = _bindings.CreateLazyMarshaler(MacAddress{})
+
+func (msg *MacAddress) Marshaler() _bindings.Marshaler {
+ return _mMacAddress
+}
+
+type Info struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"4" fidl_size_v2:"16" fidl_alignment_v2:"4"`
+ Features Features `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Mtu uint32 `fidl_offset_v1:"4" fidl_offset_v2:"4"`
+ Mac MacAddress `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+}
+
+var _mInfo = _bindings.CreateLazyMarshaler(Info{})
+
+func (msg *Info) Marshaler() _bindings.Marshaler {
+ return _mInfo
+}
+
+type Fifos struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"4" fidl_size_v2:"16" fidl_alignment_v2:"4"`
+ Rx _zx.Handle `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_handle_subtype:"19" fidl_handle_rights:"2147483648" fidl_bounds:"0"`
+ Tx _zx.Handle `fidl_offset_v1:"4" fidl_offset_v2:"4" fidl_handle_subtype:"19" fidl_handle_rights:"2147483648" fidl_bounds:"0"`
+ RxDepth uint32 `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+ TxDepth uint32 `fidl_offset_v1:"12" fidl_offset_v2:"12"`
+}
+
+var _mFifos = _bindings.CreateLazyMarshaler(Fifos{})
+
+func (msg *Fifos) Marshaler() _bindings.Marshaler {
+ return _mFifos
+}
+
+type deviceWithCtxGetInfoResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Info Info `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdeviceWithCtxGetInfoResponse = _bindings.CreateLazyMarshaler(deviceWithCtxGetInfoResponse{})
+
+func (msg *deviceWithCtxGetInfoResponse) Marshaler() _bindings.Marshaler {
+ return _mdeviceWithCtxGetInfoResponse
+}
+
+type deviceWithCtxGetFifosResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Status int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Info *Fifos `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+}
+
+var _mdeviceWithCtxGetFifosResponse = _bindings.CreateLazyMarshaler(deviceWithCtxGetFifosResponse{})
+
+func (msg *deviceWithCtxGetFifosResponse) Marshaler() _bindings.Marshaler {
+ return _mdeviceWithCtxGetFifosResponse
+}
+
+type deviceWithCtxSetIoBufferRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ H _zx.VMO `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_handle_subtype:"3" fidl_handle_rights:"2147483648" fidl_bounds:"0"`
+}
+
+var _mdeviceWithCtxSetIoBufferRequest = _bindings.CreateLazyMarshaler(deviceWithCtxSetIoBufferRequest{})
+
+func (msg *deviceWithCtxSetIoBufferRequest) Marshaler() _bindings.Marshaler {
+ return _mdeviceWithCtxSetIoBufferRequest
+}
+
+type deviceWithCtxSetIoBufferResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Status int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdeviceWithCtxSetIoBufferResponse = _bindings.CreateLazyMarshaler(deviceWithCtxSetIoBufferResponse{})
+
+func (msg *deviceWithCtxSetIoBufferResponse) Marshaler() _bindings.Marshaler {
+ return _mdeviceWithCtxSetIoBufferResponse
+}
+
+type deviceWithCtxStartResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Status int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdeviceWithCtxStartResponse = _bindings.CreateLazyMarshaler(deviceWithCtxStartResponse{})
+
+func (msg *deviceWithCtxStartResponse) Marshaler() _bindings.Marshaler {
+ return _mdeviceWithCtxStartResponse
+}
+
+type deviceWithCtxListenStartResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Status int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdeviceWithCtxListenStartResponse = _bindings.CreateLazyMarshaler(deviceWithCtxListenStartResponse{})
+
+func (msg *deviceWithCtxListenStartResponse) Marshaler() _bindings.Marshaler {
+ return _mdeviceWithCtxListenStartResponse
+}
+
+type deviceWithCtxSetClientNameRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Name string `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"16"`
+}
+
+var _mdeviceWithCtxSetClientNameRequest = _bindings.CreateLazyMarshaler(deviceWithCtxSetClientNameRequest{})
+
+func (msg *deviceWithCtxSetClientNameRequest) Marshaler() _bindings.Marshaler {
+ return _mdeviceWithCtxSetClientNameRequest
+}
+
+type deviceWithCtxSetClientNameResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Status int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdeviceWithCtxSetClientNameResponse = _bindings.CreateLazyMarshaler(deviceWithCtxSetClientNameResponse{})
+
+func (msg *deviceWithCtxSetClientNameResponse) Marshaler() _bindings.Marshaler {
+ return _mdeviceWithCtxSetClientNameResponse
+}
+
+type deviceWithCtxGetStatusResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ DeviceStatus DeviceStatus `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdeviceWithCtxGetStatusResponse = _bindings.CreateLazyMarshaler(deviceWithCtxGetStatusResponse{})
+
+func (msg *deviceWithCtxGetStatusResponse) Marshaler() _bindings.Marshaler {
+ return _mdeviceWithCtxGetStatusResponse
+}
+
+type deviceWithCtxSetPromiscuousModeRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Enabled bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdeviceWithCtxSetPromiscuousModeRequest = _bindings.CreateLazyMarshaler(deviceWithCtxSetPromiscuousModeRequest{})
+
+func (msg *deviceWithCtxSetPromiscuousModeRequest) Marshaler() _bindings.Marshaler {
+ return _mdeviceWithCtxSetPromiscuousModeRequest
+}
+
+type deviceWithCtxSetPromiscuousModeResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Status int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdeviceWithCtxSetPromiscuousModeResponse = _bindings.CreateLazyMarshaler(deviceWithCtxSetPromiscuousModeResponse{})
+
+func (msg *deviceWithCtxSetPromiscuousModeResponse) Marshaler() _bindings.Marshaler {
+ return _mdeviceWithCtxSetPromiscuousModeResponse
+}
+
+type deviceWithCtxConfigMulticastAddMacRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Addr MacAddress `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdeviceWithCtxConfigMulticastAddMacRequest = _bindings.CreateLazyMarshaler(deviceWithCtxConfigMulticastAddMacRequest{})
+
+func (msg *deviceWithCtxConfigMulticastAddMacRequest) Marshaler() _bindings.Marshaler {
+ return _mdeviceWithCtxConfigMulticastAddMacRequest
+}
+
+type deviceWithCtxConfigMulticastAddMacResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Status int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdeviceWithCtxConfigMulticastAddMacResponse = _bindings.CreateLazyMarshaler(deviceWithCtxConfigMulticastAddMacResponse{})
+
+func (msg *deviceWithCtxConfigMulticastAddMacResponse) Marshaler() _bindings.Marshaler {
+ return _mdeviceWithCtxConfigMulticastAddMacResponse
+}
+
+type deviceWithCtxConfigMulticastDeleteMacRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Addr MacAddress `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdeviceWithCtxConfigMulticastDeleteMacRequest = _bindings.CreateLazyMarshaler(deviceWithCtxConfigMulticastDeleteMacRequest{})
+
+func (msg *deviceWithCtxConfigMulticastDeleteMacRequest) Marshaler() _bindings.Marshaler {
+ return _mdeviceWithCtxConfigMulticastDeleteMacRequest
+}
+
+type deviceWithCtxConfigMulticastDeleteMacResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Status int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdeviceWithCtxConfigMulticastDeleteMacResponse = _bindings.CreateLazyMarshaler(deviceWithCtxConfigMulticastDeleteMacResponse{})
+
+func (msg *deviceWithCtxConfigMulticastDeleteMacResponse) Marshaler() _bindings.Marshaler {
+ return _mdeviceWithCtxConfigMulticastDeleteMacResponse
+}
+
+type deviceWithCtxConfigMulticastSetPromiscuousModeRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Enabled bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdeviceWithCtxConfigMulticastSetPromiscuousModeRequest = _bindings.CreateLazyMarshaler(deviceWithCtxConfigMulticastSetPromiscuousModeRequest{})
+
+func (msg *deviceWithCtxConfigMulticastSetPromiscuousModeRequest) Marshaler() _bindings.Marshaler {
+ return _mdeviceWithCtxConfigMulticastSetPromiscuousModeRequest
+}
+
+type deviceWithCtxConfigMulticastSetPromiscuousModeResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Status int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdeviceWithCtxConfigMulticastSetPromiscuousModeResponse = _bindings.CreateLazyMarshaler(deviceWithCtxConfigMulticastSetPromiscuousModeResponse{})
+
+func (msg *deviceWithCtxConfigMulticastSetPromiscuousModeResponse) Marshaler() _bindings.Marshaler {
+ return _mdeviceWithCtxConfigMulticastSetPromiscuousModeResponse
+}
+
+type deviceWithCtxConfigMulticastTestFilterResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Status int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdeviceWithCtxConfigMulticastTestFilterResponse = _bindings.CreateLazyMarshaler(deviceWithCtxConfigMulticastTestFilterResponse{})
+
+func (msg *deviceWithCtxConfigMulticastTestFilterResponse) Marshaler() _bindings.Marshaler {
+ return _mdeviceWithCtxConfigMulticastTestFilterResponse
+}
+
+type deviceWithCtxDumpRegistersResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Status int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdeviceWithCtxDumpRegistersResponse = _bindings.CreateLazyMarshaler(deviceWithCtxDumpRegistersResponse{})
+
+func (msg *deviceWithCtxDumpRegistersResponse) Marshaler() _bindings.Marshaler {
+ return _mdeviceWithCtxDumpRegistersResponse
+}
+
+const (
+ DeviceGetInfoOrdinal uint64 = 0x7f8e9a8dda706422
+ DeviceGetFifosOrdinal uint64 = 0x57924e13bf602360
+ DeviceSetIoBufferOrdinal uint64 = 0x66af0a45e326fda8
+ DeviceStartOrdinal uint64 = 0x6e59b9bb7123be35
+ DeviceStopOrdinal uint64 = 0x4bea699d7725dffb
+ DeviceListenStartOrdinal uint64 = 0x2825d26aac1495d
+ DeviceListenStopOrdinal uint64 = 0x102cbf5639c2403a
+ DeviceSetClientNameOrdinal uint64 = 0x16226cf5bfe3a001
+ DeviceGetStatusOrdinal uint64 = 0x379a5ed530acd140
+ DeviceSetPromiscuousModeOrdinal uint64 = 0x6ae9e4516810f945
+ DeviceConfigMulticastAddMacOrdinal uint64 = 0x5cdb4b0bd52337b8
+ DeviceConfigMulticastDeleteMacOrdinal uint64 = 0x540f49129d9bfa07
+ DeviceConfigMulticastSetPromiscuousModeOrdinal uint64 = 0x53d4ba4a14dbe91a
+ DeviceConfigMulticastTestFilterOrdinal uint64 = 0x5a83a0ecc3d952a3
+ DeviceDumpRegistersOrdinal uint64 = 0x43a8fb0535f81274
+)
+
+type DeviceWithCtxInterface _bindings.ChannelProxy
+
+// Obtain information about device
+func (p *DeviceWithCtxInterface) GetInfo(ctx_ _bindings.Context) (Info, error) {
+ var req_ _bindings.Message
+ resp_ := &deviceWithCtxGetInfoResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DeviceGetInfoOrdinal, req_, resp_)
+ return resp_.Info, err_
+}
+
+// Obtain a pair of fifos for queueing tx and rx operations
+func (p *DeviceWithCtxInterface) GetFifos(ctx_ _bindings.Context) (int32, *Fifos, error) {
+ var req_ _bindings.Message
+ resp_ := &deviceWithCtxGetFifosResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DeviceGetFifosOrdinal, req_, resp_)
+ return resp_.Status, resp_.Info, err_
+}
+
+// Set the IO Buffer that will provide the data buffers for tx and rx operations
+func (p *DeviceWithCtxInterface) SetIoBuffer(ctx_ _bindings.Context, h _zx.VMO) (int32, error) {
+ req_ := &deviceWithCtxSetIoBufferRequest{
+ H: h,
+ }
+ resp_ := &deviceWithCtxSetIoBufferResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DeviceSetIoBufferOrdinal, req_, resp_)
+ return resp_.Status, err_
+}
+
+// Start transferring packets
+// Start will not succeed (ZX_ERR_BAD_STATE) until the fifos have been
+// obtained and an io buffer vmo has been registered.
+func (p *DeviceWithCtxInterface) Start(ctx_ _bindings.Context) (int32, error) {
+ var req_ _bindings.Message
+ resp_ := &deviceWithCtxStartResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DeviceStartOrdinal, req_, resp_)
+ return resp_.Status, err_
+}
+
+// Stop transferring packets
+func (p *DeviceWithCtxInterface) Stop(ctx_ _bindings.Context) error {
+ var req_ _bindings.Message
+ var resp_ _bindings.Message
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DeviceStopOrdinal, req_, resp_)
+ return err_
+}
+
+// Start listening to the packets that we're transmitting
+// as well as the packets we're receiving.
+func (p *DeviceWithCtxInterface) ListenStart(ctx_ _bindings.Context) (int32, error) {
+ var req_ _bindings.Message
+ resp_ := &deviceWithCtxListenStartResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DeviceListenStartOrdinal, req_, resp_)
+ return resp_.Status, err_
+}
+
+// Stop listening to the packets that we're transmitting.
+func (p *DeviceWithCtxInterface) ListenStop(ctx_ _bindings.Context) error {
+ var req_ _bindings.Message
+ var resp_ _bindings.Message
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DeviceListenStopOrdinal, req_, resp_)
+ return err_
+}
+
+func (p *DeviceWithCtxInterface) SetClientName(ctx_ _bindings.Context, name string) (int32, error) {
+ req_ := &deviceWithCtxSetClientNameRequest{
+ Name: name,
+ }
+ resp_ := &deviceWithCtxSetClientNameResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DeviceSetClientNameOrdinal, req_, resp_)
+ return resp_.Status, err_
+}
+
+// Obtain the device status bits
+// When these change, the signal SIGNAL_STATUS is asserted on the rx fifo.
+// When these are read, the signal is deasserted.
+func (p *DeviceWithCtxInterface) GetStatus(ctx_ _bindings.Context) (DeviceStatus, error) {
+ var req_ _bindings.Message
+ resp_ := &deviceWithCtxGetStatusResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DeviceGetStatusOrdinal, req_, resp_)
+ return resp_.DeviceStatus, err_
+}
+
+func (p *DeviceWithCtxInterface) SetPromiscuousMode(ctx_ _bindings.Context, enabled bool) (int32, error) {
+ req_ := &deviceWithCtxSetPromiscuousModeRequest{
+ Enabled: enabled,
+ }
+ resp_ := &deviceWithCtxSetPromiscuousModeResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DeviceSetPromiscuousModeOrdinal, req_, resp_)
+ return resp_.Status, err_
+}
+
+func (p *DeviceWithCtxInterface) ConfigMulticastAddMac(ctx_ _bindings.Context, addr MacAddress) (int32, error) {
+ req_ := &deviceWithCtxConfigMulticastAddMacRequest{
+ Addr: addr,
+ }
+ resp_ := &deviceWithCtxConfigMulticastAddMacResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DeviceConfigMulticastAddMacOrdinal, req_, resp_)
+ return resp_.Status, err_
+}
+
+func (p *DeviceWithCtxInterface) ConfigMulticastDeleteMac(ctx_ _bindings.Context, addr MacAddress) (int32, error) {
+ req_ := &deviceWithCtxConfigMulticastDeleteMacRequest{
+ Addr: addr,
+ }
+ resp_ := &deviceWithCtxConfigMulticastDeleteMacResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DeviceConfigMulticastDeleteMacOrdinal, req_, resp_)
+ return resp_.Status, err_
+}
+
+func (p *DeviceWithCtxInterface) ConfigMulticastSetPromiscuousMode(ctx_ _bindings.Context, enabled bool) (int32, error) {
+ req_ := &deviceWithCtxConfigMulticastSetPromiscuousModeRequest{
+ Enabled: enabled,
+ }
+ resp_ := &deviceWithCtxConfigMulticastSetPromiscuousModeResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DeviceConfigMulticastSetPromiscuousModeOrdinal, req_, resp_)
+ return resp_.Status, err_
+}
+
+func (p *DeviceWithCtxInterface) ConfigMulticastTestFilter(ctx_ _bindings.Context) (int32, error) {
+ var req_ _bindings.Message
+ resp_ := &deviceWithCtxConfigMulticastTestFilterResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DeviceConfigMulticastTestFilterOrdinal, req_, resp_)
+ return resp_.Status, err_
+}
+
+func (p *DeviceWithCtxInterface) DumpRegisters(ctx_ _bindings.Context) (int32, error) {
+ var req_ _bindings.Message
+ resp_ := &deviceWithCtxDumpRegistersResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DeviceDumpRegistersOrdinal, req_, resp_)
+ return resp_.Status, err_
+}
+
+// Operation
+//
+// Packets are transmitted by writing data into the IO buffer and writing
+// a FifoEntry referencing that data (offset + length) into the tx fifo.
+// When the driver is done accessing the data, a FifoEntry with the same
+// cookie value (opaque to the driver) will be readable from the tx fifo.
+//
+// Packets are received by writing a FifoEntry referencing an available
+// buffer (offset + length) in the IO buffer. When a packet is received,
+// a FifoEntry with the same cookie value (opaque to the driver) will be
+// readable from the rx fifo. The offset field will be the same as was
+// sent. The length field will reflect the actual size of the received
+// packet. The flags field will indicate success or a specific failure
+// condition.
+//
+// IMPORTANT: The driver *will not* buffer response messages. It is the
+// client's responsibility to ensure that there is space in the reply side
+// of each fifo for each outstanding tx or rx request. The fifo sizes
+// are returned along with the fifo handles from GetFifos().
+//
+// See //zircon/system/public/zircon/device/ethernet.h for fifo entry layout
+// and request / response message bits.
+type DeviceWithCtx interface {
+ // Obtain information about device
+ GetInfo(ctx_ _bindings.Context) (Info, error)
+ // Obtain a pair of fifos for queueing tx and rx operations
+ GetFifos(ctx_ _bindings.Context) (int32, *Fifos, error)
+ // Set the IO Buffer that will provide the data buffers for tx and rx operations
+ SetIoBuffer(ctx_ _bindings.Context, h _zx.VMO) (int32, error)
+ // Start transferring packets
+ // Start will not succeed (ZX_ERR_BAD_STATE) until the fifos have been
+ // obtained and an io buffer vmo has been registered.
+ Start(ctx_ _bindings.Context) (int32, error)
+ // Stop transferring packets
+ Stop(ctx_ _bindings.Context) error
+ // Start listening to the packets that we're transmitting
+ // as well as the packets we're receiving.
+ ListenStart(ctx_ _bindings.Context) (int32, error)
+ // Stop listening to the packets that we're transmitting.
+ ListenStop(ctx_ _bindings.Context) error
+ SetClientName(ctx_ _bindings.Context, name string) (int32, error)
+ // Obtain the device status bits
+ // When these change, the signal SIGNAL_STATUS is asserted on the rx fifo.
+ // When these are read, the signal is deasserted.
+ GetStatus(ctx_ _bindings.Context) (DeviceStatus, error)
+ SetPromiscuousMode(ctx_ _bindings.Context, enabled bool) (int32, error)
+ ConfigMulticastAddMac(ctx_ _bindings.Context, addr MacAddress) (int32, error)
+ ConfigMulticastDeleteMac(ctx_ _bindings.Context, addr MacAddress) (int32, error)
+ ConfigMulticastSetPromiscuousMode(ctx_ _bindings.Context, enabled bool) (int32, error)
+ ConfigMulticastTestFilter(ctx_ _bindings.Context) (int32, error)
+ DumpRegisters(ctx_ _bindings.Context) (int32, error)
+}
+
+type DeviceWithCtxTransitionalBase struct{}
+
+type DeviceWithCtxInterfaceRequest _bindings.InterfaceRequest
+
+func NewDeviceWithCtxInterfaceRequest() (DeviceWithCtxInterfaceRequest, *DeviceWithCtxInterface, error) {
+ req, cli, err := _bindings.NewInterfaceRequest()
+ return DeviceWithCtxInterfaceRequest(req), (*DeviceWithCtxInterface)(cli), err
+}
+
+type DeviceWithCtxStub struct {
+ Impl DeviceWithCtx
+}
+
+func (s_ *DeviceWithCtxStub) Dispatch(args_ _bindings.DispatchArgs) (_bindings.Message, bool, error) {
+ switch args_.Ordinal {
+ case DeviceGetInfoOrdinal:
+ info, err_ := s_.Impl.GetInfo(args_.Ctx)
+ out_ := deviceWithCtxGetInfoResponse{}
+ out_.Info = info
+ return &out_, true, err_
+ case DeviceGetFifosOrdinal:
+ status, info, err_ := s_.Impl.GetFifos(args_.Ctx)
+ out_ := deviceWithCtxGetFifosResponse{}
+ out_.Status = status
+ out_.Info = info
+ return &out_, true, err_
+ case DeviceSetIoBufferOrdinal:
+ in_ := deviceWithCtxSetIoBufferRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ status, err_ := s_.Impl.SetIoBuffer(args_.Ctx, in_.H)
+ out_ := deviceWithCtxSetIoBufferResponse{}
+ out_.Status = status
+ return &out_, true, err_
+ case DeviceStartOrdinal:
+ status, err_ := s_.Impl.Start(args_.Ctx)
+ out_ := deviceWithCtxStartResponse{}
+ out_.Status = status
+ return &out_, true, err_
+ case DeviceStopOrdinal:
+ err_ := s_.Impl.Stop(args_.Ctx)
+ return nil, true, err_
+ case DeviceListenStartOrdinal:
+ status, err_ := s_.Impl.ListenStart(args_.Ctx)
+ out_ := deviceWithCtxListenStartResponse{}
+ out_.Status = status
+ return &out_, true, err_
+ case DeviceListenStopOrdinal:
+ err_ := s_.Impl.ListenStop(args_.Ctx)
+ return nil, true, err_
+ case DeviceSetClientNameOrdinal:
+ in_ := deviceWithCtxSetClientNameRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ status, err_ := s_.Impl.SetClientName(args_.Ctx, in_.Name)
+ out_ := deviceWithCtxSetClientNameResponse{}
+ out_.Status = status
+ return &out_, true, err_
+ case DeviceGetStatusOrdinal:
+ deviceStatus, err_ := s_.Impl.GetStatus(args_.Ctx)
+ out_ := deviceWithCtxGetStatusResponse{}
+ out_.DeviceStatus = deviceStatus
+ return &out_, true, err_
+ case DeviceSetPromiscuousModeOrdinal:
+ in_ := deviceWithCtxSetPromiscuousModeRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ status, err_ := s_.Impl.SetPromiscuousMode(args_.Ctx, in_.Enabled)
+ out_ := deviceWithCtxSetPromiscuousModeResponse{}
+ out_.Status = status
+ return &out_, true, err_
+ case DeviceConfigMulticastAddMacOrdinal:
+ in_ := deviceWithCtxConfigMulticastAddMacRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ status, err_ := s_.Impl.ConfigMulticastAddMac(args_.Ctx, in_.Addr)
+ out_ := deviceWithCtxConfigMulticastAddMacResponse{}
+ out_.Status = status
+ return &out_, true, err_
+ case DeviceConfigMulticastDeleteMacOrdinal:
+ in_ := deviceWithCtxConfigMulticastDeleteMacRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ status, err_ := s_.Impl.ConfigMulticastDeleteMac(args_.Ctx, in_.Addr)
+ out_ := deviceWithCtxConfigMulticastDeleteMacResponse{}
+ out_.Status = status
+ return &out_, true, err_
+ case DeviceConfigMulticastSetPromiscuousModeOrdinal:
+ in_ := deviceWithCtxConfigMulticastSetPromiscuousModeRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ status, err_ := s_.Impl.ConfigMulticastSetPromiscuousMode(args_.Ctx, in_.Enabled)
+ out_ := deviceWithCtxConfigMulticastSetPromiscuousModeResponse{}
+ out_.Status = status
+ return &out_, true, err_
+ case DeviceConfigMulticastTestFilterOrdinal:
+ status, err_ := s_.Impl.ConfigMulticastTestFilter(args_.Ctx)
+ out_ := deviceWithCtxConfigMulticastTestFilterResponse{}
+ out_.Status = status
+ return &out_, true, err_
+ case DeviceDumpRegistersOrdinal:
+ status, err_ := s_.Impl.DumpRegisters(args_.Ctx)
+ out_ := deviceWithCtxDumpRegistersResponse{}
+ out_.Status = status
+ return &out_, true, err_
+ }
+ return nil, false, _bindings.ErrUnknownOrdinal
+}
+
+type DeviceEventProxy _bindings.ChannelProxy
diff --git a/src/syscall/zx/hardware/network/impl.go b/src/syscall/zx/hardware/network/impl.go
new file mode 100644
index 0000000..e7f333e
--- /dev/null
+++ b/src/syscall/zx/hardware/network/impl.go
@@ -0,0 +1,3022 @@
+// Copyright 2020 The Fuchsia Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// Code generated by third_party/go/regen-fidl; DO NOT EDIT.
+
+package network
+
+import (
+ _zx "syscall/zx"
+ _bindings "syscall/zx/fidl"
+ fuchsianet "syscall/zx/net"
+)
+
+const (
+ // Maximum numbers of supported frame types for rx or tx.
+ MaxFrameTypes uint32 = 4
+ // Maximum length of session label.
+ MaxSessionName uint32 = 64
+ // Maximum number of acceleration flags.
+ //
+ // Each descriptor has 16 bits of space for acceleration flags ([`RxFlags`] and [`TxFlags`]) thus
+ // the maximum number of reported accelerations is 16. Each descriptor reports which accelerations
+ // were applied (`RxFlags`) or are requested (`TxFlags`) by mapping indexes in the vector of
+ // supported accelerations ([`Info.rx_accel`] and ([`Info.tx_accel`]) to bits in the respective
+ // acceleration flags bitfield.
+ MaxAccelFlags uint32 = 16
+ // Blanket definition for raw frames.
+ //
+ // Devices that do not perform any sort of parsing of outbound traffic should define
+ // `FRAME_FEATURES_RAW` in the [`FrameTypeSupport`] entry.
+ FrameFeaturesRaw uint32 = 1
+ // Maximum number of chained descriptors that describe a single frame.
+ MaxDescriptorChain uint8 = 4
+ // The maximum number of status samples that can be buffered by a [`StatusWatcher`].
+ MaxStatusBuffer uint32 = 50
+ // The maximum number of ports attached to a device at a given time.
+ MaxPorts uint8 = 32
+)
+
+var _ _bindings.Enum = FrameType(0)
+
+// Types of frames.
+type FrameType uint8
+
+const (
+ FrameTypeEthernet FrameType = 1
+ FrameTypeIpv4 FrameType = 2
+ FrameTypeIpv6 FrameType = 3
+)
+
+func (_ FrameType) I_EnumValues() []FrameType {
+ return []FrameType{
+ FrameTypeEthernet,
+ FrameTypeIpv4,
+ FrameTypeIpv6,
+ }
+}
+
+func (_ FrameType) I_EnumIsStrict() bool {
+ return true
+}
+
+func (x FrameType) IsUnknown() bool {
+ switch x {
+ case 1:
+ return true
+ case 2:
+ return true
+ case 3:
+ return true
+ default:
+ return false
+ }
+}
+
+func (x FrameType) String() string {
+ switch x {
+ case 1:
+ return "Ethernet"
+ case 2:
+ return "Ipv4"
+ case 3:
+ return "Ipv6"
+ }
+ return "Unknown"
+}
+
+var _ _bindings.Enum = InfoType(0)
+
+// The type of metadata information appended to a frame.
+type InfoType uint32
+
+const (
+
+ // No extra information is available.
+ InfoTypeNoInfo InfoType = 0
+)
+
+func (_ InfoType) I_EnumValues() []InfoType {
+ return []InfoType{
+ InfoTypeNoInfo,
+ }
+}
+
+func (_ InfoType) I_EnumIsStrict() bool {
+ return true
+}
+
+func (x InfoType) IsUnknown() bool {
+ switch x {
+ case 0:
+ return true
+ default:
+ return false
+ }
+}
+
+func (x InfoType) String() string {
+ switch x {
+ case 0:
+ return "NoInfo"
+ }
+ return "Unknown"
+}
+
+var _ _bindings.Enum = RxAcceleration(0)
+
+// Available rx acceleration features.
+//
+// Features are mapped to the `RX_ACCEL_*` bits in descriptors by the available values reported in
+// [`Info.rx_accel`].
+type RxAcceleration uint8
+
+const (
+
+ // Inbound rx frame validated the Ethernet Frame Check Sequence.
+ RxAccelerationValidatedEthernetFcs RxAcceleration = 0
+
+ // Inbound rx frame validated the IPv4 checksum.
+ RxAccelerationValidatedIpv4Checksum RxAcceleration = 1
+
+ // Inbound rx frame validated the TCP checksum.
+ RxAccelerationValidatedTcpChecksum RxAcceleration = 2
+
+ // Inbound rx frame validated the UDP checksum.
+ RxAccelerationValidatedUdpChecksum RxAcceleration = 3
+)
+
+func (_ RxAcceleration) I_EnumValues() []RxAcceleration {
+ return []RxAcceleration{
+ RxAccelerationValidatedEthernetFcs,
+ RxAccelerationValidatedIpv4Checksum,
+ RxAccelerationValidatedTcpChecksum,
+ RxAccelerationValidatedUdpChecksum,
+ }
+}
+
+func (_ RxAcceleration) I_EnumIsStrict() bool {
+ return true
+}
+
+func (x RxAcceleration) IsUnknown() bool {
+ switch x {
+ case 0:
+ return true
+ case 1:
+ return true
+ case 2:
+ return true
+ case 3:
+ return true
+ default:
+ return false
+ }
+}
+
+func (x RxAcceleration) String() string {
+ switch x {
+ case 0:
+ return "ValidatedEthernetFcs"
+ case 1:
+ return "ValidatedIpv4Checksum"
+ case 2:
+ return "ValidatedTcpChecksum"
+ case 3:
+ return "ValidatedUdpChecksum"
+ }
+ return "Unknown"
+}
+
+var _ _bindings.Enum = TxAcceleration(0)
+
+// Available tx acceleration features.
+//
+// Features are mapped to the `TX_ACCEL_*` bits in descriptors by the available values reported in
+// [`Info.tx_accel`].
+type TxAcceleration uint8
+
+const (
+
+ // Request that device calculate the Ethernet Frame Check Sequence and write it in place.
+ TxAccelerationComputeEthernetFcs TxAcceleration = 0
+
+ // Request that the device calculate the IPv4 checksum and write it in place.
+ TxAccelerationComputeIpv4Checksum TxAcceleration = 1
+
+ // Request that the device calculate the TCP checksum and write it in place.
+ TxAccelerationComputeTcpChecksum TxAcceleration = 2
+
+ // Request that the device calculate the UDP checksum and write it in place.
+ TxAccelerationComputeUdpChecksum TxAcceleration = 3
+)
+
+func (_ TxAcceleration) I_EnumValues() []TxAcceleration {
+ return []TxAcceleration{
+ TxAccelerationComputeEthernetFcs,
+ TxAccelerationComputeIpv4Checksum,
+ TxAccelerationComputeTcpChecksum,
+ TxAccelerationComputeUdpChecksum,
+ }
+}
+
+func (_ TxAcceleration) I_EnumIsStrict() bool {
+ return true
+}
+
+func (x TxAcceleration) IsUnknown() bool {
+ switch x {
+ case 0:
+ return true
+ case 1:
+ return true
+ case 2:
+ return true
+ case 3:
+ return true
+ default:
+ return false
+ }
+}
+
+func (x TxAcceleration) String() string {
+ switch x {
+ case 0:
+ return "ComputeEthernetFcs"
+ case 1:
+ return "ComputeIpv4Checksum"
+ case 2:
+ return "ComputeTcpChecksum"
+ case 3:
+ return "ComputeUdpChecksum"
+ }
+ return "Unknown"
+}
+
+var _ _bindings.Enum = MacFilterMode(0)
+
+// The address filtering mode supported by MAC devices.
+type MacFilterMode uint32
+
+const (
+
+ // Device accepts only unicast frames addressed to its own unicast address, or multicast frames
+ // that are part of the multicast address filter list.
+ MacFilterModeMulticastFilter MacFilterMode = 0
+
+ // Device accepts unicast frames addressed to its own unicast address, or any multicast frames.
+ MacFilterModeMulticastPromiscuous MacFilterMode = 1
+
+ // Device accepts all frames.
+ MacFilterModePromiscuous MacFilterMode = 2
+)
+
+func (_ MacFilterMode) I_EnumValues() []MacFilterMode {
+ return []MacFilterMode{
+ MacFilterModeMulticastFilter,
+ MacFilterModeMulticastPromiscuous,
+ MacFilterModePromiscuous,
+ }
+}
+
+func (_ MacFilterMode) I_EnumIsStrict() bool {
+ return true
+}
+
+func (x MacFilterMode) IsUnknown() bool {
+ switch x {
+ case 0:
+ return true
+ case 1:
+ return true
+ case 2:
+ return true
+ default:
+ return false
+ }
+}
+
+func (x MacFilterMode) String() string {
+ switch x {
+ case 0:
+ return "MulticastFilter"
+ case 1:
+ return "MulticastPromiscuous"
+ case 2:
+ return "Promiscuous"
+ }
+ return "Unknown"
+}
+
+var _ _bindings.Enum = DeviceClass(0)
+
+// Network device class.
+type DeviceClass uint16
+
+const (
+ DeviceClassUnknown DeviceClass = 0
+ DeviceClassEthernet DeviceClass = 1
+ DeviceClassWlan DeviceClass = 2
+ DeviceClassPpp DeviceClass = 3
+ DeviceClassBridge DeviceClass = 4
+)
+
+func (_ DeviceClass) I_EnumValues() []DeviceClass {
+ return []DeviceClass{
+ DeviceClassUnknown,
+ DeviceClassEthernet,
+ DeviceClassWlan,
+ DeviceClassPpp,
+ DeviceClassBridge,
+ }
+}
+
+func (_ DeviceClass) I_EnumIsStrict() bool {
+ return true
+}
+
+func (x DeviceClass) IsUnknown() bool {
+ switch x {
+ case 0:
+ return true
+ case 1:
+ return true
+ case 2:
+ return true
+ case 3:
+ return true
+ case 4:
+ return true
+ default:
+ return false
+ }
+}
+
+func (x DeviceClass) String() string {
+ switch x {
+ case 0:
+ return "Unknown"
+ case 1:
+ return "Ethernet"
+ case 2:
+ return "Wlan"
+ case 3:
+ return "Ppp"
+ case 4:
+ return "Bridge"
+ }
+ return "Unknown"
+}
+
+var _ _bindings.Bits = EthernetFeatures(0)
+
+// Ethernet frame sub-types and features.
+type EthernetFeatures uint32
+
+const (
+ EthernetFeaturesRaw EthernetFeatures = 1
+ EthernetFeaturesEthernetIi EthernetFeatures = 2
+ EthernetFeaturesE8021Q EthernetFeatures = 4
+ EthernetFeaturesE8021QInQ EthernetFeatures = 8
+ EthernetFeaturesE8023LlcSnap EthernetFeatures = 16
+ EthernetFeatures_Mask EthernetFeatures = 31
+)
+
+func (_ EthernetFeatures) I_BitsMask() EthernetFeatures {
+ return EthernetFeatures_Mask
+}
+
+func (_ EthernetFeatures) I_BitsIsStrict() bool {
+ return true
+}
+
+func (x EthernetFeatures) HasUnknownBits() bool {
+ return x.GetUnknownBits() != 0
+}
+
+func (x EthernetFeatures) GetUnknownBits() uint64 {
+ return uint64(^EthernetFeatures_Mask & x)
+}
+
+func (x EthernetFeatures) InvertBits() EthernetFeatures {
+ return EthernetFeatures_Mask & ^x
+}
+
+// HasBits validates that all flipped bits in the mask are set.
+func (x EthernetFeatures) HasBits(mask EthernetFeatures) bool {
+ return mask|x == x
+}
+
+// ClearBits ensures all flipped bits in the mask are unset.
+func (x EthernetFeatures) ClearBits(mask EthernetFeatures) EthernetFeatures {
+ return ^mask & x
+}
+
+func (x EthernetFeatures) String() string {
+ switch x {
+ case 1:
+ return "Raw"
+ case 2:
+ return "EthernetIi"
+ case 4:
+ return "E8021Q"
+ case 8:
+ return "E8021QInQ"
+ case 16:
+ return "E8023LlcSnap"
+ }
+ return "Unknown"
+}
+
+var _ _bindings.Bits = RxFlags(0)
+
+// Flags set by a Device when handing a buffer to a client on the rx path.
+//
+// Set by devices on the `inbound_flags` field of an rx descriptor.
+type RxFlags uint32
+
+const (
+ RxFlagsRxAccel0 RxFlags = 1
+ RxFlagsRxAccel1 RxFlags = 2
+ RxFlagsRxAccel2 RxFlags = 4
+ RxFlagsRxAccel3 RxFlags = 8
+ RxFlagsRxAccel4 RxFlags = 16
+ RxFlagsRxAccel5 RxFlags = 32
+ RxFlagsRxAccel6 RxFlags = 64
+ RxFlagsRxAccel7 RxFlags = 128
+ RxFlagsRxAccel8 RxFlags = 256
+ RxFlagsRxAccel9 RxFlags = 512
+ RxFlagsRxAccel10 RxFlags = 1024
+ RxFlagsRxAccel11 RxFlags = 2048
+ RxFlagsRxAccel12 RxFlags = 4096
+ RxFlagsRxAccel13 RxFlags = 8192
+ RxFlagsRxAccel14 RxFlags = 16384
+ RxFlagsRxAccel15 RxFlags = 32768
+ RxFlagsRxOverrun RxFlags = 536870912
+ RxFlagsRxValidationError RxFlags = 1073741824
+ RxFlagsRxEchoedTx RxFlags = 2147483648
+ RxFlags_Mask RxFlags = 3758161919
+)
+
+func (_ RxFlags) I_BitsMask() RxFlags {
+ return RxFlags_Mask
+}
+
+func (_ RxFlags) I_BitsIsStrict() bool {
+ return true
+}
+
+func (x RxFlags) HasUnknownBits() bool {
+ return x.GetUnknownBits() != 0
+}
+
+func (x RxFlags) GetUnknownBits() uint64 {
+ return uint64(^RxFlags_Mask & x)
+}
+
+func (x RxFlags) InvertBits() RxFlags {
+ return RxFlags_Mask & ^x
+}
+
+// HasBits validates that all flipped bits in the mask are set.
+func (x RxFlags) HasBits(mask RxFlags) bool {
+ return mask|x == x
+}
+
+// ClearBits ensures all flipped bits in the mask are unset.
+func (x RxFlags) ClearBits(mask RxFlags) RxFlags {
+ return ^mask & x
+}
+
+func (x RxFlags) String() string {
+ switch x {
+ case 1:
+ return "RxAccel0"
+ case 2:
+ return "RxAccel1"
+ case 4:
+ return "RxAccel2"
+ case 8:
+ return "RxAccel3"
+ case 16:
+ return "RxAccel4"
+ case 32:
+ return "RxAccel5"
+ case 64:
+ return "RxAccel6"
+ case 128:
+ return "RxAccel7"
+ case 256:
+ return "RxAccel8"
+ case 512:
+ return "RxAccel9"
+ case 1024:
+ return "RxAccel10"
+ case 2048:
+ return "RxAccel11"
+ case 4096:
+ return "RxAccel12"
+ case 8192:
+ return "RxAccel13"
+ case 16384:
+ return "RxAccel14"
+ case 32768:
+ return "RxAccel15"
+ case 536870912:
+ return "RxOverrun"
+ case 1073741824:
+ return "RxValidationError"
+ case 2147483648:
+ return "RxEchoedTx"
+ }
+ return "Unknown"
+}
+
+var _ _bindings.Bits = TxFlags(0)
+
+// Flags set by a Client when handing a buffer to a client on the tx path.
+//
+// Set by Clients on the `inbound_flags` field of a tx descriptor.
+type TxFlags uint32
+
+const (
+ TxFlagsTxAccel0 TxFlags = 1
+ TxFlagsTxAccel1 TxFlags = 2
+ TxFlagsTxAccel2 TxFlags = 4
+ TxFlagsTxAccel3 TxFlags = 8
+ TxFlagsTxAccel4 TxFlags = 16
+ TxFlagsTxAccel5 TxFlags = 32
+ TxFlagsTxAccel6 TxFlags = 64
+ TxFlagsTxAccel7 TxFlags = 128
+ TxFlagsTxAccel8 TxFlags = 256
+ TxFlagsTxAccel9 TxFlags = 512
+ TxFlagsTxAccel10 TxFlags = 1024
+ TxFlagsTxAccel11 TxFlags = 2048
+ TxFlagsTxAccel12 TxFlags = 4096
+ TxFlagsTxAccel13 TxFlags = 8192
+ TxFlagsTxAccel14 TxFlags = 16384
+ TxFlagsTxAccel15 TxFlags = 32768
+ TxFlags_Mask TxFlags = 65535
+)
+
+func (_ TxFlags) I_BitsMask() TxFlags {
+ return TxFlags_Mask
+}
+
+func (_ TxFlags) I_BitsIsStrict() bool {
+ return true
+}
+
+func (x TxFlags) HasUnknownBits() bool {
+ return x.GetUnknownBits() != 0
+}
+
+func (x TxFlags) GetUnknownBits() uint64 {
+ return uint64(^TxFlags_Mask & x)
+}
+
+func (x TxFlags) InvertBits() TxFlags {
+ return TxFlags_Mask & ^x
+}
+
+// HasBits validates that all flipped bits in the mask are set.
+func (x TxFlags) HasBits(mask TxFlags) bool {
+ return mask|x == x
+}
+
+// ClearBits ensures all flipped bits in the mask are unset.
+func (x TxFlags) ClearBits(mask TxFlags) TxFlags {
+ return ^mask & x
+}
+
+func (x TxFlags) String() string {
+ switch x {
+ case 1:
+ return "TxAccel0"
+ case 2:
+ return "TxAccel1"
+ case 4:
+ return "TxAccel2"
+ case 8:
+ return "TxAccel3"
+ case 16:
+ return "TxAccel4"
+ case 32:
+ return "TxAccel5"
+ case 64:
+ return "TxAccel6"
+ case 128:
+ return "TxAccel7"
+ case 256:
+ return "TxAccel8"
+ case 512:
+ return "TxAccel9"
+ case 1024:
+ return "TxAccel10"
+ case 2048:
+ return "TxAccel11"
+ case 4096:
+ return "TxAccel12"
+ case 8192:
+ return "TxAccel13"
+ case 16384:
+ return "TxAccel14"
+ case 32768:
+ return "TxAccel15"
+ }
+ return "Unknown"
+}
+
+var _ _bindings.Bits = TxReturnFlags(0)
+
+// Flags set by a Device when returning a tx buffer back to a client.
+//
+// Set by Devices on the `return_flags` field of a tx descriptor.
+type TxReturnFlags uint32
+
+const (
+ TxReturnFlagsTxRetNotSupported TxReturnFlags = 1
+ TxReturnFlagsTxRetOutOfResources TxReturnFlags = 2
+ TxReturnFlagsTxRetNotAvailable TxReturnFlags = 4
+ TxReturnFlagsTxRetError TxReturnFlags = 2147483648
+ TxReturnFlags_Mask TxReturnFlags = 2147483655
+)
+
+func (_ TxReturnFlags) I_BitsMask() TxReturnFlags {
+ return TxReturnFlags_Mask
+}
+
+func (_ TxReturnFlags) I_BitsIsStrict() bool {
+ return true
+}
+
+func (x TxReturnFlags) HasUnknownBits() bool {
+ return x.GetUnknownBits() != 0
+}
+
+func (x TxReturnFlags) GetUnknownBits() uint64 {
+ return uint64(^TxReturnFlags_Mask & x)
+}
+
+func (x TxReturnFlags) InvertBits() TxReturnFlags {
+ return TxReturnFlags_Mask & ^x
+}
+
+// HasBits validates that all flipped bits in the mask are set.
+func (x TxReturnFlags) HasBits(mask TxReturnFlags) bool {
+ return mask|x == x
+}
+
+// ClearBits ensures all flipped bits in the mask are unset.
+func (x TxReturnFlags) ClearBits(mask TxReturnFlags) TxReturnFlags {
+ return ^mask & x
+}
+
+func (x TxReturnFlags) String() string {
+ switch x {
+ case 1:
+ return "TxRetNotSupported"
+ case 2:
+ return "TxRetOutOfResources"
+ case 4:
+ return "TxRetNotAvailable"
+ case 2147483648:
+ return "TxRetError"
+ }
+ return "Unknown"
+}
+
+var _ _bindings.Bits = StatusFlags(0)
+
+// Port status bits, reported in [`PortStatus.flags`].
+type StatusFlags uint32
+
+const (
+ StatusFlagsOnline StatusFlags = 1
+ StatusFlags_Mask StatusFlags = 1
+)
+
+func (_ StatusFlags) I_BitsMask() StatusFlags {
+ return StatusFlags_Mask
+}
+
+func (_ StatusFlags) I_BitsIsStrict() bool {
+ return true
+}
+
+func (x StatusFlags) HasUnknownBits() bool {
+ return x.GetUnknownBits() != 0
+}
+
+func (x StatusFlags) GetUnknownBits() uint64 {
+ return uint64(^StatusFlags_Mask & x)
+}
+
+func (x StatusFlags) InvertBits() StatusFlags {
+ return StatusFlags_Mask & ^x
+}
+
+// HasBits validates that all flipped bits in the mask are set.
+func (x StatusFlags) HasBits(mask StatusFlags) bool {
+ return mask|x == x
+}
+
+// ClearBits ensures all flipped bits in the mask are unset.
+func (x StatusFlags) ClearBits(mask StatusFlags) StatusFlags {
+ return ^mask & x
+}
+
+func (x StatusFlags) String() string {
+ switch x {
+ case 1:
+ return "Online"
+ }
+ return "Unknown"
+}
+
+var _ _bindings.Bits = SessionFlags(0)
+
+// Additional session options.
+type SessionFlags uint16
+
+const (
+ SessionFlagsPrimary SessionFlags = 1
+ SessionFlagsListenTx SessionFlags = 2
+ SessionFlagsReportInvalidRx SessionFlags = 4
+ SessionFlags_Mask SessionFlags = 7
+)
+
+func (_ SessionFlags) I_BitsMask() SessionFlags {
+ return SessionFlags_Mask
+}
+
+func (_ SessionFlags) I_BitsIsStrict() bool {
+ return true
+}
+
+func (x SessionFlags) HasUnknownBits() bool {
+ return x.GetUnknownBits() != 0
+}
+
+func (x SessionFlags) GetUnknownBits() uint64 {
+ return uint64(^SessionFlags_Mask & x)
+}
+
+func (x SessionFlags) InvertBits() SessionFlags {
+ return SessionFlags_Mask & ^x
+}
+
+// HasBits validates that all flipped bits in the mask are set.
+func (x SessionFlags) HasBits(mask SessionFlags) bool {
+ return mask|x == x
+}
+
+// ClearBits ensures all flipped bits in the mask are unset.
+func (x SessionFlags) ClearBits(mask SessionFlags) SessionFlags {
+ return ^mask & x
+}
+
+func (x SessionFlags) String() string {
+ switch x {
+ case 1:
+ return "Primary"
+ case 2:
+ return "ListenTx"
+ case 4:
+ return "ReportInvalidRx"
+ }
+ return "Unknown"
+}
+
+type DeviceOpenSessionResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"12" fidl_alignment_v1:"4" fidl_size_v2:"12" fidl_alignment_v2:"4"`
+ Session SessionWithCtxInterface `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_handle_subtype:"4"`
+ Fifos Fifos `fidl_offset_v1:"4" fidl_offset_v2:"4"`
+}
+
+var _mDeviceOpenSessionResponse = _bindings.CreateLazyMarshaler(DeviceOpenSessionResponse{})
+
+func (msg *DeviceOpenSessionResponse) Marshaler() _bindings.Marshaler {
+ return _mDeviceOpenSessionResponse
+}
+
+type Empty struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mEmpty = _bindings.CreateLazyMarshaler(Empty{})
+
+func (msg *Empty) Marshaler() _bindings.Marshaler {
+ return _mEmpty
+}
+
+// Specifies a frame type and features and supported flags associated with that type.
+//
+// This is used by clients to read the supported frames on the tx path for a given
+// Network Device.
+//
+// Some Network Devices may parse outgoing frames to perform frame transformation or specific
+// hardware support. Each frame type has an associated [`FrameTypeSupport.features`] bits
+// enumeration that lists FrameType-specific features that may or may not be supported. Devices
+// that do not perform parsing are encouraged to just use the [`FRAME_FEATURES_RAW`] bit in
+// `features`, which informs the client that all frame features are allowed.
+type FrameTypeSupport struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"12" fidl_alignment_v1:"4" fidl_size_v2:"12" fidl_alignment_v2:"4"`
+ // The frame type this support entry refers to.
+ Type FrameType `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ // The frame type-specific features supported.
+ Features uint32 `fidl_offset_v1:"4" fidl_offset_v2:"4"`
+ // The flags supported for the given frame type.
+ SupportedFlags TxFlags `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+}
+
+var _mFrameTypeSupport = _bindings.CreateLazyMarshaler(FrameTypeSupport{})
+
+func (msg *FrameTypeSupport) Marshaler() _bindings.Marshaler {
+ return _mFrameTypeSupport
+}
+
+type SessionAttachResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mSessionAttachResponse = _bindings.CreateLazyMarshaler(SessionAttachResponse{})
+
+func (msg *SessionAttachResponse) Marshaler() _bindings.Marshaler {
+ return _mSessionAttachResponse
+}
+
+type SessionDetachResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mSessionDetachResponse = _bindings.CreateLazyMarshaler(SessionDetachResponse{})
+
+func (msg *SessionDetachResponse) Marshaler() _bindings.Marshaler {
+ return _mSessionDetachResponse
+}
+
+// Data-plane FIFOs.
+type Fifos struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"4" fidl_size_v2:"8" fidl_alignment_v2:"4"`
+ // Handle for the rx FIFO.
+ //
+ // Clients must write 16-bit descriptor indexes to this FIFO to be able to receive
+ // frames.
+ Rx _zx.Handle `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_handle_subtype:"19" fidl_handle_rights:"2147483648" fidl_bounds:"0"`
+ // Handle for the tx FIFO.
+ //
+ // Clients write 16-bit descriptor indexes to this FIFO to enqueue outgoing frames.
+ Tx _zx.Handle `fidl_offset_v1:"4" fidl_offset_v2:"4" fidl_handle_subtype:"19" fidl_handle_rights:"2147483648" fidl_bounds:"0"`
+}
+
+var _mFifos = _bindings.CreateLazyMarshaler(Fifos{})
+
+func (msg *Fifos) Marshaler() _bindings.Marshaler {
+ return _mFifos
+}
+
+type deviceWithCtxGetInfoResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Info DeviceInfo `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdeviceWithCtxGetInfoResponse = _bindings.CreateLazyMarshaler(deviceWithCtxGetInfoResponse{})
+
+func (msg *deviceWithCtxGetInfoResponse) Marshaler() _bindings.Marshaler {
+ return _mdeviceWithCtxGetInfoResponse
+}
+
+type deviceWithCtxOpenSessionRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"32" fidl_alignment_v1:"8" fidl_size_v2:"32" fidl_alignment_v2:"8"`
+ SessionName string `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"64"`
+ SessionInfo SessionInfo `fidl_offset_v1:"16" fidl_offset_v2:"16"`
+}
+
+var _mdeviceWithCtxOpenSessionRequest = _bindings.CreateLazyMarshaler(deviceWithCtxOpenSessionRequest{})
+
+func (msg *deviceWithCtxOpenSessionRequest) Marshaler() _bindings.Marshaler {
+ return _mdeviceWithCtxOpenSessionRequest
+}
+
+type deviceWithCtxOpenSessionResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result DeviceOpenSessionResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdeviceWithCtxOpenSessionResponse = _bindings.CreateLazyMarshaler(deviceWithCtxOpenSessionResponse{})
+
+func (msg *deviceWithCtxOpenSessionResponse) Marshaler() _bindings.Marshaler {
+ return _mdeviceWithCtxOpenSessionResponse
+}
+
+type deviceWithCtxGetPortRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Id uint8 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Port PortWithCtxInterfaceRequest `fidl_offset_v1:"4" fidl_offset_v2:"4" fidl_handle_subtype:"4" fidl_bounds:"0"`
+}
+
+var _mdeviceWithCtxGetPortRequest = _bindings.CreateLazyMarshaler(deviceWithCtxGetPortRequest{})
+
+func (msg *deviceWithCtxGetPortRequest) Marshaler() _bindings.Marshaler {
+ return _mdeviceWithCtxGetPortRequest
+}
+
+type deviceWithCtxGetPortWatcherRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Watcher PortWatcherWithCtxInterfaceRequest `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_handle_subtype:"4" fidl_bounds:"0"`
+}
+
+var _mdeviceWithCtxGetPortWatcherRequest = _bindings.CreateLazyMarshaler(deviceWithCtxGetPortWatcherRequest{})
+
+func (msg *deviceWithCtxGetPortWatcherRequest) Marshaler() _bindings.Marshaler {
+ return _mdeviceWithCtxGetPortWatcherRequest
+}
+
+type portWatcherWithCtxWatchResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Event DevicePortEvent `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mportWatcherWithCtxWatchResponse = _bindings.CreateLazyMarshaler(portWatcherWithCtxWatchResponse{})
+
+func (msg *portWatcherWithCtxWatchResponse) Marshaler() _bindings.Marshaler {
+ return _mportWatcherWithCtxWatchResponse
+}
+
+type deviceInstanceWithCtxGetDeviceRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Device DeviceWithCtxInterfaceRequest `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_handle_subtype:"4" fidl_bounds:"0"`
+}
+
+var _mdeviceInstanceWithCtxGetDeviceRequest = _bindings.CreateLazyMarshaler(deviceInstanceWithCtxGetDeviceRequest{})
+
+func (msg *deviceInstanceWithCtxGetDeviceRequest) Marshaler() _bindings.Marshaler {
+ return _mdeviceInstanceWithCtxGetDeviceRequest
+}
+
+type macAddressingWithCtxGetUnicastAddressResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Address fuchsianet.MacAddress `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mmacAddressingWithCtxGetUnicastAddressResponse = _bindings.CreateLazyMarshaler(macAddressingWithCtxGetUnicastAddressResponse{})
+
+func (msg *macAddressingWithCtxGetUnicastAddressResponse) Marshaler() _bindings.Marshaler {
+ return _mmacAddressingWithCtxGetUnicastAddressResponse
+}
+
+type macAddressingWithCtxSetModeRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Mode MacFilterMode `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mmacAddressingWithCtxSetModeRequest = _bindings.CreateLazyMarshaler(macAddressingWithCtxSetModeRequest{})
+
+func (msg *macAddressingWithCtxSetModeRequest) Marshaler() _bindings.Marshaler {
+ return _mmacAddressingWithCtxSetModeRequest
+}
+
+type macAddressingWithCtxSetModeResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Status int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mmacAddressingWithCtxSetModeResponse = _bindings.CreateLazyMarshaler(macAddressingWithCtxSetModeResponse{})
+
+func (msg *macAddressingWithCtxSetModeResponse) Marshaler() _bindings.Marshaler {
+ return _mmacAddressingWithCtxSetModeResponse
+}
+
+type macAddressingWithCtxAddMulticastAddressRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Address fuchsianet.MacAddress `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mmacAddressingWithCtxAddMulticastAddressRequest = _bindings.CreateLazyMarshaler(macAddressingWithCtxAddMulticastAddressRequest{})
+
+func (msg *macAddressingWithCtxAddMulticastAddressRequest) Marshaler() _bindings.Marshaler {
+ return _mmacAddressingWithCtxAddMulticastAddressRequest
+}
+
+type macAddressingWithCtxAddMulticastAddressResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Status int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mmacAddressingWithCtxAddMulticastAddressResponse = _bindings.CreateLazyMarshaler(macAddressingWithCtxAddMulticastAddressResponse{})
+
+func (msg *macAddressingWithCtxAddMulticastAddressResponse) Marshaler() _bindings.Marshaler {
+ return _mmacAddressingWithCtxAddMulticastAddressResponse
+}
+
+type macAddressingWithCtxRemoveMulticastAddressRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Address fuchsianet.MacAddress `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mmacAddressingWithCtxRemoveMulticastAddressRequest = _bindings.CreateLazyMarshaler(macAddressingWithCtxRemoveMulticastAddressRequest{})
+
+func (msg *macAddressingWithCtxRemoveMulticastAddressRequest) Marshaler() _bindings.Marshaler {
+ return _mmacAddressingWithCtxRemoveMulticastAddressRequest
+}
+
+type macAddressingWithCtxRemoveMulticastAddressResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Status int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mmacAddressingWithCtxRemoveMulticastAddressResponse = _bindings.CreateLazyMarshaler(macAddressingWithCtxRemoveMulticastAddressResponse{})
+
+func (msg *macAddressingWithCtxRemoveMulticastAddressResponse) Marshaler() _bindings.Marshaler {
+ return _mmacAddressingWithCtxRemoveMulticastAddressResponse
+}
+
+type statusWatcherWithCtxWatchStatusResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ PortStatus PortStatus `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstatusWatcherWithCtxWatchStatusResponse = _bindings.CreateLazyMarshaler(statusWatcherWithCtxWatchStatusResponse{})
+
+func (msg *statusWatcherWithCtxWatchStatusResponse) Marshaler() _bindings.Marshaler {
+ return _mstatusWatcherWithCtxWatchStatusResponse
+}
+
+type portWithCtxGetInfoResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Info PortInfo `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mportWithCtxGetInfoResponse = _bindings.CreateLazyMarshaler(portWithCtxGetInfoResponse{})
+
+func (msg *portWithCtxGetInfoResponse) Marshaler() _bindings.Marshaler {
+ return _mportWithCtxGetInfoResponse
+}
+
+type portWithCtxGetStatusResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Status PortStatus `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mportWithCtxGetStatusResponse = _bindings.CreateLazyMarshaler(portWithCtxGetStatusResponse{})
+
+func (msg *portWithCtxGetStatusResponse) Marshaler() _bindings.Marshaler {
+ return _mportWithCtxGetStatusResponse
+}
+
+type portWithCtxGetStatusWatcherRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Watcher StatusWatcherWithCtxInterfaceRequest `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_handle_subtype:"4" fidl_bounds:"0"`
+ Buffer uint32 `fidl_offset_v1:"4" fidl_offset_v2:"4"`
+}
+
+var _mportWithCtxGetStatusWatcherRequest = _bindings.CreateLazyMarshaler(portWithCtxGetStatusWatcherRequest{})
+
+func (msg *portWithCtxGetStatusWatcherRequest) Marshaler() _bindings.Marshaler {
+ return _mportWithCtxGetStatusWatcherRequest
+}
+
+type portWithCtxGetMacRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Mac MacAddressingWithCtxInterfaceRequest `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_handle_subtype:"4" fidl_bounds:"0"`
+}
+
+var _mportWithCtxGetMacRequest = _bindings.CreateLazyMarshaler(portWithCtxGetMacRequest{})
+
+func (msg *portWithCtxGetMacRequest) Marshaler() _bindings.Marshaler {
+ return _mportWithCtxGetMacRequest
+}
+
+type sessionWithCtxAttachRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"24" fidl_alignment_v2:"8"`
+ Port uint8 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ RxFrames []FrameType `fidl_offset_v1:"8" fidl_offset_v2:"8" fidl_bounds:"4"`
+}
+
+var _msessionWithCtxAttachRequest = _bindings.CreateLazyMarshaler(sessionWithCtxAttachRequest{})
+
+func (msg *sessionWithCtxAttachRequest) Marshaler() _bindings.Marshaler {
+ return _msessionWithCtxAttachRequest
+}
+
+type sessionWithCtxAttachResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result SessionAttachResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _msessionWithCtxAttachResponse = _bindings.CreateLazyMarshaler(sessionWithCtxAttachResponse{})
+
+func (msg *sessionWithCtxAttachResponse) Marshaler() _bindings.Marshaler {
+ return _msessionWithCtxAttachResponse
+}
+
+type sessionWithCtxDetachRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Port uint8 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _msessionWithCtxDetachRequest = _bindings.CreateLazyMarshaler(sessionWithCtxDetachRequest{})
+
+func (msg *sessionWithCtxDetachRequest) Marshaler() _bindings.Marshaler {
+ return _msessionWithCtxDetachRequest
+}
+
+type sessionWithCtxDetachResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result SessionDetachResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _msessionWithCtxDetachResponse = _bindings.CreateLazyMarshaler(sessionWithCtxDetachResponse{})
+
+func (msg *sessionWithCtxDetachResponse) Marshaler() _bindings.Marshaler {
+ return _msessionWithCtxDetachResponse
+}
+
+type I_deviceOpenSessionResultTag uint64
+
+const (
+ DeviceOpenSessionResultResponse = 1 // 0x00000001
+ DeviceOpenSessionResultErr = 2 // 0x00000002
+)
+
+type DeviceOpenSessionResult struct {
+ I_deviceOpenSessionResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"true"`
+ Response DeviceOpenSessionResponse `fidl_ordinal:"1"`
+ Err int32 `fidl_ordinal:"2"`
+}
+
+func (_m *DeviceOpenSessionResult) reset() {
+ switch _m.I_deviceOpenSessionResultTag {
+ case 1:
+ var _zeroed DeviceOpenSessionResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed int32
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *DeviceOpenSessionResult) Which() I_deviceOpenSessionResultTag {
+ return _m.I_deviceOpenSessionResultTag
+}
+
+func (_m *DeviceOpenSessionResult) Ordinal() uint64 {
+ return uint64(_m.I_deviceOpenSessionResultTag)
+}
+
+func (_m *DeviceOpenSessionResult) SetResponse(response DeviceOpenSessionResponse) {
+ _m.reset()
+ _m.I_deviceOpenSessionResultTag = DeviceOpenSessionResultResponse
+ _m.Response = response
+}
+
+func DeviceOpenSessionResultWithResponse(response DeviceOpenSessionResponse) DeviceOpenSessionResult {
+ var _u DeviceOpenSessionResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *DeviceOpenSessionResult) SetErr(err int32) {
+ _m.reset()
+ _m.I_deviceOpenSessionResultTag = DeviceOpenSessionResultErr
+ _m.Err = err
+}
+
+func DeviceOpenSessionResultWithErr(err int32) DeviceOpenSessionResult {
+ var _u DeviceOpenSessionResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_devicePortEventTag uint64
+
+const (
+ DevicePortEventExisting = 1 // 0x00000001
+ DevicePortEventAdded = 2 // 0x00000002
+ DevicePortEventRemoved = 3 // 0x00000003
+ DevicePortEventIdle = 4 // 0x00000004
+)
+
+// Port creation and destruction events.
+type DevicePortEvent struct {
+ I_devicePortEventTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ // Port existed when watcher was created.
+ Existing uint8 `fidl_ordinal:"1"`
+ // New port was added to device.
+ Added uint8 `fidl_ordinal:"2"`
+ // Port was removed from the device.
+ Removed uint8 `fidl_ordinal:"3"`
+ // Exhausted list of existing ports.
+ Idle Empty `fidl_ordinal:"4"`
+}
+
+func (_m *DevicePortEvent) reset() {
+ switch _m.I_devicePortEventTag {
+ case 1:
+ var _zeroed uint8
+ _m.Existing = _zeroed
+ case 2:
+ var _zeroed uint8
+ _m.Added = _zeroed
+ case 3:
+ var _zeroed uint8
+ _m.Removed = _zeroed
+ case 4:
+ var _zeroed Empty
+ _m.Idle = _zeroed
+ }
+}
+
+func (_m *DevicePortEvent) Which() I_devicePortEventTag {
+ return _m.I_devicePortEventTag
+}
+
+func (_m *DevicePortEvent) Ordinal() uint64 {
+ return uint64(_m.I_devicePortEventTag)
+}
+
+func (_m *DevicePortEvent) SetExisting(existing uint8) {
+ _m.reset()
+ _m.I_devicePortEventTag = DevicePortEventExisting
+ _m.Existing = existing
+}
+
+func DevicePortEventWithExisting(existing uint8) DevicePortEvent {
+ var _u DevicePortEvent
+ _u.SetExisting(existing)
+ return _u
+}
+
+func (_m *DevicePortEvent) SetAdded(added uint8) {
+ _m.reset()
+ _m.I_devicePortEventTag = DevicePortEventAdded
+ _m.Added = added
+}
+
+func DevicePortEventWithAdded(added uint8) DevicePortEvent {
+ var _u DevicePortEvent
+ _u.SetAdded(added)
+ return _u
+}
+
+func (_m *DevicePortEvent) SetRemoved(removed uint8) {
+ _m.reset()
+ _m.I_devicePortEventTag = DevicePortEventRemoved
+ _m.Removed = removed
+}
+
+func DevicePortEventWithRemoved(removed uint8) DevicePortEvent {
+ var _u DevicePortEvent
+ _u.SetRemoved(removed)
+ return _u
+}
+
+func (_m *DevicePortEvent) SetIdle(idle Empty) {
+ _m.reset()
+ _m.I_devicePortEventTag = DevicePortEventIdle
+ _m.Idle = idle
+}
+
+func DevicePortEventWithIdle(idle Empty) DevicePortEvent {
+ var _u DevicePortEvent
+ _u.SetIdle(idle)
+ return _u
+}
+
+type I_sessionAttachResultTag uint64
+
+const (
+ SessionAttachResultResponse = 1 // 0x00000001
+ SessionAttachResultErr = 2 // 0x00000002
+)
+
+type SessionAttachResult struct {
+ I_sessionAttachResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response SessionAttachResponse `fidl_ordinal:"1"`
+ Err int32 `fidl_ordinal:"2"`
+}
+
+func (_m *SessionAttachResult) reset() {
+ switch _m.I_sessionAttachResultTag {
+ case 1:
+ var _zeroed SessionAttachResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed int32
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *SessionAttachResult) Which() I_sessionAttachResultTag {
+ return _m.I_sessionAttachResultTag
+}
+
+func (_m *SessionAttachResult) Ordinal() uint64 {
+ return uint64(_m.I_sessionAttachResultTag)
+}
+
+func (_m *SessionAttachResult) SetResponse(response SessionAttachResponse) {
+ _m.reset()
+ _m.I_sessionAttachResultTag = SessionAttachResultResponse
+ _m.Response = response
+}
+
+func SessionAttachResultWithResponse(response SessionAttachResponse) SessionAttachResult {
+ var _u SessionAttachResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *SessionAttachResult) SetErr(err int32) {
+ _m.reset()
+ _m.I_sessionAttachResultTag = SessionAttachResultErr
+ _m.Err = err
+}
+
+func SessionAttachResultWithErr(err int32) SessionAttachResult {
+ var _u SessionAttachResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_sessionDetachResultTag uint64
+
+const (
+ SessionDetachResultResponse = 1 // 0x00000001
+ SessionDetachResultErr = 2 // 0x00000002
+)
+
+type SessionDetachResult struct {
+ I_sessionDetachResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response SessionDetachResponse `fidl_ordinal:"1"`
+ Err int32 `fidl_ordinal:"2"`
+}
+
+func (_m *SessionDetachResult) reset() {
+ switch _m.I_sessionDetachResultTag {
+ case 1:
+ var _zeroed SessionDetachResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed int32
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *SessionDetachResult) Which() I_sessionDetachResultTag {
+ return _m.I_sessionDetachResultTag
+}
+
+func (_m *SessionDetachResult) Ordinal() uint64 {
+ return uint64(_m.I_sessionDetachResultTag)
+}
+
+func (_m *SessionDetachResult) SetResponse(response SessionDetachResponse) {
+ _m.reset()
+ _m.I_sessionDetachResultTag = SessionDetachResultResponse
+ _m.Response = response
+}
+
+func SessionDetachResultWithResponse(response SessionDetachResponse) SessionDetachResult {
+ var _u SessionDetachResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *SessionDetachResult) SetErr(err int32) {
+ _m.reset()
+ _m.I_sessionDetachResultTag = SessionDetachResultErr
+ _m.Err = err
+}
+
+func SessionDetachResultWithErr(err int32) SessionDetachResult {
+ var _u SessionDetachResult
+ _u.SetErr(err)
+ return _u
+}
+
+// Network device information.
+type DeviceInfo struct {
+ _ struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ I_unknownData interface{}
+ // Minimum descriptor length, in 64-bit words. Required.
+ //
+ // The minimum length that each buffer descriptor must have for correct operation with this
+ // device. Devices that support extra frame metadata inform larger minimum descriptor lengths
+ // that reflect the minimum space needed to be able to store frame metadata.
+ MinDescriptorLength uint8 `fidl_ordinal:"1"`
+ MinDescriptorLengthPresent bool
+ // Accepted descriptor version. Required.
+ DescriptorVersion uint8 `fidl_ordinal:"2"`
+ DescriptorVersionPresent bool
+ // Maximum number of items in rx FIFO (per session). Required.
+ //
+ // `rx_depth` is calculated based on the size of the actual backing hardware rx queue.
+ RxDepth uint16 `fidl_ordinal:"3"`
+ RxDepthPresent bool
+ // Maximum number of items in tx FIFO (per session). Required.
+ //
+ // `tx_depth` is calculated based on the size of the actual backing hardware tx queue.
+ TxDepth uint16 `fidl_ordinal:"4"`
+ TxDepthPresent bool
+ // Alignment requirement for buffers in the data VMO.
+ //
+ // All buffers in the data VMO *must* be aligned to `buffer_alignment` relative to the start of
+ // the VMO. `buffer_alignment == 0` is never reported. Required.
+ BufferAlignment uint32 `fidl_ordinal:"5"`
+ BufferAlignmentPresent bool
+ // Maximum supported length of buffers in the data VMO, in bytes. Required.
+ MaxBufferLength uint32 `fidl_ordinal:"6"`
+ MaxBufferLengthPresent bool
+ // The minimum rx buffer length required for device. Required.
+ MinRxBufferLength uint32 `fidl_ordinal:"7"`
+ MinRxBufferLengthPresent bool
+ // The minimum tx buffer length required for the device. Required.
+ //
+ // This value accounts only for tx payload length, `min_tx_buffer_head` and
+ // `min_tx_buffer_tail` are not part of this value.
+ //
+ // Clients must zero pad outgoing frames to meet the required minimum length.
+ MinTxBufferLength uint32 `fidl_ordinal:"8"`
+ MinTxBufferLengthPresent bool
+ // The number of bytes the device requests be free as `head` space in a tx buffer. Required.
+ MinTxBufferHead uint16 `fidl_ordinal:"9"`
+ MinTxBufferHeadPresent bool
+ // The amount of bytes the device requests be free as `tail` space in a tx buffer. Required.
+ MinTxBufferTail uint16 `fidl_ordinal:"10"`
+ MinTxBufferTailPresent bool
+ // Maximum descriptor chain length accepted by the device. Required.
+ MaxBufferParts uint8 `fidl_ordinal:"11"`
+ MaxBufferPartsPresent bool
+ // Available rx acceleration flags for this device.
+ //
+ // `rx_accel` maps the `RX_ACCEL_*` flags in the frame descriptors with semantic acceleration
+ // features described by [`RxAcceleration`]. Position `n` of `rx_accel` conveys the meaning of
+ // the `RX_ACCEL_n` flag.
+ //
+ // Interpreted as empty if not provided.
+ RxAccel []RxAcceleration `fidl_bounds:"16" fidl_ordinal:"12"`
+ RxAccelPresent bool
+ // Available tx acceleration flags for this device.
+ //
+ // `tx_accel` maps the `TX_ACCEL_*` flags in the frame descriptors with semantic acceleration
+ // features described by [`TxAcceleration`]. Position `n` of `tx_accel` conveys the meaning of
+ // the `TX_ACCEL_n` flag.
+ //
+ // Interpreted as empty if not provided.
+ TxAccel []TxAcceleration `fidl_bounds:"16" fidl_ordinal:"13"`
+ TxAccelPresent bool
+}
+
+func (u *DeviceInfo) SetMinDescriptorLength(minDescriptorLength uint8) {
+ u.MinDescriptorLength = minDescriptorLength
+ u.MinDescriptorLengthPresent = true
+}
+
+func (u *DeviceInfo) GetMinDescriptorLength() uint8 {
+ return u.MinDescriptorLength
+}
+
+func (u *DeviceInfo) GetMinDescriptorLengthWithDefault(_default uint8) uint8 {
+ if !u.HasMinDescriptorLength() {
+ return _default
+ }
+ return u.MinDescriptorLength
+}
+
+func (u *DeviceInfo) HasMinDescriptorLength() bool {
+ return u.MinDescriptorLengthPresent
+}
+
+func (u *DeviceInfo) ClearMinDescriptorLength() {
+ u.MinDescriptorLengthPresent = false
+}
+
+func (u *DeviceInfo) SetDescriptorVersion(descriptorVersion uint8) {
+ u.DescriptorVersion = descriptorVersion
+ u.DescriptorVersionPresent = true
+}
+
+func (u *DeviceInfo) GetDescriptorVersion() uint8 {
+ return u.DescriptorVersion
+}
+
+func (u *DeviceInfo) GetDescriptorVersionWithDefault(_default uint8) uint8 {
+ if !u.HasDescriptorVersion() {
+ return _default
+ }
+ return u.DescriptorVersion
+}
+
+func (u *DeviceInfo) HasDescriptorVersion() bool {
+ return u.DescriptorVersionPresent
+}
+
+func (u *DeviceInfo) ClearDescriptorVersion() {
+ u.DescriptorVersionPresent = false
+}
+
+func (u *DeviceInfo) SetRxDepth(rxDepth uint16) {
+ u.RxDepth = rxDepth
+ u.RxDepthPresent = true
+}
+
+func (u *DeviceInfo) GetRxDepth() uint16 {
+ return u.RxDepth
+}
+
+func (u *DeviceInfo) GetRxDepthWithDefault(_default uint16) uint16 {
+ if !u.HasRxDepth() {
+ return _default
+ }
+ return u.RxDepth
+}
+
+func (u *DeviceInfo) HasRxDepth() bool {
+ return u.RxDepthPresent
+}
+
+func (u *DeviceInfo) ClearRxDepth() {
+ u.RxDepthPresent = false
+}
+
+func (u *DeviceInfo) SetTxDepth(txDepth uint16) {
+ u.TxDepth = txDepth
+ u.TxDepthPresent = true
+}
+
+func (u *DeviceInfo) GetTxDepth() uint16 {
+ return u.TxDepth
+}
+
+func (u *DeviceInfo) GetTxDepthWithDefault(_default uint16) uint16 {
+ if !u.HasTxDepth() {
+ return _default
+ }
+ return u.TxDepth
+}
+
+func (u *DeviceInfo) HasTxDepth() bool {
+ return u.TxDepthPresent
+}
+
+func (u *DeviceInfo) ClearTxDepth() {
+ u.TxDepthPresent = false
+}
+
+func (u *DeviceInfo) SetBufferAlignment(bufferAlignment uint32) {
+ u.BufferAlignment = bufferAlignment
+ u.BufferAlignmentPresent = true
+}
+
+func (u *DeviceInfo) GetBufferAlignment() uint32 {
+ return u.BufferAlignment
+}
+
+func (u *DeviceInfo) GetBufferAlignmentWithDefault(_default uint32) uint32 {
+ if !u.HasBufferAlignment() {
+ return _default
+ }
+ return u.BufferAlignment
+}
+
+func (u *DeviceInfo) HasBufferAlignment() bool {
+ return u.BufferAlignmentPresent
+}
+
+func (u *DeviceInfo) ClearBufferAlignment() {
+ u.BufferAlignmentPresent = false
+}
+
+func (u *DeviceInfo) SetMaxBufferLength(maxBufferLength uint32) {
+ u.MaxBufferLength = maxBufferLength
+ u.MaxBufferLengthPresent = true
+}
+
+func (u *DeviceInfo) GetMaxBufferLength() uint32 {
+ return u.MaxBufferLength
+}
+
+func (u *DeviceInfo) GetMaxBufferLengthWithDefault(_default uint32) uint32 {
+ if !u.HasMaxBufferLength() {
+ return _default
+ }
+ return u.MaxBufferLength
+}
+
+func (u *DeviceInfo) HasMaxBufferLength() bool {
+ return u.MaxBufferLengthPresent
+}
+
+func (u *DeviceInfo) ClearMaxBufferLength() {
+ u.MaxBufferLengthPresent = false
+}
+
+func (u *DeviceInfo) SetMinRxBufferLength(minRxBufferLength uint32) {
+ u.MinRxBufferLength = minRxBufferLength
+ u.MinRxBufferLengthPresent = true
+}
+
+func (u *DeviceInfo) GetMinRxBufferLength() uint32 {
+ return u.MinRxBufferLength
+}
+
+func (u *DeviceInfo) GetMinRxBufferLengthWithDefault(_default uint32) uint32 {
+ if !u.HasMinRxBufferLength() {
+ return _default
+ }
+ return u.MinRxBufferLength
+}
+
+func (u *DeviceInfo) HasMinRxBufferLength() bool {
+ return u.MinRxBufferLengthPresent
+}
+
+func (u *DeviceInfo) ClearMinRxBufferLength() {
+ u.MinRxBufferLengthPresent = false
+}
+
+func (u *DeviceInfo) SetMinTxBufferLength(minTxBufferLength uint32) {
+ u.MinTxBufferLength = minTxBufferLength
+ u.MinTxBufferLengthPresent = true
+}
+
+func (u *DeviceInfo) GetMinTxBufferLength() uint32 {
+ return u.MinTxBufferLength
+}
+
+func (u *DeviceInfo) GetMinTxBufferLengthWithDefault(_default uint32) uint32 {
+ if !u.HasMinTxBufferLength() {
+ return _default
+ }
+ return u.MinTxBufferLength
+}
+
+func (u *DeviceInfo) HasMinTxBufferLength() bool {
+ return u.MinTxBufferLengthPresent
+}
+
+func (u *DeviceInfo) ClearMinTxBufferLength() {
+ u.MinTxBufferLengthPresent = false
+}
+
+func (u *DeviceInfo) SetMinTxBufferHead(minTxBufferHead uint16) {
+ u.MinTxBufferHead = minTxBufferHead
+ u.MinTxBufferHeadPresent = true
+}
+
+func (u *DeviceInfo) GetMinTxBufferHead() uint16 {
+ return u.MinTxBufferHead
+}
+
+func (u *DeviceInfo) GetMinTxBufferHeadWithDefault(_default uint16) uint16 {
+ if !u.HasMinTxBufferHead() {
+ return _default
+ }
+ return u.MinTxBufferHead
+}
+
+func (u *DeviceInfo) HasMinTxBufferHead() bool {
+ return u.MinTxBufferHeadPresent
+}
+
+func (u *DeviceInfo) ClearMinTxBufferHead() {
+ u.MinTxBufferHeadPresent = false
+}
+
+func (u *DeviceInfo) SetMinTxBufferTail(minTxBufferTail uint16) {
+ u.MinTxBufferTail = minTxBufferTail
+ u.MinTxBufferTailPresent = true
+}
+
+func (u *DeviceInfo) GetMinTxBufferTail() uint16 {
+ return u.MinTxBufferTail
+}
+
+func (u *DeviceInfo) GetMinTxBufferTailWithDefault(_default uint16) uint16 {
+ if !u.HasMinTxBufferTail() {
+ return _default
+ }
+ return u.MinTxBufferTail
+}
+
+func (u *DeviceInfo) HasMinTxBufferTail() bool {
+ return u.MinTxBufferTailPresent
+}
+
+func (u *DeviceInfo) ClearMinTxBufferTail() {
+ u.MinTxBufferTailPresent = false
+}
+
+func (u *DeviceInfo) SetMaxBufferParts(maxBufferParts uint8) {
+ u.MaxBufferParts = maxBufferParts
+ u.MaxBufferPartsPresent = true
+}
+
+func (u *DeviceInfo) GetMaxBufferParts() uint8 {
+ return u.MaxBufferParts
+}
+
+func (u *DeviceInfo) GetMaxBufferPartsWithDefault(_default uint8) uint8 {
+ if !u.HasMaxBufferParts() {
+ return _default
+ }
+ return u.MaxBufferParts
+}
+
+func (u *DeviceInfo) HasMaxBufferParts() bool {
+ return u.MaxBufferPartsPresent
+}
+
+func (u *DeviceInfo) ClearMaxBufferParts() {
+ u.MaxBufferPartsPresent = false
+}
+
+func (u *DeviceInfo) SetRxAccel(rxAccel []RxAcceleration) {
+ u.RxAccel = rxAccel
+ u.RxAccelPresent = true
+}
+
+func (u *DeviceInfo) GetRxAccel() []RxAcceleration {
+ return u.RxAccel
+}
+
+func (u *DeviceInfo) GetRxAccelWithDefault(_default []RxAcceleration) []RxAcceleration {
+ if !u.HasRxAccel() {
+ return _default
+ }
+ return u.RxAccel
+}
+
+func (u *DeviceInfo) HasRxAccel() bool {
+ return u.RxAccelPresent
+}
+
+func (u *DeviceInfo) ClearRxAccel() {
+ u.RxAccelPresent = false
+}
+
+func (u *DeviceInfo) SetTxAccel(txAccel []TxAcceleration) {
+ u.TxAccel = txAccel
+ u.TxAccelPresent = true
+}
+
+func (u *DeviceInfo) GetTxAccel() []TxAcceleration {
+ return u.TxAccel
+}
+
+func (u *DeviceInfo) GetTxAccelWithDefault(_default []TxAcceleration) []TxAcceleration {
+ if !u.HasTxAccel() {
+ return _default
+ }
+ return u.TxAccel
+}
+
+func (u *DeviceInfo) HasTxAccel() bool {
+ return u.TxAccelPresent
+}
+
+func (u *DeviceInfo) ClearTxAccel() {
+ u.TxAccelPresent = false
+}
+
+func (u *DeviceInfo) HasUnknownData() bool {
+ return u.I_unknownData != nil
+}
+
+func (u *DeviceInfo) GetUnknownData() map[uint64]_bindings.UnknownData {
+ return u.I_unknownData.(map[uint64]_bindings.UnknownData)
+}
+
+// Dynamic port information.
+type PortStatus struct {
+ _ struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ I_unknownData interface{}
+ // Port status flags.
+ Flags StatusFlags `fidl_ordinal:"1"`
+ FlagsPresent bool
+ // Maximum transmit unit for this port, in bytes.
+ //
+ // The reported MTU is the size of an entire frame, including any header and trailer bytes for
+ // whatever protocols this port supports.
+ Mtu uint32 `fidl_ordinal:"2"`
+ MtuPresent bool
+}
+
+func (u *PortStatus) SetFlags(flags StatusFlags) {
+ u.Flags = flags
+ u.FlagsPresent = true
+}
+
+func (u *PortStatus) GetFlags() StatusFlags {
+ return u.Flags
+}
+
+func (u *PortStatus) GetFlagsWithDefault(_default StatusFlags) StatusFlags {
+ if !u.HasFlags() {
+ return _default
+ }
+ return u.Flags
+}
+
+func (u *PortStatus) HasFlags() bool {
+ return u.FlagsPresent
+}
+
+func (u *PortStatus) ClearFlags() {
+ u.FlagsPresent = false
+}
+
+func (u *PortStatus) SetMtu(mtu uint32) {
+ u.Mtu = mtu
+ u.MtuPresent = true
+}
+
+func (u *PortStatus) GetMtu() uint32 {
+ return u.Mtu
+}
+
+func (u *PortStatus) GetMtuWithDefault(_default uint32) uint32 {
+ if !u.HasMtu() {
+ return _default
+ }
+ return u.Mtu
+}
+
+func (u *PortStatus) HasMtu() bool {
+ return u.MtuPresent
+}
+
+func (u *PortStatus) ClearMtu() {
+ u.MtuPresent = false
+}
+
+func (u *PortStatus) HasUnknownData() bool {
+ return u.I_unknownData != nil
+}
+
+func (u *PortStatus) GetUnknownData() map[uint64]_bindings.UnknownData {
+ return u.I_unknownData.(map[uint64]_bindings.UnknownData)
+}
+
+// Logical port information.
+type PortInfo struct {
+ _ struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ I_unknownData interface{}
+ // Port's identifier. Required.
+ Id uint8 `fidl_ordinal:"1"`
+ IdPresent bool
+ // Port's class. Required.
+ Class DeviceClass `fidl_ordinal:"2"`
+ ClassPresent bool
+ // Supported rx frame types on this port. Required.
+ //
+ // Clients may open sessions subscribing to a subset of `rx_types` frame types on this port.
+ RxTypes []FrameType `fidl_bounds:"4" fidl_ordinal:"3"`
+ RxTypesPresent bool
+ // Supported tx frame types on this port. Required.
+ //
+ // Frames destined to this port whose frame type is not in `tx_types` are returned with an
+ // error.
+ //
+ // Some network devices may need to perform partial frame parsing and serialization and, for
+ // that reason, `tx_types` is a vector of [`FrameTypeSupport`] which includes specific features
+ // per frame type. For example, a device that supports Ethernet frames but needs to convert the
+ // Ethernet header may only support standard Ethernet II frames, and not any "raw" Ethernet
+ // frame.
+ TxTypes []FrameTypeSupport `fidl_bounds:"4" fidl_ordinal:"4"`
+ TxTypesPresent bool
+}
+
+func (u *PortInfo) SetId(id uint8) {
+ u.Id = id
+ u.IdPresent = true
+}
+
+func (u *PortInfo) GetId() uint8 {
+ return u.Id
+}
+
+func (u *PortInfo) GetIdWithDefault(_default uint8) uint8 {
+ if !u.HasId() {
+ return _default
+ }
+ return u.Id
+}
+
+func (u *PortInfo) HasId() bool {
+ return u.IdPresent
+}
+
+func (u *PortInfo) ClearId() {
+ u.IdPresent = false
+}
+
+func (u *PortInfo) SetClass(class DeviceClass) {
+ u.Class = class
+ u.ClassPresent = true
+}
+
+func (u *PortInfo) GetClass() DeviceClass {
+ return u.Class
+}
+
+func (u *PortInfo) GetClassWithDefault(_default DeviceClass) DeviceClass {
+ if !u.HasClass() {
+ return _default
+ }
+ return u.Class
+}
+
+func (u *PortInfo) HasClass() bool {
+ return u.ClassPresent
+}
+
+func (u *PortInfo) ClearClass() {
+ u.ClassPresent = false
+}
+
+func (u *PortInfo) SetRxTypes(rxTypes []FrameType) {
+ u.RxTypes = rxTypes
+ u.RxTypesPresent = true
+}
+
+func (u *PortInfo) GetRxTypes() []FrameType {
+ return u.RxTypes
+}
+
+func (u *PortInfo) GetRxTypesWithDefault(_default []FrameType) []FrameType {
+ if !u.HasRxTypes() {
+ return _default
+ }
+ return u.RxTypes
+}
+
+func (u *PortInfo) HasRxTypes() bool {
+ return u.RxTypesPresent
+}
+
+func (u *PortInfo) ClearRxTypes() {
+ u.RxTypesPresent = false
+}
+
+func (u *PortInfo) SetTxTypes(txTypes []FrameTypeSupport) {
+ u.TxTypes = txTypes
+ u.TxTypesPresent = true
+}
+
+func (u *PortInfo) GetTxTypes() []FrameTypeSupport {
+ return u.TxTypes
+}
+
+func (u *PortInfo) GetTxTypesWithDefault(_default []FrameTypeSupport) []FrameTypeSupport {
+ if !u.HasTxTypes() {
+ return _default
+ }
+ return u.TxTypes
+}
+
+func (u *PortInfo) HasTxTypes() bool {
+ return u.TxTypesPresent
+}
+
+func (u *PortInfo) ClearTxTypes() {
+ u.TxTypesPresent = false
+}
+
+func (u *PortInfo) HasUnknownData() bool {
+ return u.I_unknownData != nil
+}
+
+func (u *PortInfo) GetUnknownData() map[uint64]_bindings.UnknownData {
+ return u.I_unknownData.(map[uint64]_bindings.UnknownData)
+}
+
+// Session configuration.
+type SessionInfo struct {
+ _ struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"true"`
+ I_unknownData interface{}
+ // VMO containing the descriptors. Required.
+ //
+ // 16-bit indices transmitted over the FIFOs index a descriptor in this VMO (byte offset =
+ // descriptor_length * 8 * index).
+ Descriptors _zx.VMO `fidl_handle_subtype:"3" fidl_handle_rights:"2147483648" fidl_bounds:"0" fidl_ordinal:"1"`
+ DescriptorsPresent bool
+ // VMO containing frame data. Required.
+ //
+ // Descriptors contain byte-offsets that are used to index arbitrary regions in `data`.
+ Data _zx.VMO `fidl_handle_subtype:"3" fidl_handle_rights:"2147483648" fidl_bounds:"0" fidl_ordinal:"2"`
+ DataPresent bool
+ // Requested descriptor version. Required.
+ //
+ // If the network device does not support the requested descriptor version,
+ // [`Device.OpenSession`] fails with `ZX_ERR_NOT_SUPPORTED`.
+ DescriptorVersion uint8 `fidl_ordinal:"3"`
+ DescriptorVersionPresent bool
+ // Descriptor length, in 64-bit words. Required.
+ //
+ // The length of each descriptor in the `descriptors` VMO. This is used as a multiplier to find
+ // byte offsets in `descriptors` given a descriptor index passed through the rx or tx FIFOs.
+ DescriptorLength uint8 `fidl_ordinal:"4"`
+ DescriptorLengthPresent bool
+ // Total number of descriptors that can be used by this session. Required.
+ //
+ // Descriptor indices transferred through either the rx or tx FIFO must be in the range [0,
+ // `descriptor_count`).
+ DescriptorCount uint16 `fidl_ordinal:"5"`
+ DescriptorCountPresent bool
+ // Extra options. Interpreted as empty bitmask if absent.
+ Options SessionFlags `fidl_ordinal:"6"`
+ OptionsPresent bool
+}
+
+func (u *SessionInfo) SetDescriptors(descriptors _zx.VMO) {
+ u.Descriptors = descriptors
+ u.DescriptorsPresent = true
+}
+
+func (u *SessionInfo) GetDescriptors() _zx.VMO {
+ return u.Descriptors
+}
+
+func (u *SessionInfo) GetDescriptorsWithDefault(_default _zx.VMO) _zx.VMO {
+ if !u.HasDescriptors() {
+ return _default
+ }
+ return u.Descriptors
+}
+
+func (u *SessionInfo) HasDescriptors() bool {
+ return u.DescriptorsPresent
+}
+
+func (u *SessionInfo) ClearDescriptors() {
+ u.DescriptorsPresent = false
+}
+
+func (u *SessionInfo) SetData(data _zx.VMO) {
+ u.Data = data
+ u.DataPresent = true
+}
+
+func (u *SessionInfo) GetData() _zx.VMO {
+ return u.Data
+}
+
+func (u *SessionInfo) GetDataWithDefault(_default _zx.VMO) _zx.VMO {
+ if !u.HasData() {
+ return _default
+ }
+ return u.Data
+}
+
+func (u *SessionInfo) HasData() bool {
+ return u.DataPresent
+}
+
+func (u *SessionInfo) ClearData() {
+ u.DataPresent = false
+}
+
+func (u *SessionInfo) SetDescriptorVersion(descriptorVersion uint8) {
+ u.DescriptorVersion = descriptorVersion
+ u.DescriptorVersionPresent = true
+}
+
+func (u *SessionInfo) GetDescriptorVersion() uint8 {
+ return u.DescriptorVersion
+}
+
+func (u *SessionInfo) GetDescriptorVersionWithDefault(_default uint8) uint8 {
+ if !u.HasDescriptorVersion() {
+ return _default
+ }
+ return u.DescriptorVersion
+}
+
+func (u *SessionInfo) HasDescriptorVersion() bool {
+ return u.DescriptorVersionPresent
+}
+
+func (u *SessionInfo) ClearDescriptorVersion() {
+ u.DescriptorVersionPresent = false
+}
+
+func (u *SessionInfo) SetDescriptorLength(descriptorLength uint8) {
+ u.DescriptorLength = descriptorLength
+ u.DescriptorLengthPresent = true
+}
+
+func (u *SessionInfo) GetDescriptorLength() uint8 {
+ return u.DescriptorLength
+}
+
+func (u *SessionInfo) GetDescriptorLengthWithDefault(_default uint8) uint8 {
+ if !u.HasDescriptorLength() {
+ return _default
+ }
+ return u.DescriptorLength
+}
+
+func (u *SessionInfo) HasDescriptorLength() bool {
+ return u.DescriptorLengthPresent
+}
+
+func (u *SessionInfo) ClearDescriptorLength() {
+ u.DescriptorLengthPresent = false
+}
+
+func (u *SessionInfo) SetDescriptorCount(descriptorCount uint16) {
+ u.DescriptorCount = descriptorCount
+ u.DescriptorCountPresent = true
+}
+
+func (u *SessionInfo) GetDescriptorCount() uint16 {
+ return u.DescriptorCount
+}
+
+func (u *SessionInfo) GetDescriptorCountWithDefault(_default uint16) uint16 {
+ if !u.HasDescriptorCount() {
+ return _default
+ }
+ return u.DescriptorCount
+}
+
+func (u *SessionInfo) HasDescriptorCount() bool {
+ return u.DescriptorCountPresent
+}
+
+func (u *SessionInfo) ClearDescriptorCount() {
+ u.DescriptorCountPresent = false
+}
+
+func (u *SessionInfo) SetOptions(options SessionFlags) {
+ u.Options = options
+ u.OptionsPresent = true
+}
+
+func (u *SessionInfo) GetOptions() SessionFlags {
+ return u.Options
+}
+
+func (u *SessionInfo) GetOptionsWithDefault(_default SessionFlags) SessionFlags {
+ if !u.HasOptions() {
+ return _default
+ }
+ return u.Options
+}
+
+func (u *SessionInfo) HasOptions() bool {
+ return u.OptionsPresent
+}
+
+func (u *SessionInfo) ClearOptions() {
+ u.OptionsPresent = false
+}
+
+func (u *SessionInfo) HasUnknownData() bool {
+ return u.I_unknownData != nil
+}
+
+func (u *SessionInfo) GetUnknownData() map[uint64]_bindings.UnknownData {
+ return u.I_unknownData.(map[uint64]_bindings.UnknownData)
+}
+
+const (
+ DeviceGetInfoOrdinal uint64 = 0x3c500ca9341e8f56
+ DeviceOpenSessionOrdinal uint64 = 0x25940b82146dcf67
+ DeviceGetPortOrdinal uint64 = 0x340a852c955ba2a6
+ DeviceGetPortWatcherOrdinal uint64 = 0x104f43c937c39f0c
+)
+
+type DeviceWithCtxInterface _bindings.ChannelProxy
+
+// Obtain information about device
+//
+// - response `info` device information.
+func (p *DeviceWithCtxInterface) GetInfo(ctx_ _bindings.Context) (DeviceInfo, error) {
+ var req_ _bindings.Message
+ resp_ := &deviceWithCtxGetInfoResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DeviceGetInfoOrdinal, req_, resp_)
+ return resp_.Info, err_
+}
+
+// Opens a new session with the network device.
+//
+// + request `session_name` is used as a debugging label attached to this session.
+// + request `session_info` contains the necessary information to setup the session's data
+// exchange.
+// - response `session` a handle to control the session.
+// - response `fifos` data-plane FIFOs attached to the session.
+// * error `ZX_ERR_NOT_SUPPORTED` if `session_info` contains not supported frame types or
+// descriptors set up.
+// * error `ZX_ERR_INVALID_ARGS` if `session_info` is missing fields or contains invalid
+// information.
+func (p *DeviceWithCtxInterface) OpenSession(ctx_ _bindings.Context, sessionName string, sessionInfo SessionInfo) (DeviceOpenSessionResult, error) {
+ req_ := &deviceWithCtxOpenSessionRequest{
+ SessionName: sessionName,
+ SessionInfo: sessionInfo,
+ }
+ resp_ := &deviceWithCtxOpenSessionResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DeviceOpenSessionOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Connects to a port the given `id`.
+//
+// + request `id` port to connect to.
+// + request `port` server end of port channel.
+//
+// `port` is closed with a `ZX_ERR_NOT_FOUND` epitaph if no port with `id` exists.
+func (p *DeviceWithCtxInterface) GetPort(ctx_ _bindings.Context, id uint8, port PortWithCtxInterfaceRequest) error {
+ req_ := &deviceWithCtxGetPortRequest{
+ Id: id,
+ Port: port,
+ }
+ err_ := ((*_bindings.ChannelProxy)(p)).Send(DeviceGetPortOrdinal, req_)
+ return err_
+}
+
+// Connects a [`PortWatcher`] to this device.
+//
+// + request `watcher` server end of watcher channel.
+func (p *DeviceWithCtxInterface) GetPortWatcher(ctx_ _bindings.Context, watcher PortWatcherWithCtxInterfaceRequest) error {
+ req_ := &deviceWithCtxGetPortWatcherRequest{
+ Watcher: watcher,
+ }
+ err_ := ((*_bindings.ChannelProxy)(p)).Send(DeviceGetPortWatcherOrdinal, req_)
+ return err_
+}
+
+// A Network Device.
+type DeviceWithCtx interface {
+ // Obtain information about device
+ //
+ // - response `info` device information.
+ GetInfo(ctx_ _bindings.Context) (DeviceInfo, error)
+ // Opens a new session with the network device.
+ //
+ // + request `session_name` is used as a debugging label attached to this session.
+ // + request `session_info` contains the necessary information to setup the session's data
+ // exchange.
+ // - response `session` a handle to control the session.
+ // - response `fifos` data-plane FIFOs attached to the session.
+ // * error `ZX_ERR_NOT_SUPPORTED` if `session_info` contains not supported frame types or
+ // descriptors set up.
+ // * error `ZX_ERR_INVALID_ARGS` if `session_info` is missing fields or contains invalid
+ // information.
+ OpenSession(ctx_ _bindings.Context, sessionName string, sessionInfo SessionInfo) (DeviceOpenSessionResult, error)
+ // Connects to a port the given `id`.
+ //
+ // + request `id` port to connect to.
+ // + request `port` server end of port channel.
+ //
+ // `port` is closed with a `ZX_ERR_NOT_FOUND` epitaph if no port with `id` exists.
+ GetPort(ctx_ _bindings.Context, id uint8, port PortWithCtxInterfaceRequest) error
+ // Connects a [`PortWatcher`] to this device.
+ //
+ // + request `watcher` server end of watcher channel.
+ GetPortWatcher(ctx_ _bindings.Context, watcher PortWatcherWithCtxInterfaceRequest) error
+}
+
+type DeviceWithCtxTransitionalBase struct{}
+
+type DeviceWithCtxInterfaceRequest _bindings.InterfaceRequest
+
+func NewDeviceWithCtxInterfaceRequest() (DeviceWithCtxInterfaceRequest, *DeviceWithCtxInterface, error) {
+ req, cli, err := _bindings.NewInterfaceRequest()
+ return DeviceWithCtxInterfaceRequest(req), (*DeviceWithCtxInterface)(cli), err
+}
+
+type DeviceWithCtxStub struct {
+ Impl DeviceWithCtx
+}
+
+func (s_ *DeviceWithCtxStub) Dispatch(args_ _bindings.DispatchArgs) (_bindings.Message, bool, error) {
+ switch args_.Ordinal {
+ case DeviceGetInfoOrdinal:
+ info, err_ := s_.Impl.GetInfo(args_.Ctx)
+ out_ := deviceWithCtxGetInfoResponse{}
+ out_.Info = info
+ return &out_, true, err_
+ case DeviceOpenSessionOrdinal:
+ in_ := deviceWithCtxOpenSessionRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.OpenSession(args_.Ctx, in_.SessionName, in_.SessionInfo)
+ out_ := deviceWithCtxOpenSessionResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DeviceGetPortOrdinal:
+ in_ := deviceWithCtxGetPortRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ err_ := s_.Impl.GetPort(args_.Ctx, in_.Id, in_.Port)
+ return nil, false, err_
+ case DeviceGetPortWatcherOrdinal:
+ in_ := deviceWithCtxGetPortWatcherRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ err_ := s_.Impl.GetPortWatcher(args_.Ctx, in_.Watcher)
+ return nil, false, err_
+ }
+ return nil, false, _bindings.ErrUnknownOrdinal
+}
+
+type DeviceEventProxy _bindings.ChannelProxy
+
+const (
+ PortWatcherWatchOrdinal uint64 = 0x3e87244b74fff55e
+)
+
+type PortWatcherWithCtxInterface _bindings.ChannelProxy
+
+// Get the next port event.
+//
+// The first N calls return [`DevicePortEvent.existing`] where N is the number of ports present
+// on the device at the time of the watcher's creation. The next call returns
+// [`DevicePortEvent.idle`] to indicate the end of existing ports. Subsequent calls block until
+// a port is added ([`DevicePortEvent.added`]) or removed ([`DevicePortEvent.removed`]).
+//
+// The server closes the `PortWatcher` channel with `ZX_ERR_CANCELED` if the number of unread
+// events reaches a server-selected limit that is at least two times [`MAX_PORTS`]. Clients are
+// encouraged to maintain a hanging call to `Watch` at all times to avoid triggering this
+// condition.
+//
+// - response `event` next port event.
+func (p *PortWatcherWithCtxInterface) Watch(ctx_ _bindings.Context) (DevicePortEvent, error) {
+ var req_ _bindings.Message
+ resp_ := &portWatcherWithCtxWatchResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(PortWatcherWatchOrdinal, req_, resp_)
+ return resp_.Event, err_
+}
+
+// Provides iteration over and updates for ports attached to a device.
+type PortWatcherWithCtx interface {
+ // Get the next port event.
+ //
+ // The first N calls return [`DevicePortEvent.existing`] where N is the number of ports present
+ // on the device at the time of the watcher's creation. The next call returns
+ // [`DevicePortEvent.idle`] to indicate the end of existing ports. Subsequent calls block until
+ // a port is added ([`DevicePortEvent.added`]) or removed ([`DevicePortEvent.removed`]).
+ //
+ // The server closes the `PortWatcher` channel with `ZX_ERR_CANCELED` if the number of unread
+ // events reaches a server-selected limit that is at least two times [`MAX_PORTS`]. Clients are
+ // encouraged to maintain a hanging call to `Watch` at all times to avoid triggering this
+ // condition.
+ //
+ // - response `event` next port event.
+ Watch(ctx_ _bindings.Context) (DevicePortEvent, error)
+}
+
+type PortWatcherWithCtxTransitionalBase struct{}
+
+type PortWatcherWithCtxInterfaceRequest _bindings.InterfaceRequest
+
+func NewPortWatcherWithCtxInterfaceRequest() (PortWatcherWithCtxInterfaceRequest, *PortWatcherWithCtxInterface, error) {
+ req, cli, err := _bindings.NewInterfaceRequest()
+ return PortWatcherWithCtxInterfaceRequest(req), (*PortWatcherWithCtxInterface)(cli), err
+}
+
+type PortWatcherWithCtxStub struct {
+ Impl PortWatcherWithCtx
+}
+
+func (s_ *PortWatcherWithCtxStub) Dispatch(args_ _bindings.DispatchArgs) (_bindings.Message, bool, error) {
+ switch args_.Ordinal {
+ case PortWatcherWatchOrdinal:
+ event, err_ := s_.Impl.Watch(args_.Ctx)
+ out_ := portWatcherWithCtxWatchResponse{}
+ out_.Event = event
+ return &out_, true, err_
+ }
+ return nil, false, _bindings.ErrUnknownOrdinal
+}
+
+type PortWatcherEventProxy _bindings.ChannelProxy
+
+const (
+ DeviceInstanceGetDeviceOrdinal uint64 = 0x775270585575cef7
+)
+
+type DeviceInstanceWithCtxInterface _bindings.ChannelProxy
+
+// Connects to the [`Device`] implementation.
+//
+// + request `device` device handle.
+func (p *DeviceInstanceWithCtxInterface) GetDevice(ctx_ _bindings.Context, device DeviceWithCtxInterfaceRequest) error {
+ req_ := &deviceInstanceWithCtxGetDeviceRequest{
+ Device: device,
+ }
+ err_ := ((*_bindings.ChannelProxy)(p)).Send(DeviceInstanceGetDeviceOrdinal, req_)
+ return err_
+}
+
+// An instance of a network device exposed on devfs.
+type DeviceInstanceWithCtx interface {
+ // Connects to the [`Device`] implementation.
+ //
+ // + request `device` device handle.
+ GetDevice(ctx_ _bindings.Context, device DeviceWithCtxInterfaceRequest) error
+}
+
+type DeviceInstanceWithCtxTransitionalBase struct{}
+
+type DeviceInstanceWithCtxInterfaceRequest _bindings.InterfaceRequest
+
+func NewDeviceInstanceWithCtxInterfaceRequest() (DeviceInstanceWithCtxInterfaceRequest, *DeviceInstanceWithCtxInterface, error) {
+ req, cli, err := _bindings.NewInterfaceRequest()
+ return DeviceInstanceWithCtxInterfaceRequest(req), (*DeviceInstanceWithCtxInterface)(cli), err
+}
+
+type DeviceInstanceWithCtxStub struct {
+ Impl DeviceInstanceWithCtx
+}
+
+func (s_ *DeviceInstanceWithCtxStub) Dispatch(args_ _bindings.DispatchArgs) (_bindings.Message, bool, error) {
+ switch args_.Ordinal {
+ case DeviceInstanceGetDeviceOrdinal:
+ in_ := deviceInstanceWithCtxGetDeviceRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ err_ := s_.Impl.GetDevice(args_.Ctx, in_.Device)
+ return nil, false, err_
+ }
+ return nil, false, _bindings.ErrUnknownOrdinal
+}
+
+type DeviceInstanceEventProxy _bindings.ChannelProxy
+
+const (
+ MacAddressingGetUnicastAddressOrdinal uint64 = 0x2c60b82a4ecfaebe
+ MacAddressingSetModeOrdinal uint64 = 0x6297b8dbf03c58c
+ MacAddressingAddMulticastAddressOrdinal uint64 = 0xf5637ff11cf0c25
+ MacAddressingRemoveMulticastAddressOrdinal uint64 = 0x5dddf4e3ba4e2560
+)
+
+type MacAddressingWithCtxInterface _bindings.ChannelProxy
+
+// Gets the Device's current unicast MAC address.
+//
+// Implementers of this API do not need to return a uniquely identifiable MAC; the unicast
+// address returned is the one that is *currently* in use to filter unicast frames, or that
+// identifies the device on a link it's *currently* on. Users of this API must not rely on the
+// stability or uniqueness of the returned value to identify or disambiguate device instances.
+//
+// - response `address` device's unicast MAC address.
+func (p *MacAddressingWithCtxInterface) GetUnicastAddress(ctx_ _bindings.Context) (fuchsianet.MacAddress, error) {
+ var req_ _bindings.Message
+ resp_ := &macAddressingWithCtxGetUnicastAddressResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(MacAddressingGetUnicastAddressOrdinal, req_, resp_)
+ return resp_.Address, err_
+}
+
+// Sets requested operating mode of this device to `mode`.
+//
+// The requested mode is attached to the current client connection to the device. Because
+// multiple clients can be attached to the same device at once, the mode with the least
+// restrictions is the one actively put into effect into the underlying device implementation.
+//
+// If the device does not support the requested mode, but supports a mode that is more open
+// than the requested one, `SetMode` succeeds regardless. Otherwise, if the device only
+// supports *more restrictive* modes than the one requested, `SetMode` returns
+// `ZX_ERR_NOT_SUPPORTED`.
+//
+// Clients must be aware that the resource being accessed is shared, and that the device may be
+// effectively operating at a more open level than the one that was requested (although never
+// at one more restrictive).
+//
+// + request `mode` request mode to attach to.
+// - response `status` `ZX_ERR_NOT_SUPPORTED` it the device only supports mode more restrictive
+// than the one requested.
+func (p *MacAddressingWithCtxInterface) SetMode(ctx_ _bindings.Context, mode MacFilterMode) (int32, error) {
+ req_ := &macAddressingWithCtxSetModeRequest{
+ Mode: mode,
+ }
+ resp_ := &macAddressingWithCtxSetModeResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(MacAddressingSetModeOrdinal, req_, resp_)
+ return resp_.Status, err_
+}
+
+// Adds multicast address to the list of multicast groups.
+//
+// The list of multicast addresses kept is untouched by calls to `SetMode`. If the device's
+// mode is not `MULTICAST_FILTER`, the list of multicast addresses is ignored.
+//
+// + request `address` multicast address to add to the list.
+// - response `status` `ZX_ERR_INVALID_ARGS` if `address` is not a multicast address.
+func (p *MacAddressingWithCtxInterface) AddMulticastAddress(ctx_ _bindings.Context, address fuchsianet.MacAddress) (int32, error) {
+ req_ := &macAddressingWithCtxAddMulticastAddressRequest{
+ Address: address,
+ }
+ resp_ := &macAddressingWithCtxAddMulticastAddressResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(MacAddressingAddMulticastAddressOrdinal, req_, resp_)
+ return resp_.Status, err_
+}
+
+// Removes multicast address from the list of multicast groups.
+//
+// + request `address` multicast address to remove from the list.
+// - response `status` `ZX_ERR_INVALID_ARGS` if `address` is not a multicast address.
+func (p *MacAddressingWithCtxInterface) RemoveMulticastAddress(ctx_ _bindings.Context, address fuchsianet.MacAddress) (int32, error) {
+ req_ := &macAddressingWithCtxRemoveMulticastAddressRequest{
+ Address: address,
+ }
+ resp_ := &macAddressingWithCtxRemoveMulticastAddressResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(MacAddressingRemoveMulticastAddressOrdinal, req_, resp_)
+ return resp_.Status, err_
+}
+
+type MacAddressingWithCtx interface {
+ // Gets the Device's current unicast MAC address.
+ //
+ // Implementers of this API do not need to return a uniquely identifiable MAC; the unicast
+ // address returned is the one that is *currently* in use to filter unicast frames, or that
+ // identifies the device on a link it's *currently* on. Users of this API must not rely on the
+ // stability or uniqueness of the returned value to identify or disambiguate device instances.
+ //
+ // - response `address` device's unicast MAC address.
+ GetUnicastAddress(ctx_ _bindings.Context) (fuchsianet.MacAddress, error)
+ // Sets requested operating mode of this device to `mode`.
+ //
+ // The requested mode is attached to the current client connection to the device. Because
+ // multiple clients can be attached to the same device at once, the mode with the least
+ // restrictions is the one actively put into effect into the underlying device implementation.
+ //
+ // If the device does not support the requested mode, but supports a mode that is more open
+ // than the requested one, `SetMode` succeeds regardless. Otherwise, if the device only
+ // supports *more restrictive* modes than the one requested, `SetMode` returns
+ // `ZX_ERR_NOT_SUPPORTED`.
+ //
+ // Clients must be aware that the resource being accessed is shared, and that the device may be
+ // effectively operating at a more open level than the one that was requested (although never
+ // at one more restrictive).
+ //
+ // + request `mode` request mode to attach to.
+ // - response `status` `ZX_ERR_NOT_SUPPORTED` it the device only supports mode more restrictive
+ // than the one requested.
+ SetMode(ctx_ _bindings.Context, mode MacFilterMode) (int32, error)
+ // Adds multicast address to the list of multicast groups.
+ //
+ // The list of multicast addresses kept is untouched by calls to `SetMode`. If the device's
+ // mode is not `MULTICAST_FILTER`, the list of multicast addresses is ignored.
+ //
+ // + request `address` multicast address to add to the list.
+ // - response `status` `ZX_ERR_INVALID_ARGS` if `address` is not a multicast address.
+ AddMulticastAddress(ctx_ _bindings.Context, address fuchsianet.MacAddress) (int32, error)
+ // Removes multicast address from the list of multicast groups.
+ //
+ // + request `address` multicast address to remove from the list.
+ // - response `status` `ZX_ERR_INVALID_ARGS` if `address` is not a multicast address.
+ RemoveMulticastAddress(ctx_ _bindings.Context, address fuchsianet.MacAddress) (int32, error)
+}
+
+type MacAddressingWithCtxTransitionalBase struct{}
+
+type MacAddressingWithCtxInterfaceRequest _bindings.InterfaceRequest
+
+func NewMacAddressingWithCtxInterfaceRequest() (MacAddressingWithCtxInterfaceRequest, *MacAddressingWithCtxInterface, error) {
+ req, cli, err := _bindings.NewInterfaceRequest()
+ return MacAddressingWithCtxInterfaceRequest(req), (*MacAddressingWithCtxInterface)(cli), err
+}
+
+type MacAddressingWithCtxStub struct {
+ Impl MacAddressingWithCtx
+}
+
+func (s_ *MacAddressingWithCtxStub) Dispatch(args_ _bindings.DispatchArgs) (_bindings.Message, bool, error) {
+ switch args_.Ordinal {
+ case MacAddressingGetUnicastAddressOrdinal:
+ address, err_ := s_.Impl.GetUnicastAddress(args_.Ctx)
+ out_ := macAddressingWithCtxGetUnicastAddressResponse{}
+ out_.Address = address
+ return &out_, true, err_
+ case MacAddressingSetModeOrdinal:
+ in_ := macAddressingWithCtxSetModeRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ status, err_ := s_.Impl.SetMode(args_.Ctx, in_.Mode)
+ out_ := macAddressingWithCtxSetModeResponse{}
+ out_.Status = status
+ return &out_, true, err_
+ case MacAddressingAddMulticastAddressOrdinal:
+ in_ := macAddressingWithCtxAddMulticastAddressRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ status, err_ := s_.Impl.AddMulticastAddress(args_.Ctx, in_.Address)
+ out_ := macAddressingWithCtxAddMulticastAddressResponse{}
+ out_.Status = status
+ return &out_, true, err_
+ case MacAddressingRemoveMulticastAddressOrdinal:
+ in_ := macAddressingWithCtxRemoveMulticastAddressRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ status, err_ := s_.Impl.RemoveMulticastAddress(args_.Ctx, in_.Address)
+ out_ := macAddressingWithCtxRemoveMulticastAddressResponse{}
+ out_.Status = status
+ return &out_, true, err_
+ }
+ return nil, false, _bindings.ErrUnknownOrdinal
+}
+
+type MacAddressingEventProxy _bindings.ChannelProxy
+
+const (
+ StatusWatcherWatchStatusOrdinal uint64 = 0x1369a8125c0862b9
+)
+
+type StatusWatcherWithCtxInterface _bindings.ChannelProxy
+
+// `WatchStatus` blocks until the port's status has changed.
+//
+// The first call to `WatchStatus` returns immediately with the current port status, subsequent
+// calls complete when the port status differs from the last one that was returned through this
+// `StatusWatcher`.
+//
+// If `StatusWatcher` was created with a buffer value larger than 1, `WatchStatus` may return a
+// queued status change, depending on how many status changed happened since the last call to
+// `WatchStatus`.
+//
+// - response `device_status` the most recent port status.
+func (p *StatusWatcherWithCtxInterface) WatchStatus(ctx_ _bindings.Context) (PortStatus, error) {
+ var req_ _bindings.Message
+ resp_ := &statusWatcherWithCtxWatchStatusResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StatusWatcherWatchStatusOrdinal, req_, resp_)
+ return resp_.PortStatus, err_
+}
+
+// Provides a way to receive updates on port status changes.
+type StatusWatcherWithCtx interface {
+ // `WatchStatus` blocks until the port's status has changed.
+ //
+ // The first call to `WatchStatus` returns immediately with the current port status, subsequent
+ // calls complete when the port status differs from the last one that was returned through this
+ // `StatusWatcher`.
+ //
+ // If `StatusWatcher` was created with a buffer value larger than 1, `WatchStatus` may return a
+ // queued status change, depending on how many status changed happened since the last call to
+ // `WatchStatus`.
+ //
+ // - response `device_status` the most recent port status.
+ WatchStatus(ctx_ _bindings.Context) (PortStatus, error)
+}
+
+type StatusWatcherWithCtxTransitionalBase struct{}
+
+type StatusWatcherWithCtxInterfaceRequest _bindings.InterfaceRequest
+
+func NewStatusWatcherWithCtxInterfaceRequest() (StatusWatcherWithCtxInterfaceRequest, *StatusWatcherWithCtxInterface, error) {
+ req, cli, err := _bindings.NewInterfaceRequest()
+ return StatusWatcherWithCtxInterfaceRequest(req), (*StatusWatcherWithCtxInterface)(cli), err
+}
+
+type StatusWatcherWithCtxStub struct {
+ Impl StatusWatcherWithCtx
+}
+
+func (s_ *StatusWatcherWithCtxStub) Dispatch(args_ _bindings.DispatchArgs) (_bindings.Message, bool, error) {
+ switch args_.Ordinal {
+ case StatusWatcherWatchStatusOrdinal:
+ portStatus, err_ := s_.Impl.WatchStatus(args_.Ctx)
+ out_ := statusWatcherWithCtxWatchStatusResponse{}
+ out_.PortStatus = portStatus
+ return &out_, true, err_
+ }
+ return nil, false, _bindings.ErrUnknownOrdinal
+}
+
+type StatusWatcherEventProxy _bindings.ChannelProxy
+
+const (
+ PortGetInfoOrdinal uint64 = 0x276cf65feb554ebd
+ PortGetStatusOrdinal uint64 = 0x4235650aacca60b2
+ PortGetStatusWatcherOrdinal uint64 = 0x65511ab81c1bd8d4
+ PortGetMacOrdinal uint64 = 0x2c6ec2988aefc0f6
+)
+
+type PortWithCtxInterface _bindings.ChannelProxy
+
+// Obtain information about port.
+//
+// - response `info` port information.
+func (p *PortWithCtxInterface) GetInfo(ctx_ _bindings.Context) (PortInfo, error) {
+ var req_ _bindings.Message
+ resp_ := &portWithCtxGetInfoResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(PortGetInfoOrdinal, req_, resp_)
+ return resp_.Info, err_
+}
+
+// Obtain the operating port status.
+//
+// - response `status` snapshot of port's current status.
+func (p *PortWithCtxInterface) GetStatus(ctx_ _bindings.Context) (PortStatus, error) {
+ var req_ _bindings.Message
+ resp_ := &portWithCtxGetStatusResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(PortGetStatusOrdinal, req_, resp_)
+ return resp_.Status, err_
+}
+
+// Connects to a [`StatusWatcher`] to observe port status changes.
+//
+// + request `watcher` handle to the status watcher.
+// + request `buffer` the number of status changes that the client requests to be stored by
+// `StatusWatcher`. Values are capped at [`MAX_STATUS_BUFFER`]. A value of 0 or 1 causes the
+// `StatusWatcher` to not keep any buffers on status changed. Clients that need to observe all
+// changes to status (as opposed to only the current state) are encouraged to set a buffer
+// value larger than 1, so that all edges can be observed. If `StatusWatcher`'s internal queue
+// is filled and new status changes occur, the oldest samples will be dropped to make room for
+// new ones.
+func (p *PortWithCtxInterface) GetStatusWatcher(ctx_ _bindings.Context, watcher StatusWatcherWithCtxInterfaceRequest, buffer uint32) error {
+ req_ := &portWithCtxGetStatusWatcherRequest{
+ Watcher: watcher,
+ Buffer: buffer,
+ }
+ err_ := ((*_bindings.ChannelProxy)(p)).Send(PortGetStatusWatcherOrdinal, req_)
+ return err_
+}
+
+// Connects to a [`MacAddressing`] associated with the port.
+//
+// + request `mac` mac handle. Closed with `ZX_ERR_NOT_SUPPORTED` if this port does not support
+// mac addressing.
+func (p *PortWithCtxInterface) GetMac(ctx_ _bindings.Context, mac MacAddressingWithCtxInterfaceRequest) error {
+ req_ := &portWithCtxGetMacRequest{
+ Mac: mac,
+ }
+ err_ := ((*_bindings.ChannelProxy)(p)).Send(PortGetMacOrdinal, req_)
+ return err_
+}
+
+// A logical port belonging to a [`Device`].
+type PortWithCtx interface {
+ // Obtain information about port.
+ //
+ // - response `info` port information.
+ GetInfo(ctx_ _bindings.Context) (PortInfo, error)
+ // Obtain the operating port status.
+ //
+ // - response `status` snapshot of port's current status.
+ GetStatus(ctx_ _bindings.Context) (PortStatus, error)
+ // Connects to a [`StatusWatcher`] to observe port status changes.
+ //
+ // + request `watcher` handle to the status watcher.
+ // + request `buffer` the number of status changes that the client requests to be stored by
+ // `StatusWatcher`. Values are capped at [`MAX_STATUS_BUFFER`]. A value of 0 or 1 causes the
+ // `StatusWatcher` to not keep any buffers on status changed. Clients that need to observe all
+ // changes to status (as opposed to only the current state) are encouraged to set a buffer
+ // value larger than 1, so that all edges can be observed. If `StatusWatcher`'s internal queue
+ // is filled and new status changes occur, the oldest samples will be dropped to make room for
+ // new ones.
+ GetStatusWatcher(ctx_ _bindings.Context, watcher StatusWatcherWithCtxInterfaceRequest, buffer uint32) error
+ // Connects to a [`MacAddressing`] associated with the port.
+ //
+ // + request `mac` mac handle. Closed with `ZX_ERR_NOT_SUPPORTED` if this port does not support
+ // mac addressing.
+ GetMac(ctx_ _bindings.Context, mac MacAddressingWithCtxInterfaceRequest) error
+}
+
+type PortWithCtxTransitionalBase struct{}
+
+type PortWithCtxInterfaceRequest _bindings.InterfaceRequest
+
+func NewPortWithCtxInterfaceRequest() (PortWithCtxInterfaceRequest, *PortWithCtxInterface, error) {
+ req, cli, err := _bindings.NewInterfaceRequest()
+ return PortWithCtxInterfaceRequest(req), (*PortWithCtxInterface)(cli), err
+}
+
+type PortWithCtxStub struct {
+ Impl PortWithCtx
+}
+
+func (s_ *PortWithCtxStub) Dispatch(args_ _bindings.DispatchArgs) (_bindings.Message, bool, error) {
+ switch args_.Ordinal {
+ case PortGetInfoOrdinal:
+ info, err_ := s_.Impl.GetInfo(args_.Ctx)
+ out_ := portWithCtxGetInfoResponse{}
+ out_.Info = info
+ return &out_, true, err_
+ case PortGetStatusOrdinal:
+ status, err_ := s_.Impl.GetStatus(args_.Ctx)
+ out_ := portWithCtxGetStatusResponse{}
+ out_.Status = status
+ return &out_, true, err_
+ case PortGetStatusWatcherOrdinal:
+ in_ := portWithCtxGetStatusWatcherRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ err_ := s_.Impl.GetStatusWatcher(args_.Ctx, in_.Watcher, in_.Buffer)
+ return nil, false, err_
+ case PortGetMacOrdinal:
+ in_ := portWithCtxGetMacRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ err_ := s_.Impl.GetMac(args_.Ctx, in_.Mac)
+ return nil, false, err_
+ }
+ return nil, false, _bindings.ErrUnknownOrdinal
+}
+
+type PortEventProxy _bindings.ChannelProxy
+
+const (
+ SessionAttachOrdinal uint64 = 0x1e89c9013e201379
+ SessionDetachOrdinal uint64 = 0x68c40cf8fb549867
+ SessionCloseOrdinal uint64 = 0x393d5070394a92f6
+)
+
+type SessionWithCtxInterface _bindings.ChannelProxy
+
+// Attaches the session to `port`.
+//
+// Once attached, the session starts to receive the subscribed frames over the data FIFOs and
+// it may send frames destined to the specified `port`.
+//
+// + request `port` port to subscribe to.
+// + request `fx_frames` Frame types of interest on the port.
+// * error `ZX_ERR_NOT_FOUND` if `port` is not valid.
+// * error `ZX_ERR_INVALID_ARGS` if `rx_frames` is not a subset of the port's supported frames.
+// * error `ZX_ERR_ALREADY_BOUND` if `port` is already attached.
+func (p *SessionWithCtxInterface) Attach(ctx_ _bindings.Context, port uint8, rxFrames []FrameType) (SessionAttachResult, error) {
+ req_ := &sessionWithCtxAttachRequest{
+ Port: port,
+ RxFrames: rxFrames,
+ }
+ resp_ := &sessionWithCtxAttachResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(SessionAttachOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Detaches the session from `port`.
+//
+// Once detached, the session stops receiving frames from `port`. Frames sent to a detached
+// port may be returned with an error. It is not necessary to call `Detach` on ports that are
+// removed from the device, doing so causes `ZX_ERR_NOT_FOUND` to be returned.
+//
+// + request `port` port to subscribe to.
+// * error `ZX_ERR_NOT_FOUND` if the session is not currently attached to the port.
+func (p *SessionWithCtxInterface) Detach(ctx_ _bindings.Context, port uint8) (SessionDetachResult, error) {
+ req_ := &sessionWithCtxDetachRequest{
+ Port: port,
+ }
+ resp_ := &sessionWithCtxDetachResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(SessionDetachOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Cleanly closes a session.
+//
+// This will cause the session to send a `ZX_ERR_CANCELLED` epitaph and proceed to close the
+// Session channel. Clients may only assume that they own all the buffers that are currently
+// owned by the session (sent over either the rx or tx FIFOs) once the epitaph is received.
+// Closing the rx or tx FIFO is equivalent to calling `Close`.
+func (p *SessionWithCtxInterface) Close(ctx_ _bindings.Context) error {
+ var req_ _bindings.Message
+ err_ := ((*_bindings.ChannelProxy)(p)).Send(SessionCloseOrdinal, req_)
+ return err_
+}
+
+// Represents a session with a Network device.
+//
+// A session has a data plane and a control plane. The `Session` protocol represents the control
+// plane of the session and the FIFOs and VMOs exchanged during the [`Device.OpenSession`] call are
+// the data plane. Lifetime of the session is controlled by a `Session` protocol handle.
+//
+// Sessions must attach to ports of interest to start receiving and sending data. Sessions are
+// always created with no ports attached.
+//
+// If a port is destroyed from the underlying device, it is automatically detached from the
+// session.
+//
+// The session is closed with an error epitaph if an invalid buffer descriptor is sent over either
+// the tx or rx FIFOs. Invalid descriptors include:
+// - Descriptor index larger than [`SessionInfo.descriptor_count`].
+// - Descriptor chains larger than [`MAX_DESCRIPTOR_CHAIN`].
+// - rx buffers smaller than [`Info.min_rx_buffer_length`].
+// - tx buffers smaller than [`Info.min_tx_buffer_length`].
+// - tx buffers not respecting [`Info.min_tx_buffer_head`] or [`Info.min_tx_buffer_tail`].
+type SessionWithCtx interface {
+ // Attaches the session to `port`.
+ //
+ // Once attached, the session starts to receive the subscribed frames over the data FIFOs and
+ // it may send frames destined to the specified `port`.
+ //
+ // + request `port` port to subscribe to.
+ // + request `fx_frames` Frame types of interest on the port.
+ // * error `ZX_ERR_NOT_FOUND` if `port` is not valid.
+ // * error `ZX_ERR_INVALID_ARGS` if `rx_frames` is not a subset of the port's supported frames.
+ // * error `ZX_ERR_ALREADY_BOUND` if `port` is already attached.
+ Attach(ctx_ _bindings.Context, port uint8, rxFrames []FrameType) (SessionAttachResult, error)
+ // Detaches the session from `port`.
+ //
+ // Once detached, the session stops receiving frames from `port`. Frames sent to a detached
+ // port may be returned with an error. It is not necessary to call `Detach` on ports that are
+ // removed from the device, doing so causes `ZX_ERR_NOT_FOUND` to be returned.
+ //
+ // + request `port` port to subscribe to.
+ // * error `ZX_ERR_NOT_FOUND` if the session is not currently attached to the port.
+ Detach(ctx_ _bindings.Context, port uint8) (SessionDetachResult, error)
+ // Cleanly closes a session.
+ //
+ // This will cause the session to send a `ZX_ERR_CANCELLED` epitaph and proceed to close the
+ // Session channel. Clients may only assume that they own all the buffers that are currently
+ // owned by the session (sent over either the rx or tx FIFOs) once the epitaph is received.
+ // Closing the rx or tx FIFO is equivalent to calling `Close`.
+ Close(ctx_ _bindings.Context) error
+}
+
+type SessionWithCtxTransitionalBase struct{}
+
+type SessionWithCtxInterfaceRequest _bindings.InterfaceRequest
+
+func NewSessionWithCtxInterfaceRequest() (SessionWithCtxInterfaceRequest, *SessionWithCtxInterface, error) {
+ req, cli, err := _bindings.NewInterfaceRequest()
+ return SessionWithCtxInterfaceRequest(req), (*SessionWithCtxInterface)(cli), err
+}
+
+type SessionWithCtxStub struct {
+ Impl SessionWithCtx
+}
+
+func (s_ *SessionWithCtxStub) Dispatch(args_ _bindings.DispatchArgs) (_bindings.Message, bool, error) {
+ switch args_.Ordinal {
+ case SessionAttachOrdinal:
+ in_ := sessionWithCtxAttachRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.Attach(args_.Ctx, in_.Port, in_.RxFrames)
+ out_ := sessionWithCtxAttachResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case SessionDetachOrdinal:
+ in_ := sessionWithCtxDetachRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.Detach(args_.Ctx, in_.Port)
+ out_ := sessionWithCtxDetachResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case SessionCloseOrdinal:
+ err_ := s_.Impl.Close(args_.Ctx)
+ return nil, false, err_
+ }
+ return nil, false, _bindings.ErrUnknownOrdinal
+}
+
+type SessionEventProxy _bindings.ChannelProxy
diff --git a/src/syscall/zx/internal/context/context.go b/src/syscall/zx/internal/context/context.go
new file mode 100644
index 0000000..c51e5e2
--- /dev/null
+++ b/src/syscall/zx/internal/context/context.go
@@ -0,0 +1,204 @@
+// 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.
+
+// This is a copy of context.Context with all dependencies on "time" and "fmt"
+// removed in order to avoid a dependency cycle.
+//
+// TODO(fxb/43246) Break the dependency cycle when using context.Context and
+// use that instead.
+
+package context
+
+import (
+ "errors"
+ "reflect"
+ "sync"
+)
+
+type Context interface {
+ Done() <-chan struct{}
+
+ Err() error
+
+ Value(key interface{}) interface{}
+}
+
+var Canceled = errors.New("context canceled")
+
+type emptyCtx int
+
+func (*emptyCtx) Done() <-chan struct{} {
+ return nil
+}
+
+func (*emptyCtx) Err() error {
+ return nil
+}
+
+func (*emptyCtx) Value(key interface{}) interface{} {
+ return nil
+}
+
+var (
+ background = new(emptyCtx)
+ todo = new(emptyCtx)
+)
+
+func Background() Context {
+ return background
+}
+
+func TODO() Context {
+ return todo
+}
+
+type CancelFunc func()
+
+func WithCancel(parent Context) (ctx Context, cancel CancelFunc) {
+ c := newCancelCtx(parent)
+ propagateCancel(parent, &c)
+ return &c, func() { c.cancel(true, Canceled) }
+}
+
+func newCancelCtx(parent Context) cancelCtx {
+ return cancelCtx{Context: parent}
+}
+
+func propagateCancel(parent Context, child canceler) {
+ if parent.Done() == nil {
+ return // parent is never canceled
+ }
+ if p, ok := parentCancelCtx(parent); ok {
+ p.mu.Lock()
+ if p.err != nil {
+ // parent has already been canceled
+ child.cancel(false, p.err)
+ } else {
+ if p.children == nil {
+ p.children = make(map[canceler]struct{})
+ }
+ p.children[child] = struct{}{}
+ }
+ p.mu.Unlock()
+ } else {
+ go func() {
+ select {
+ case <-parent.Done():
+ child.cancel(false, parent.Err())
+ case <-child.Done():
+ }
+ }()
+ }
+}
+
+func parentCancelCtx(parent Context) (*cancelCtx, bool) {
+ for {
+ switch c := parent.(type) {
+ case *cancelCtx:
+ return c, true
+ case *valueCtx:
+ parent = c.Context
+ default:
+ return nil, false
+ }
+ }
+}
+
+func removeChild(parent Context, child canceler) {
+ p, ok := parentCancelCtx(parent)
+ if !ok {
+ return
+ }
+ p.mu.Lock()
+ if p.children != nil {
+ delete(p.children, child)
+ }
+ p.mu.Unlock()
+}
+
+type canceler interface {
+ cancel(removeFromParent bool, err error)
+ Done() <-chan struct{}
+}
+
+var closedchan = make(chan struct{})
+
+func init() {
+ close(closedchan)
+}
+
+type cancelCtx struct {
+ Context
+
+ mu sync.Mutex
+ done chan struct{}
+ children map[canceler]struct{}
+ err error
+}
+
+func (c *cancelCtx) Done() <-chan struct{} {
+ c.mu.Lock()
+ if c.done == nil {
+ c.done = make(chan struct{})
+ }
+ d := c.done
+ c.mu.Unlock()
+ return d
+}
+
+func (c *cancelCtx) Err() error {
+ c.mu.Lock()
+ err := c.err
+ c.mu.Unlock()
+ return err
+}
+
+func (c *cancelCtx) cancel(removeFromParent bool, err error) {
+ if err == nil {
+ panic("context: internal error: missing cancel error")
+ }
+ c.mu.Lock()
+ if c.err != nil {
+ c.mu.Unlock()
+ return // already canceled
+ }
+ c.err = err
+ if c.done == nil {
+ c.done = closedchan
+ } else {
+ close(c.done)
+ }
+ for child := range c.children {
+ // NOTE: acquiring the child's lock while holding parent's lock.
+ child.cancel(false, err)
+ }
+ c.children = nil
+ c.mu.Unlock()
+
+ if removeFromParent {
+ removeChild(c.Context, c)
+ }
+}
+
+func WithValue(parent Context, key, val interface{}) Context {
+ if key == nil {
+ panic("nil key")
+ }
+ if !reflect.TypeOf(key).Comparable() {
+ panic("key is not comparable")
+ }
+ return &valueCtx{parent, key, val}
+}
+
+type valueCtx struct {
+ Context
+ key, val interface{}
+}
+
+func (c *valueCtx) Value(key interface{}) interface{} {
+ if c.key == key {
+ return c.val
+ }
+ return c.Context.Value(key)
+}
diff --git a/src/syscall/zx/io/impl.go b/src/syscall/zx/io/impl.go
new file mode 100644
index 0000000..3e6b6b5
--- /dev/null
+++ b/src/syscall/zx/io/impl.go
@@ -0,0 +1,5188 @@
+// Copyright 2018 The Fuchsia Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// Code generated by third_party/go/regen-fidl; DO NOT EDIT.
+
+package io
+
+import (
+ _zx "syscall/zx"
+ _bindings "syscall/zx/fidl"
+ fuchsiaio2 "syscall/zx/io2"
+ fuchsiamem "syscall/zx/mem"
+)
+
+const (
+ // Indicates the file is ready for reading.
+ FileSignalReadable uint32 = 16777216
+ // Indicates the file is ready for writing.
+ FileSignalWritable uint32 = 33554432
+ // Indicates the device is ready for reading.
+ DeviceSignalReadable uint32 = 16777216
+ // Indicates an out-of-band state transition has occurred.
+ DeviceSignalOob uint32 = 33554432
+ // Indicates the device is ready for writing.
+ DeviceSignalWritable uint32 = 67108864
+ // Indicates the device has encountered an error state.
+ DeviceSignalError uint32 = 134217728
+ // Indicates the device has hung up on the current connection.
+ DeviceSignalHangup uint32 = 268435456
+ // Can read from target object.
+ OpenRightReadable uint32 = 1
+ // Can write to target object.
+ OpenRightWritable uint32 = 2
+ // Connection can mount/umount filesystem.
+ OpenRightAdmin uint32 = 4
+ // Connection can map target object executable.
+ OpenRightExecutable uint32 = 8
+ // Create the object if it doesn't exist.
+ OpenFlagCreate uint32 = 65536
+ // (with Create) Fail if the object already exists.
+ OpenFlagCreateIfAbsent uint32 = 131072
+ // Truncate the object before usage.
+ OpenFlagTruncate uint32 = 262144
+ // Assert that the object to be opened is a directory.
+ // Return an error if the target object is not a directory.
+ OpenFlagDirectory uint32 = 524288
+ // Seek to the end of the object before all writes.
+ OpenFlagAppend uint32 = 1048576
+ // If the object is a mount point, open the local directory.
+ OpenFlagNoRemote uint32 = 2097152
+ // Open a reference to the object, not the object itself.
+ // It is ONLY valid to pass the following flags together with `OPEN_FLAG_NODE_REFERENCE`:
+ // - `OPEN_FLAG_DIRECTORY`
+ // - `OPEN_FLAG_NOT_DIRECTORY`
+ // - `OPEN_FLAG_DESCRIBE`
+ // otherwise an error is returned.
+ // If an object is opened or cloned using this method, the resulting connection does not carry
+ // any permission flags.
+ // The resulting node allows a limited set of operations: `GetAttr`, `Clone`, `Close`, `Describe`,
+ // and, if the node is a file, these extra operations: `GetFlags`, `SetFlags`.
+ OpenFlagNodeReference uint32 = 4194304
+ // Binary OR of `OPEN_FLAG_DIRECTORY`, OPEN_FLAG_NOT_DIRECTORY, OPEN_FLAG_DESCRIBE, and
+ // `OPEN_FLAG_NODE_REFERENCE`. Flags used when opening a node reference must fall within this mask.
+ OpenFlagsAllowedWithNodeReference uint32 = 46661632
+ // Requests that an "OnOpen" event is sent to the interface request.
+ // The event will contain a non-null NodeInfo if the open/clone is successful.
+ OpenFlagDescribe uint32 = 8388608
+ // Specify this flag to request POSIX-compatibility. Currently, it affects permission handling.
+ // During Open:
+ // - If the target path is a directory, the rights on the new connection expand to include
+ // `OPEN_RIGHT_WRITABLE` if and only if the current connection and all intermediate mount points
+ // are writable, and to include `OPEN_RIGHT_EXECUTABLE` if and only if the current connection and
+ // all intermediate mount points are executable.
+ // - Otherwise, this flag is ignored. It is an access denied error to request more rights
+ // than those on the current connection, or any intermediate mount points.
+ //
+ // If the posix compatibility flag is not specified, opening always uses the requested rights,
+ // failing the operation with access denied error if requested rights exceeds the rights attached
+ // to the current connection.
+ //
+ // If the requesting connection is read-only and the requested rights are read-only, the flag
+ // may be ignored by the server, and is not forwarded downstream. This is an implementation detail,
+ // necessary to enforce hierarchical permissions across mount points, and should have no effect
+ // on the expected behavior for clients.
+ OpenFlagPosix uint32 = 16777216
+ // Assert that the object to be opened is not a directory.
+ // Return an error if the target object is a directory.
+ OpenFlagNotDirectory uint32 = 33554432
+ // When used during clone, the new connection inherits the rights on the source connection,
+ // regardless if it is a file or directory. Otherwise, clone attempts to use the requested rights.
+ // It is invalid to pass any of the `OPEN_RIGHT_*` flags together with `CLONE_FLAG_SAME_RIGHTS`.
+ CloneFlagSameRights uint32 = 67108864
+ // Bits reserved for posix protections. Native fuchsia filesystems
+ // are not required to set bits contained within `MODE_PROTECTION_MASK`,
+ // but filesystems that wish to do so may refer to sys/stat.h for their
+ // definitions.
+ ModeProtectionMask uint32 = 4095
+ // Bits indicating node type. The canonical mechanism to check
+ // for a node type is to take 'mode', bitwise AND it with the
+ // `MODE_TYPE_MASK`, and check exact equality against a mode type.
+ ModeTypeMask uint32 = 1044480
+ ModeTypeDirectory uint32 = 16384
+ ModeTypeBlockDevice uint32 = 24576
+ ModeTypeFile uint32 = 32768
+ ModeTypeSocket uint32 = 49152
+ ModeTypeService uint32 = 65536
+ // The maximal buffer size which can be transmitted for buffered operations.
+ // This capacity is currently set somewhat arbitrarily.
+ MaxBuf uint64 = 8192
+ // The maximum length, in bytes, of a filesystem string.
+ MaxPath uint64 = 4096
+ // The maximum length, in bytes, of a single filesystem component.
+ MaxFilename uint64 = 255
+ // The fields of 'attributes' which are used to update the Node are indicated
+ // by the 'flags' argument.
+ NodeAttributeFlagCreationTime uint32 = 1
+ NodeAttributeFlagModificationTime uint32 = 2
+ // Requests that the VMO be readable.
+ VmoFlagRead uint32 = 1
+ // Requests that the VMO be writable.
+ VmoFlagWrite uint32 = 2
+ // Requests that the VMO be executable.
+ VmoFlagExec uint32 = 4
+ // Require a copy-on-write clone of the underlying VMO.
+ // The request should fail if the VMO is not cloned.
+ // May not be supplied with fuchsia_io_`VMO_FLAG_EXACT`.
+ VmoFlagPrivate uint32 = 65536
+ // Require an exact (non-cloned) handle to the underlying VMO.
+ // The request should fail if a handle to the exact VMO is not returned.
+ // May not be supplied with `VMO_FLAG_PRIVATE`.
+ VmoFlagExact uint32 = 131072
+ // A dirent with an unknown type.
+ DirentTypeUnknown uint8 = 0
+ // A dirent representing a directory object.
+ DirentTypeDirectory uint8 = 4
+ // A dirent representing a block device object.
+ DirentTypeBlockDevice uint8 = 6
+ // A dirent representing a file object.
+ DirentTypeFile uint8 = 8
+ // A dirent representing a socket object.
+ DirentTypeSocket uint8 = 12
+ // A dirent representing a service object.
+ DirentTypeService uint8 = 16
+ // Nodes which do not have ino values should return this value
+ // from Readdir and GetAttr.
+ InoUnknown uint64 = 18446744073709551615
+ // Indicates the directory being watched has been deleted.
+ WatchEventDeleted uint8 = 0
+ // Indicates a node has been created (either new or moved) into a directory.
+ WatchEventAdded uint8 = 1
+ // Identifies a node has been removed (either deleted or moved) from the directory.
+ WatchEventRemoved uint8 = 2
+ // Identifies a node already existed in the directory when watching started.
+ WatchEventExisting uint8 = 3
+ // Identifies that no more `WATCH_EVENT_EXISTING` events will be sent.
+ WatchEventIdle uint8 = 4
+ // Used by `Directory.Watch`. Requests transmission of `WATCH_EVENT_DELETED`.
+ WatchMaskDeleted uint32 = 1
+ // Used by `Directory.Watch`. Requests transmission of `WATCH_EVENT_ADDED`.
+ WatchMaskAdded uint32 = 2
+ // Used by `Directory.Watch`. Requests transmission of `WATCH_EVENT_REMOVED`.
+ WatchMaskRemoved uint32 = 4
+ // Used by `Directory.Watch`. Requests transmission of `WATCH_EVENT_EXISTING`.
+ WatchMaskExisting uint32 = 8
+ // Used by `Directory.Watch`. Requests transmission of `WATCH_EVENT_IDLE`.
+ WatchMaskIdle uint32 = 16
+ // Used by `Directory.Watch`. Requests transmission of all watcher events.
+ WatchMaskAll uint32 = 31
+ MountCreateFlagReplace uint32 = 1
+ MaxFsNameBuffer uint64 = 32
+)
+
+var _ _bindings.Enum = SeekOrigin(0)
+
+// Update the Seek offset.
+type SeekOrigin uint32
+
+const (
+
+ // Seek from the start of the file.
+ SeekOriginStart SeekOrigin = 0
+
+ // Seek from the current position in the file.
+ SeekOriginCurrent SeekOrigin = 1
+
+ // Seek from the end of the file.
+ SeekOriginEnd SeekOrigin = 2
+)
+
+func (_ SeekOrigin) I_EnumValues() []SeekOrigin {
+ return []SeekOrigin{
+ SeekOriginStart,
+ SeekOriginCurrent,
+ SeekOriginEnd,
+ }
+}
+
+func (_ SeekOrigin) I_EnumIsStrict() bool {
+ return true
+}
+
+func (x SeekOrigin) IsUnknown() bool {
+ switch x {
+ case 0:
+ return true
+ case 1:
+ return true
+ case 2:
+ return true
+ default:
+ return false
+ }
+}
+
+func (x SeekOrigin) String() string {
+ switch x {
+ case 0:
+ return "Start"
+ case 1:
+ return "Current"
+ case 2:
+ return "End"
+ }
+ return "Unknown"
+}
+
+type DirectoryUnlink2Response struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mDirectoryUnlink2Response = _bindings.CreateLazyMarshaler(DirectoryUnlink2Response{})
+
+func (msg *DirectoryUnlink2Response) Marshaler() _bindings.Marshaler {
+ return _mDirectoryUnlink2Response
+}
+
+type DirectoryRename2Response struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mDirectoryRename2Response = _bindings.CreateLazyMarshaler(DirectoryRename2Response{})
+
+func (msg *DirectoryRename2Response) Marshaler() _bindings.Marshaler {
+ return _mDirectoryRename2Response
+}
+
+// A [`NodeInfo`] variant.
+type Service struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mService = _bindings.CreateLazyMarshaler(Service{})
+
+func (msg *Service) Marshaler() _bindings.Marshaler {
+ return _mService
+}
+
+// A [`NodeInfo`] variant.
+type FileObject struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"4" fidl_size_v2:"8" fidl_alignment_v2:"4"`
+ // An optional event which transmits information about an object's readability
+ // or writability. This event relays information about the underlying object, not
+ // the capability granted to client: this event may be signalled "readable" on a
+ // connection that does not have the capability to read.
+ //
+ // The "`FILE_SIGNAL_`" values may be observed on this event.
+ Event _zx.Event `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_handle_subtype:"5" fidl_handle_rights:"2147483648" fidl_bounds:"1"`
+ // A placeholder for future stream support.
+ //
+ // Currently, servers are required not to send a handle in this field.
+ Stream _zx.Handle `fidl_offset_v1:"4" fidl_offset_v2:"4" fidl_handle_subtype:"31" fidl_handle_rights:"2147483648" fidl_bounds:"1"`
+}
+
+var _mFileObject = _bindings.CreateLazyMarshaler(FileObject{})
+
+func (msg *FileObject) Marshaler() _bindings.Marshaler {
+ return _mFileObject
+}
+
+// A [`NodeInfo`] variant.
+type DirectoryObject struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mDirectoryObject = _bindings.CreateLazyMarshaler(DirectoryObject{})
+
+func (msg *DirectoryObject) Marshaler() _bindings.Marshaler {
+ return _mDirectoryObject
+}
+
+// A [`NodeInfo`] variant.
+type Pipe struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"4" fidl_alignment_v1:"4" fidl_size_v2:"4" fidl_alignment_v2:"4"`
+ Socket _zx.Socket `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_handle_subtype:"14" fidl_handle_rights:"2147483648" fidl_bounds:"0"`
+}
+
+var _mPipe = _bindings.CreateLazyMarshaler(Pipe{})
+
+func (msg *Pipe) Marshaler() _bindings.Marshaler {
+ return _mPipe
+}
+
+// A [`NodeInfo`] variant.
+type Vmofile struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"24" fidl_alignment_v2:"8"`
+ // The VMO which backs this file.
+ Vmo _zx.VMO `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_handle_subtype:"3" fidl_handle_rights:"2147483648" fidl_bounds:"0"`
+ // The index into `vmo` which represents the first byte of the file.
+ Offset uint64 `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+ // The number of bytes, starting at `offset`, which may be used to represent this file.
+ Length uint64 `fidl_offset_v1:"16" fidl_offset_v2:"16"`
+}
+
+var _mVmofile = _bindings.CreateLazyMarshaler(Vmofile{})
+
+func (msg *Vmofile) Marshaler() _bindings.Marshaler {
+ return _mVmofile
+}
+
+// A [`NodeInfo`] variant.
+type Device struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"4" fidl_alignment_v1:"4" fidl_size_v2:"4" fidl_alignment_v2:"4"`
+ // An optional event which transmits information about a device's state.
+ //
+ // The "`DEVICE_SIGNAL_`" values may be observed on this event.
+ Event _zx.Handle `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_handle_subtype:"16" fidl_handle_rights:"2147483648" fidl_bounds:"1"`
+}
+
+var _mDevice = _bindings.CreateLazyMarshaler(Device{})
+
+func (msg *Device) Marshaler() _bindings.Marshaler {
+ return _mDevice
+}
+
+// A [`NodeInfo`] variant.
+type Tty struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"4" fidl_alignment_v1:"4" fidl_size_v2:"4" fidl_alignment_v2:"4"`
+ Event _zx.Handle `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_handle_subtype:"16" fidl_handle_rights:"2147483648" fidl_bounds:"1"`
+}
+
+var _mTty = _bindings.CreateLazyMarshaler(Tty{})
+
+func (msg *Tty) Marshaler() _bindings.Marshaler {
+ return _mTty
+}
+
+// A [`NodeInfo`] variant.
+type DatagramSocket struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"4" fidl_alignment_v1:"4" fidl_size_v2:"4" fidl_alignment_v2:"4"`
+ // See [`fuchsia.posix.socket.DatagramSocket`] for details.
+ Event _zx.Handle `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_handle_subtype:"16" fidl_handle_rights:"2147483648" fidl_bounds:"0"`
+}
+
+var _mDatagramSocket = _bindings.CreateLazyMarshaler(DatagramSocket{})
+
+func (msg *DatagramSocket) Marshaler() _bindings.Marshaler {
+ return _mDatagramSocket
+}
+
+// A [`NodeInfo`] variant.
+type StreamSocket struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"4" fidl_alignment_v1:"4" fidl_size_v2:"4" fidl_alignment_v2:"4"`
+ Socket _zx.Socket `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_handle_subtype:"14" fidl_handle_rights:"2147483648" fidl_bounds:"0"`
+}
+
+var _mStreamSocket = _bindings.CreateLazyMarshaler(StreamSocket{})
+
+func (msg *StreamSocket) Marshaler() _bindings.Marshaler {
+ return _mStreamSocket
+}
+
+// NodeAttributes defines generic information about a filesystem node.
+type NodeAttributes struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"56" fidl_alignment_v1:"8" fidl_size_v2:"56" fidl_alignment_v2:"8"`
+ // Protection bits and node type information describe in 'mode'.
+ Mode uint32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ // A filesystem-unique ID.
+ Id uint64 `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+ // Node size, in bytes.
+ ContentSize uint64 `fidl_offset_v1:"16" fidl_offset_v2:"16"`
+ // Space needed to store node (possibly larger than size), in bytes.
+ StorageSize uint64 `fidl_offset_v1:"24" fidl_offset_v2:"24"`
+ // Hard link count.
+ LinkCount uint64 `fidl_offset_v1:"32" fidl_offset_v2:"32"`
+ // Time of creation (may be updated manually after creation) in ns since Unix epoch, UTC.
+ CreationTime uint64 `fidl_offset_v1:"40" fidl_offset_v2:"40"`
+ // Time of last modification in ns since Unix epoch, UTC.
+ ModificationTime uint64 `fidl_offset_v1:"48" fidl_offset_v2:"48"`
+}
+
+var _mNodeAttributes = _bindings.CreateLazyMarshaler(NodeAttributes{})
+
+func (msg *NodeAttributes) Marshaler() _bindings.Marshaler {
+ return _mNodeAttributes
+}
+
+// WatchedEvent describes events returned from a DirectoryWatcher.
+type WatchedEvent struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"24" fidl_alignment_v2:"8"`
+ Event uint8 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Len uint8 `fidl_offset_v1:"1" fidl_offset_v2:"1"`
+ Name []uint8 `fidl_offset_v1:"8" fidl_offset_v2:"8" fidl_bounds:"255"`
+}
+
+var _mWatchedEvent = _bindings.CreateLazyMarshaler(WatchedEvent{})
+
+func (msg *WatchedEvent) Marshaler() _bindings.Marshaler {
+ return _mWatchedEvent
+}
+
+type FilesystemInfo struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"96" fidl_alignment_v1:"8" fidl_size_v2:"96" fidl_alignment_v2:"8"`
+ // The number of data bytes which may be stored in a filesystem.
+ TotalBytes uint64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ // The number of data bytes which are in use by the filesystem.
+ UsedBytes uint64 `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+ // The number of nodes which may be stored in the filesystem.
+ TotalNodes uint64 `fidl_offset_v1:"16" fidl_offset_v2:"16"`
+ // The number of nodes used by the filesystem.
+ UsedNodes uint64 `fidl_offset_v1:"24" fidl_offset_v2:"24"`
+ // The amount of space which may be allocated from the underlying
+ // volume manager. If unsupported, this will be zero.
+ FreeSharedPoolBytes uint64 `fidl_offset_v1:"32" fidl_offset_v2:"32"`
+ // A unique identifier for this filesystem instance. Will not be preserved
+ // across reboots.
+ FsId uint64 `fidl_offset_v1:"40" fidl_offset_v2:"40"`
+ // The size of a single filesystem block.
+ BlockSize uint32 `fidl_offset_v1:"48" fidl_offset_v2:"48"`
+ // The maximum length of a filesystem name.
+ MaxFilenameSize uint32 `fidl_offset_v1:"52" fidl_offset_v2:"52"`
+ // A unique identifier for the type of the underlying filesystem.
+ FsType uint32 `fidl_offset_v1:"56" fidl_offset_v2:"56"`
+ Padding uint32 `fidl_offset_v1:"60" fidl_offset_v2:"60"`
+ Name [32]int8 `fidl_offset_v1:"64" fidl_offset_v2:"64"`
+}
+
+var _mFilesystemInfo = _bindings.CreateLazyMarshaler(FilesystemInfo{})
+
+func (msg *FilesystemInfo) Marshaler() _bindings.Marshaler {
+ return _mFilesystemInfo
+}
+
+type nodeWithCtxCloneRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Flags uint32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Object NodeWithCtxInterfaceRequest `fidl_offset_v1:"4" fidl_offset_v2:"4" fidl_handle_subtype:"4" fidl_bounds:"0"`
+}
+
+var _mnodeWithCtxCloneRequest = _bindings.CreateLazyMarshaler(nodeWithCtxCloneRequest{})
+
+func (msg *nodeWithCtxCloneRequest) Marshaler() _bindings.Marshaler {
+ return _mnodeWithCtxCloneRequest
+}
+
+type nodeWithCtxCloseResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mnodeWithCtxCloseResponse = _bindings.CreateLazyMarshaler(nodeWithCtxCloseResponse{})
+
+func (msg *nodeWithCtxCloseResponse) Marshaler() _bindings.Marshaler {
+ return _mnodeWithCtxCloseResponse
+}
+
+type nodeWithCtxDescribeResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Info NodeInfo `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mnodeWithCtxDescribeResponse = _bindings.CreateLazyMarshaler(nodeWithCtxDescribeResponse{})
+
+func (msg *nodeWithCtxDescribeResponse) Marshaler() _bindings.Marshaler {
+ return _mnodeWithCtxDescribeResponse
+}
+
+type nodeWithCtxOnOpenResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"32" fidl_alignment_v1:"8" fidl_size_v2:"24" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Info *NodeInfo `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+}
+
+var _mnodeWithCtxOnOpenResponse = _bindings.CreateLazyMarshaler(nodeWithCtxOnOpenResponse{})
+
+func (msg *nodeWithCtxOnOpenResponse) Marshaler() _bindings.Marshaler {
+ return _mnodeWithCtxOnOpenResponse
+}
+
+type nodeWithCtxSyncResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mnodeWithCtxSyncResponse = _bindings.CreateLazyMarshaler(nodeWithCtxSyncResponse{})
+
+func (msg *nodeWithCtxSyncResponse) Marshaler() _bindings.Marshaler {
+ return _mnodeWithCtxSyncResponse
+}
+
+type nodeWithCtxGetAttrResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"64" fidl_alignment_v1:"8" fidl_size_v2:"64" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Attributes NodeAttributes `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+}
+
+var _mnodeWithCtxGetAttrResponse = _bindings.CreateLazyMarshaler(nodeWithCtxGetAttrResponse{})
+
+func (msg *nodeWithCtxGetAttrResponse) Marshaler() _bindings.Marshaler {
+ return _mnodeWithCtxGetAttrResponse
+}
+
+type nodeWithCtxSetAttrRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"64" fidl_alignment_v1:"8" fidl_size_v2:"64" fidl_alignment_v2:"8"`
+ Flags uint32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Attributes NodeAttributes `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+}
+
+var _mnodeWithCtxSetAttrRequest = _bindings.CreateLazyMarshaler(nodeWithCtxSetAttrRequest{})
+
+func (msg *nodeWithCtxSetAttrRequest) Marshaler() _bindings.Marshaler {
+ return _mnodeWithCtxSetAttrRequest
+}
+
+type nodeWithCtxSetAttrResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mnodeWithCtxSetAttrResponse = _bindings.CreateLazyMarshaler(nodeWithCtxSetAttrResponse{})
+
+func (msg *nodeWithCtxSetAttrResponse) Marshaler() _bindings.Marshaler {
+ return _mnodeWithCtxSetAttrResponse
+}
+
+type nodeWithCtxNodeGetFlagsResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Flags uint32 `fidl_offset_v1:"4" fidl_offset_v2:"4"`
+}
+
+var _mnodeWithCtxNodeGetFlagsResponse = _bindings.CreateLazyMarshaler(nodeWithCtxNodeGetFlagsResponse{})
+
+func (msg *nodeWithCtxNodeGetFlagsResponse) Marshaler() _bindings.Marshaler {
+ return _mnodeWithCtxNodeGetFlagsResponse
+}
+
+type nodeWithCtxNodeSetFlagsRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Flags uint32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mnodeWithCtxNodeSetFlagsRequest = _bindings.CreateLazyMarshaler(nodeWithCtxNodeSetFlagsRequest{})
+
+func (msg *nodeWithCtxNodeSetFlagsRequest) Marshaler() _bindings.Marshaler {
+ return _mnodeWithCtxNodeSetFlagsRequest
+}
+
+type nodeWithCtxNodeSetFlagsResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mnodeWithCtxNodeSetFlagsResponse = _bindings.CreateLazyMarshaler(nodeWithCtxNodeSetFlagsResponse{})
+
+func (msg *nodeWithCtxNodeSetFlagsResponse) Marshaler() _bindings.Marshaler {
+ return _mnodeWithCtxNodeSetFlagsResponse
+}
+
+type fileWithCtxCloneRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Flags uint32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Object NodeWithCtxInterfaceRequest `fidl_offset_v1:"4" fidl_offset_v2:"4" fidl_handle_subtype:"4" fidl_bounds:"0"`
+}
+
+var _mfileWithCtxCloneRequest = _bindings.CreateLazyMarshaler(fileWithCtxCloneRequest{})
+
+func (msg *fileWithCtxCloneRequest) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxCloneRequest
+}
+
+type fileWithCtxCloseResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mfileWithCtxCloseResponse = _bindings.CreateLazyMarshaler(fileWithCtxCloseResponse{})
+
+func (msg *fileWithCtxCloseResponse) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxCloseResponse
+}
+
+type fileWithCtxDescribeResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Info NodeInfo `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mfileWithCtxDescribeResponse = _bindings.CreateLazyMarshaler(fileWithCtxDescribeResponse{})
+
+func (msg *fileWithCtxDescribeResponse) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxDescribeResponse
+}
+
+type fileWithCtxOnOpenResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"32" fidl_alignment_v1:"8" fidl_size_v2:"24" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Info *NodeInfo `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+}
+
+var _mfileWithCtxOnOpenResponse = _bindings.CreateLazyMarshaler(fileWithCtxOnOpenResponse{})
+
+func (msg *fileWithCtxOnOpenResponse) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxOnOpenResponse
+}
+
+type fileWithCtxSyncResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mfileWithCtxSyncResponse = _bindings.CreateLazyMarshaler(fileWithCtxSyncResponse{})
+
+func (msg *fileWithCtxSyncResponse) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxSyncResponse
+}
+
+type fileWithCtxGetAttrResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"64" fidl_alignment_v1:"8" fidl_size_v2:"64" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Attributes NodeAttributes `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+}
+
+var _mfileWithCtxGetAttrResponse = _bindings.CreateLazyMarshaler(fileWithCtxGetAttrResponse{})
+
+func (msg *fileWithCtxGetAttrResponse) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxGetAttrResponse
+}
+
+type fileWithCtxSetAttrRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"64" fidl_alignment_v1:"8" fidl_size_v2:"64" fidl_alignment_v2:"8"`
+ Flags uint32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Attributes NodeAttributes `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+}
+
+var _mfileWithCtxSetAttrRequest = _bindings.CreateLazyMarshaler(fileWithCtxSetAttrRequest{})
+
+func (msg *fileWithCtxSetAttrRequest) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxSetAttrRequest
+}
+
+type fileWithCtxSetAttrResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mfileWithCtxSetAttrResponse = _bindings.CreateLazyMarshaler(fileWithCtxSetAttrResponse{})
+
+func (msg *fileWithCtxSetAttrResponse) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxSetAttrResponse
+}
+
+type fileWithCtxNodeGetFlagsResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Flags uint32 `fidl_offset_v1:"4" fidl_offset_v2:"4"`
+}
+
+var _mfileWithCtxNodeGetFlagsResponse = _bindings.CreateLazyMarshaler(fileWithCtxNodeGetFlagsResponse{})
+
+func (msg *fileWithCtxNodeGetFlagsResponse) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxNodeGetFlagsResponse
+}
+
+type fileWithCtxNodeSetFlagsRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Flags uint32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mfileWithCtxNodeSetFlagsRequest = _bindings.CreateLazyMarshaler(fileWithCtxNodeSetFlagsRequest{})
+
+func (msg *fileWithCtxNodeSetFlagsRequest) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxNodeSetFlagsRequest
+}
+
+type fileWithCtxNodeSetFlagsResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mfileWithCtxNodeSetFlagsResponse = _bindings.CreateLazyMarshaler(fileWithCtxNodeSetFlagsResponse{})
+
+func (msg *fileWithCtxNodeSetFlagsResponse) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxNodeSetFlagsResponse
+}
+
+type fileWithCtxAdvisoryLockRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Request fuchsiaio2.AdvisoryLockRequest `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mfileWithCtxAdvisoryLockRequest = _bindings.CreateLazyMarshaler(fileWithCtxAdvisoryLockRequest{})
+
+func (msg *fileWithCtxAdvisoryLockRequest) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxAdvisoryLockRequest
+}
+
+type fileWithCtxAdvisoryLockResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result fuchsiaio2.AdvisoryLockingAdvisoryLockResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mfileWithCtxAdvisoryLockResponse = _bindings.CreateLazyMarshaler(fileWithCtxAdvisoryLockResponse{})
+
+func (msg *fileWithCtxAdvisoryLockResponse) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxAdvisoryLockResponse
+}
+
+type fileWithCtxReadRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Count uint64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mfileWithCtxReadRequest = _bindings.CreateLazyMarshaler(fileWithCtxReadRequest{})
+
+func (msg *fileWithCtxReadRequest) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxReadRequest
+}
+
+type fileWithCtxReadResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"24" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Data []uint8 `fidl_offset_v1:"8" fidl_offset_v2:"8" fidl_bounds:"8192"`
+}
+
+var _mfileWithCtxReadResponse = _bindings.CreateLazyMarshaler(fileWithCtxReadResponse{})
+
+func (msg *fileWithCtxReadResponse) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxReadResponse
+}
+
+type fileWithCtxReadAtRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Count uint64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Offset uint64 `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+}
+
+var _mfileWithCtxReadAtRequest = _bindings.CreateLazyMarshaler(fileWithCtxReadAtRequest{})
+
+func (msg *fileWithCtxReadAtRequest) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxReadAtRequest
+}
+
+type fileWithCtxReadAtResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"24" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Data []uint8 `fidl_offset_v1:"8" fidl_offset_v2:"8" fidl_bounds:"8192"`
+}
+
+var _mfileWithCtxReadAtResponse = _bindings.CreateLazyMarshaler(fileWithCtxReadAtResponse{})
+
+func (msg *fileWithCtxReadAtResponse) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxReadAtResponse
+}
+
+type fileWithCtxWriteRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Data []uint8 `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"8192"`
+}
+
+var _mfileWithCtxWriteRequest = _bindings.CreateLazyMarshaler(fileWithCtxWriteRequest{})
+
+func (msg *fileWithCtxWriteRequest) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxWriteRequest
+}
+
+type fileWithCtxWriteResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Actual uint64 `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+}
+
+var _mfileWithCtxWriteResponse = _bindings.CreateLazyMarshaler(fileWithCtxWriteResponse{})
+
+func (msg *fileWithCtxWriteResponse) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxWriteResponse
+}
+
+type fileWithCtxWriteAtRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"24" fidl_alignment_v2:"8"`
+ Data []uint8 `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"8192"`
+ Offset uint64 `fidl_offset_v1:"16" fidl_offset_v2:"16"`
+}
+
+var _mfileWithCtxWriteAtRequest = _bindings.CreateLazyMarshaler(fileWithCtxWriteAtRequest{})
+
+func (msg *fileWithCtxWriteAtRequest) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxWriteAtRequest
+}
+
+type fileWithCtxWriteAtResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Actual uint64 `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+}
+
+var _mfileWithCtxWriteAtResponse = _bindings.CreateLazyMarshaler(fileWithCtxWriteAtResponse{})
+
+func (msg *fileWithCtxWriteAtResponse) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxWriteAtResponse
+}
+
+type fileWithCtxSeekRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Offset int64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Start SeekOrigin `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+}
+
+var _mfileWithCtxSeekRequest = _bindings.CreateLazyMarshaler(fileWithCtxSeekRequest{})
+
+func (msg *fileWithCtxSeekRequest) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxSeekRequest
+}
+
+type fileWithCtxSeekResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Offset uint64 `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+}
+
+var _mfileWithCtxSeekResponse = _bindings.CreateLazyMarshaler(fileWithCtxSeekResponse{})
+
+func (msg *fileWithCtxSeekResponse) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxSeekResponse
+}
+
+type fileWithCtxTruncateRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Length uint64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mfileWithCtxTruncateRequest = _bindings.CreateLazyMarshaler(fileWithCtxTruncateRequest{})
+
+func (msg *fileWithCtxTruncateRequest) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxTruncateRequest
+}
+
+type fileWithCtxTruncateResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mfileWithCtxTruncateResponse = _bindings.CreateLazyMarshaler(fileWithCtxTruncateResponse{})
+
+func (msg *fileWithCtxTruncateResponse) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxTruncateResponse
+}
+
+type fileWithCtxGetFlagsResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Flags uint32 `fidl_offset_v1:"4" fidl_offset_v2:"4"`
+}
+
+var _mfileWithCtxGetFlagsResponse = _bindings.CreateLazyMarshaler(fileWithCtxGetFlagsResponse{})
+
+func (msg *fileWithCtxGetFlagsResponse) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxGetFlagsResponse
+}
+
+type fileWithCtxSetFlagsRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Flags uint32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mfileWithCtxSetFlagsRequest = _bindings.CreateLazyMarshaler(fileWithCtxSetFlagsRequest{})
+
+func (msg *fileWithCtxSetFlagsRequest) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxSetFlagsRequest
+}
+
+type fileWithCtxSetFlagsResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mfileWithCtxSetFlagsResponse = _bindings.CreateLazyMarshaler(fileWithCtxSetFlagsResponse{})
+
+func (msg *fileWithCtxSetFlagsResponse) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxSetFlagsResponse
+}
+
+type fileWithCtxGetBufferRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Flags uint32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mfileWithCtxGetBufferRequest = _bindings.CreateLazyMarshaler(fileWithCtxGetBufferRequest{})
+
+func (msg *fileWithCtxGetBufferRequest) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxGetBufferRequest
+}
+
+type fileWithCtxGetBufferResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Buffer *fuchsiamem.Buffer `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+}
+
+var _mfileWithCtxGetBufferResponse = _bindings.CreateLazyMarshaler(fileWithCtxGetBufferResponse{})
+
+func (msg *fileWithCtxGetBufferResponse) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxGetBufferResponse
+}
+
+type directoryWatcherWithCtxOnEventRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Events []uint8 `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"8192"`
+}
+
+var _mdirectoryWatcherWithCtxOnEventRequest = _bindings.CreateLazyMarshaler(directoryWatcherWithCtxOnEventRequest{})
+
+func (msg *directoryWatcherWithCtxOnEventRequest) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWatcherWithCtxOnEventRequest
+}
+
+type directoryWithCtxCloneRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Flags uint32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Object NodeWithCtxInterfaceRequest `fidl_offset_v1:"4" fidl_offset_v2:"4" fidl_handle_subtype:"4" fidl_bounds:"0"`
+}
+
+var _mdirectoryWithCtxCloneRequest = _bindings.CreateLazyMarshaler(directoryWithCtxCloneRequest{})
+
+func (msg *directoryWithCtxCloneRequest) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxCloneRequest
+}
+
+type directoryWithCtxCloseResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdirectoryWithCtxCloseResponse = _bindings.CreateLazyMarshaler(directoryWithCtxCloseResponse{})
+
+func (msg *directoryWithCtxCloseResponse) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxCloseResponse
+}
+
+type directoryWithCtxDescribeResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Info NodeInfo `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdirectoryWithCtxDescribeResponse = _bindings.CreateLazyMarshaler(directoryWithCtxDescribeResponse{})
+
+func (msg *directoryWithCtxDescribeResponse) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxDescribeResponse
+}
+
+type directoryWithCtxOnOpenResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"32" fidl_alignment_v1:"8" fidl_size_v2:"24" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Info *NodeInfo `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+}
+
+var _mdirectoryWithCtxOnOpenResponse = _bindings.CreateLazyMarshaler(directoryWithCtxOnOpenResponse{})
+
+func (msg *directoryWithCtxOnOpenResponse) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxOnOpenResponse
+}
+
+type directoryWithCtxSyncResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdirectoryWithCtxSyncResponse = _bindings.CreateLazyMarshaler(directoryWithCtxSyncResponse{})
+
+func (msg *directoryWithCtxSyncResponse) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxSyncResponse
+}
+
+type directoryWithCtxGetAttrResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"64" fidl_alignment_v1:"8" fidl_size_v2:"64" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Attributes NodeAttributes `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+}
+
+var _mdirectoryWithCtxGetAttrResponse = _bindings.CreateLazyMarshaler(directoryWithCtxGetAttrResponse{})
+
+func (msg *directoryWithCtxGetAttrResponse) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxGetAttrResponse
+}
+
+type directoryWithCtxSetAttrRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"64" fidl_alignment_v1:"8" fidl_size_v2:"64" fidl_alignment_v2:"8"`
+ Flags uint32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Attributes NodeAttributes `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+}
+
+var _mdirectoryWithCtxSetAttrRequest = _bindings.CreateLazyMarshaler(directoryWithCtxSetAttrRequest{})
+
+func (msg *directoryWithCtxSetAttrRequest) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxSetAttrRequest
+}
+
+type directoryWithCtxSetAttrResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdirectoryWithCtxSetAttrResponse = _bindings.CreateLazyMarshaler(directoryWithCtxSetAttrResponse{})
+
+func (msg *directoryWithCtxSetAttrResponse) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxSetAttrResponse
+}
+
+type directoryWithCtxNodeGetFlagsResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Flags uint32 `fidl_offset_v1:"4" fidl_offset_v2:"4"`
+}
+
+var _mdirectoryWithCtxNodeGetFlagsResponse = _bindings.CreateLazyMarshaler(directoryWithCtxNodeGetFlagsResponse{})
+
+func (msg *directoryWithCtxNodeGetFlagsResponse) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxNodeGetFlagsResponse
+}
+
+type directoryWithCtxNodeSetFlagsRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Flags uint32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdirectoryWithCtxNodeSetFlagsRequest = _bindings.CreateLazyMarshaler(directoryWithCtxNodeSetFlagsRequest{})
+
+func (msg *directoryWithCtxNodeSetFlagsRequest) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxNodeSetFlagsRequest
+}
+
+type directoryWithCtxNodeSetFlagsResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdirectoryWithCtxNodeSetFlagsResponse = _bindings.CreateLazyMarshaler(directoryWithCtxNodeSetFlagsResponse{})
+
+func (msg *directoryWithCtxNodeSetFlagsResponse) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxNodeSetFlagsResponse
+}
+
+type directoryWithCtxAdvisoryLockRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Request fuchsiaio2.AdvisoryLockRequest `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdirectoryWithCtxAdvisoryLockRequest = _bindings.CreateLazyMarshaler(directoryWithCtxAdvisoryLockRequest{})
+
+func (msg *directoryWithCtxAdvisoryLockRequest) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxAdvisoryLockRequest
+}
+
+type directoryWithCtxAdvisoryLockResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result fuchsiaio2.AdvisoryLockingAdvisoryLockResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdirectoryWithCtxAdvisoryLockResponse = _bindings.CreateLazyMarshaler(directoryWithCtxAdvisoryLockResponse{})
+
+func (msg *directoryWithCtxAdvisoryLockResponse) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxAdvisoryLockResponse
+}
+
+type directoryWithCtxOpenRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"32" fidl_alignment_v1:"8" fidl_size_v2:"32" fidl_alignment_v2:"8"`
+ Flags uint32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Mode uint32 `fidl_offset_v1:"4" fidl_offset_v2:"4"`
+ Path string `fidl_offset_v1:"8" fidl_offset_v2:"8" fidl_bounds:"4096"`
+ Object NodeWithCtxInterfaceRequest `fidl_offset_v1:"24" fidl_offset_v2:"24" fidl_handle_subtype:"4" fidl_bounds:"0"`
+}
+
+var _mdirectoryWithCtxOpenRequest = _bindings.CreateLazyMarshaler(directoryWithCtxOpenRequest{})
+
+func (msg *directoryWithCtxOpenRequest) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxOpenRequest
+}
+
+type directoryWithCtxAddInotifyFilterRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"32" fidl_alignment_v1:"8" fidl_size_v2:"32" fidl_alignment_v2:"8"`
+ Path string `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"4095"`
+ Filter fuchsiaio2.InotifyWatchMask `fidl_offset_v1:"16" fidl_offset_v2:"16"`
+ WatchDescriptor uint32 `fidl_offset_v1:"20" fidl_offset_v2:"20"`
+ Socket _zx.Socket `fidl_offset_v1:"24" fidl_offset_v2:"24" fidl_handle_subtype:"14" fidl_handle_rights:"2147483648" fidl_bounds:"0"`
+}
+
+var _mdirectoryWithCtxAddInotifyFilterRequest = _bindings.CreateLazyMarshaler(directoryWithCtxAddInotifyFilterRequest{})
+
+func (msg *directoryWithCtxAddInotifyFilterRequest) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxAddInotifyFilterRequest
+}
+
+type directoryWithCtxUnlinkRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Path string `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"4096"`
+}
+
+var _mdirectoryWithCtxUnlinkRequest = _bindings.CreateLazyMarshaler(directoryWithCtxUnlinkRequest{})
+
+func (msg *directoryWithCtxUnlinkRequest) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxUnlinkRequest
+}
+
+type directoryWithCtxUnlinkResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdirectoryWithCtxUnlinkResponse = _bindings.CreateLazyMarshaler(directoryWithCtxUnlinkResponse{})
+
+func (msg *directoryWithCtxUnlinkResponse) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxUnlinkResponse
+}
+
+type directoryWithCtxUnlink2Request struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"32" fidl_alignment_v1:"8" fidl_size_v2:"32" fidl_alignment_v2:"8"`
+ Name string `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"255"`
+ Options fuchsiaio2.UnlinkOptions `fidl_offset_v1:"16" fidl_offset_v2:"16"`
+}
+
+var _mdirectoryWithCtxUnlink2Request = _bindings.CreateLazyMarshaler(directoryWithCtxUnlink2Request{})
+
+func (msg *directoryWithCtxUnlink2Request) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxUnlink2Request
+}
+
+type directoryWithCtxUnlink2Response struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result DirectoryUnlink2Result `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdirectoryWithCtxUnlink2Response = _bindings.CreateLazyMarshaler(directoryWithCtxUnlink2Response{})
+
+func (msg *directoryWithCtxUnlink2Response) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxUnlink2Response
+}
+
+type directoryWithCtxReadDirentsRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ MaxBytes uint64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdirectoryWithCtxReadDirentsRequest = _bindings.CreateLazyMarshaler(directoryWithCtxReadDirentsRequest{})
+
+func (msg *directoryWithCtxReadDirentsRequest) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxReadDirentsRequest
+}
+
+type directoryWithCtxReadDirentsResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"24" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Dirents []uint8 `fidl_offset_v1:"8" fidl_offset_v2:"8" fidl_bounds:"8192"`
+}
+
+var _mdirectoryWithCtxReadDirentsResponse = _bindings.CreateLazyMarshaler(directoryWithCtxReadDirentsResponse{})
+
+func (msg *directoryWithCtxReadDirentsResponse) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxReadDirentsResponse
+}
+
+type directoryWithCtxRewindResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdirectoryWithCtxRewindResponse = _bindings.CreateLazyMarshaler(directoryWithCtxRewindResponse{})
+
+func (msg *directoryWithCtxRewindResponse) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxRewindResponse
+}
+
+type directoryWithCtxGetTokenResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Token _zx.Handle `fidl_offset_v1:"4" fidl_offset_v2:"4" fidl_handle_subtype:"0" fidl_handle_rights:"2147483648" fidl_bounds:"1"`
+}
+
+var _mdirectoryWithCtxGetTokenResponse = _bindings.CreateLazyMarshaler(directoryWithCtxGetTokenResponse{})
+
+func (msg *directoryWithCtxGetTokenResponse) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxGetTokenResponse
+}
+
+type directoryWithCtxRenameRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"40" fidl_alignment_v1:"8" fidl_size_v2:"40" fidl_alignment_v2:"8"`
+ Src string `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"4096"`
+ DstParentToken _zx.Handle `fidl_offset_v1:"16" fidl_offset_v2:"16" fidl_handle_subtype:"0" fidl_handle_rights:"2147483648" fidl_bounds:"0"`
+ Dst string `fidl_offset_v1:"24" fidl_offset_v2:"24" fidl_bounds:"4096"`
+}
+
+var _mdirectoryWithCtxRenameRequest = _bindings.CreateLazyMarshaler(directoryWithCtxRenameRequest{})
+
+func (msg *directoryWithCtxRenameRequest) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxRenameRequest
+}
+
+type directoryWithCtxRenameResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdirectoryWithCtxRenameResponse = _bindings.CreateLazyMarshaler(directoryWithCtxRenameResponse{})
+
+func (msg *directoryWithCtxRenameResponse) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxRenameResponse
+}
+
+type directoryWithCtxRename2Request struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"40" fidl_alignment_v1:"8" fidl_size_v2:"40" fidl_alignment_v2:"8"`
+ Src string `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"255"`
+ DstParentToken _zx.Event `fidl_offset_v1:"16" fidl_offset_v2:"16" fidl_handle_subtype:"5" fidl_handle_rights:"2147483648" fidl_bounds:"0"`
+ Dst string `fidl_offset_v1:"24" fidl_offset_v2:"24" fidl_bounds:"255"`
+}
+
+var _mdirectoryWithCtxRename2Request = _bindings.CreateLazyMarshaler(directoryWithCtxRename2Request{})
+
+func (msg *directoryWithCtxRename2Request) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxRename2Request
+}
+
+type directoryWithCtxRename2Response struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result DirectoryRename2Result `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdirectoryWithCtxRename2Response = _bindings.CreateLazyMarshaler(directoryWithCtxRename2Response{})
+
+func (msg *directoryWithCtxRename2Response) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxRename2Response
+}
+
+type directoryWithCtxLinkRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"40" fidl_alignment_v1:"8" fidl_size_v2:"40" fidl_alignment_v2:"8"`
+ Src string `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"4096"`
+ DstParentToken _zx.Handle `fidl_offset_v1:"16" fidl_offset_v2:"16" fidl_handle_subtype:"0" fidl_handle_rights:"2147483648" fidl_bounds:"0"`
+ Dst string `fidl_offset_v1:"24" fidl_offset_v2:"24" fidl_bounds:"4096"`
+}
+
+var _mdirectoryWithCtxLinkRequest = _bindings.CreateLazyMarshaler(directoryWithCtxLinkRequest{})
+
+func (msg *directoryWithCtxLinkRequest) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxLinkRequest
+}
+
+type directoryWithCtxLinkResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdirectoryWithCtxLinkResponse = _bindings.CreateLazyMarshaler(directoryWithCtxLinkResponse{})
+
+func (msg *directoryWithCtxLinkResponse) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxLinkResponse
+}
+
+type directoryWithCtxWatchRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Mask uint32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Options uint32 `fidl_offset_v1:"4" fidl_offset_v2:"4"`
+ Watcher _zx.Channel `fidl_offset_v1:"8" fidl_offset_v2:"8" fidl_handle_subtype:"4" fidl_handle_rights:"2147483648" fidl_bounds:"0"`
+}
+
+var _mdirectoryWithCtxWatchRequest = _bindings.CreateLazyMarshaler(directoryWithCtxWatchRequest{})
+
+func (msg *directoryWithCtxWatchRequest) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxWatchRequest
+}
+
+type directoryWithCtxWatchResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdirectoryWithCtxWatchResponse = _bindings.CreateLazyMarshaler(directoryWithCtxWatchResponse{})
+
+func (msg *directoryWithCtxWatchResponse) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxWatchResponse
+}
+
+type directoryAdminWithCtxCloneRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Flags uint32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Object NodeWithCtxInterfaceRequest `fidl_offset_v1:"4" fidl_offset_v2:"4" fidl_handle_subtype:"4" fidl_bounds:"0"`
+}
+
+var _mdirectoryAdminWithCtxCloneRequest = _bindings.CreateLazyMarshaler(directoryAdminWithCtxCloneRequest{})
+
+func (msg *directoryAdminWithCtxCloneRequest) Marshaler() _bindings.Marshaler {
+ return _mdirectoryAdminWithCtxCloneRequest
+}
+
+type directoryAdminWithCtxCloseResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdirectoryAdminWithCtxCloseResponse = _bindings.CreateLazyMarshaler(directoryAdminWithCtxCloseResponse{})
+
+func (msg *directoryAdminWithCtxCloseResponse) Marshaler() _bindings.Marshaler {
+ return _mdirectoryAdminWithCtxCloseResponse
+}
+
+type directoryAdminWithCtxDescribeResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Info NodeInfo `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdirectoryAdminWithCtxDescribeResponse = _bindings.CreateLazyMarshaler(directoryAdminWithCtxDescribeResponse{})
+
+func (msg *directoryAdminWithCtxDescribeResponse) Marshaler() _bindings.Marshaler {
+ return _mdirectoryAdminWithCtxDescribeResponse
+}
+
+type directoryAdminWithCtxOnOpenResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"32" fidl_alignment_v1:"8" fidl_size_v2:"24" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Info *NodeInfo `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+}
+
+var _mdirectoryAdminWithCtxOnOpenResponse = _bindings.CreateLazyMarshaler(directoryAdminWithCtxOnOpenResponse{})
+
+func (msg *directoryAdminWithCtxOnOpenResponse) Marshaler() _bindings.Marshaler {
+ return _mdirectoryAdminWithCtxOnOpenResponse
+}
+
+type directoryAdminWithCtxSyncResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdirectoryAdminWithCtxSyncResponse = _bindings.CreateLazyMarshaler(directoryAdminWithCtxSyncResponse{})
+
+func (msg *directoryAdminWithCtxSyncResponse) Marshaler() _bindings.Marshaler {
+ return _mdirectoryAdminWithCtxSyncResponse
+}
+
+type directoryAdminWithCtxGetAttrResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"64" fidl_alignment_v1:"8" fidl_size_v2:"64" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Attributes NodeAttributes `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+}
+
+var _mdirectoryAdminWithCtxGetAttrResponse = _bindings.CreateLazyMarshaler(directoryAdminWithCtxGetAttrResponse{})
+
+func (msg *directoryAdminWithCtxGetAttrResponse) Marshaler() _bindings.Marshaler {
+ return _mdirectoryAdminWithCtxGetAttrResponse
+}
+
+type directoryAdminWithCtxSetAttrRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"64" fidl_alignment_v1:"8" fidl_size_v2:"64" fidl_alignment_v2:"8"`
+ Flags uint32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Attributes NodeAttributes `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+}
+
+var _mdirectoryAdminWithCtxSetAttrRequest = _bindings.CreateLazyMarshaler(directoryAdminWithCtxSetAttrRequest{})
+
+func (msg *directoryAdminWithCtxSetAttrRequest) Marshaler() _bindings.Marshaler {
+ return _mdirectoryAdminWithCtxSetAttrRequest
+}
+
+type directoryAdminWithCtxSetAttrResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdirectoryAdminWithCtxSetAttrResponse = _bindings.CreateLazyMarshaler(directoryAdminWithCtxSetAttrResponse{})
+
+func (msg *directoryAdminWithCtxSetAttrResponse) Marshaler() _bindings.Marshaler {
+ return _mdirectoryAdminWithCtxSetAttrResponse
+}
+
+type directoryAdminWithCtxNodeGetFlagsResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Flags uint32 `fidl_offset_v1:"4" fidl_offset_v2:"4"`
+}
+
+var _mdirectoryAdminWithCtxNodeGetFlagsResponse = _bindings.CreateLazyMarshaler(directoryAdminWithCtxNodeGetFlagsResponse{})
+
+func (msg *directoryAdminWithCtxNodeGetFlagsResponse) Marshaler() _bindings.Marshaler {
+ return _mdirectoryAdminWithCtxNodeGetFlagsResponse
+}
+
+type directoryAdminWithCtxNodeSetFlagsRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Flags uint32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdirectoryAdminWithCtxNodeSetFlagsRequest = _bindings.CreateLazyMarshaler(directoryAdminWithCtxNodeSetFlagsRequest{})
+
+func (msg *directoryAdminWithCtxNodeSetFlagsRequest) Marshaler() _bindings.Marshaler {
+ return _mdirectoryAdminWithCtxNodeSetFlagsRequest
+}
+
+type directoryAdminWithCtxNodeSetFlagsResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdirectoryAdminWithCtxNodeSetFlagsResponse = _bindings.CreateLazyMarshaler(directoryAdminWithCtxNodeSetFlagsResponse{})
+
+func (msg *directoryAdminWithCtxNodeSetFlagsResponse) Marshaler() _bindings.Marshaler {
+ return _mdirectoryAdminWithCtxNodeSetFlagsResponse
+}
+
+type directoryAdminWithCtxAdvisoryLockRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Request fuchsiaio2.AdvisoryLockRequest `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdirectoryAdminWithCtxAdvisoryLockRequest = _bindings.CreateLazyMarshaler(directoryAdminWithCtxAdvisoryLockRequest{})
+
+func (msg *directoryAdminWithCtxAdvisoryLockRequest) Marshaler() _bindings.Marshaler {
+ return _mdirectoryAdminWithCtxAdvisoryLockRequest
+}
+
+type directoryAdminWithCtxAdvisoryLockResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result fuchsiaio2.AdvisoryLockingAdvisoryLockResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdirectoryAdminWithCtxAdvisoryLockResponse = _bindings.CreateLazyMarshaler(directoryAdminWithCtxAdvisoryLockResponse{})
+
+func (msg *directoryAdminWithCtxAdvisoryLockResponse) Marshaler() _bindings.Marshaler {
+ return _mdirectoryAdminWithCtxAdvisoryLockResponse
+}
+
+type directoryAdminWithCtxOpenRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"32" fidl_alignment_v1:"8" fidl_size_v2:"32" fidl_alignment_v2:"8"`
+ Flags uint32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Mode uint32 `fidl_offset_v1:"4" fidl_offset_v2:"4"`
+ Path string `fidl_offset_v1:"8" fidl_offset_v2:"8" fidl_bounds:"4096"`
+ Object NodeWithCtxInterfaceRequest `fidl_offset_v1:"24" fidl_offset_v2:"24" fidl_handle_subtype:"4" fidl_bounds:"0"`
+}
+
+var _mdirectoryAdminWithCtxOpenRequest = _bindings.CreateLazyMarshaler(directoryAdminWithCtxOpenRequest{})
+
+func (msg *directoryAdminWithCtxOpenRequest) Marshaler() _bindings.Marshaler {
+ return _mdirectoryAdminWithCtxOpenRequest
+}
+
+type directoryAdminWithCtxAddInotifyFilterRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"32" fidl_alignment_v1:"8" fidl_size_v2:"32" fidl_alignment_v2:"8"`
+ Path string `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"4095"`
+ Filter fuchsiaio2.InotifyWatchMask `fidl_offset_v1:"16" fidl_offset_v2:"16"`
+ WatchDescriptor uint32 `fidl_offset_v1:"20" fidl_offset_v2:"20"`
+ Socket _zx.Socket `fidl_offset_v1:"24" fidl_offset_v2:"24" fidl_handle_subtype:"14" fidl_handle_rights:"2147483648" fidl_bounds:"0"`
+}
+
+var _mdirectoryAdminWithCtxAddInotifyFilterRequest = _bindings.CreateLazyMarshaler(directoryAdminWithCtxAddInotifyFilterRequest{})
+
+func (msg *directoryAdminWithCtxAddInotifyFilterRequest) Marshaler() _bindings.Marshaler {
+ return _mdirectoryAdminWithCtxAddInotifyFilterRequest
+}
+
+type directoryAdminWithCtxUnlinkRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Path string `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"4096"`
+}
+
+var _mdirectoryAdminWithCtxUnlinkRequest = _bindings.CreateLazyMarshaler(directoryAdminWithCtxUnlinkRequest{})
+
+func (msg *directoryAdminWithCtxUnlinkRequest) Marshaler() _bindings.Marshaler {
+ return _mdirectoryAdminWithCtxUnlinkRequest
+}
+
+type directoryAdminWithCtxUnlinkResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdirectoryAdminWithCtxUnlinkResponse = _bindings.CreateLazyMarshaler(directoryAdminWithCtxUnlinkResponse{})
+
+func (msg *directoryAdminWithCtxUnlinkResponse) Marshaler() _bindings.Marshaler {
+ return _mdirectoryAdminWithCtxUnlinkResponse
+}
+
+type directoryAdminWithCtxUnlink2Request struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"32" fidl_alignment_v1:"8" fidl_size_v2:"32" fidl_alignment_v2:"8"`
+ Name string `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"255"`
+ Options fuchsiaio2.UnlinkOptions `fidl_offset_v1:"16" fidl_offset_v2:"16"`
+}
+
+var _mdirectoryAdminWithCtxUnlink2Request = _bindings.CreateLazyMarshaler(directoryAdminWithCtxUnlink2Request{})
+
+func (msg *directoryAdminWithCtxUnlink2Request) Marshaler() _bindings.Marshaler {
+ return _mdirectoryAdminWithCtxUnlink2Request
+}
+
+type directoryAdminWithCtxUnlink2Response struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result DirectoryUnlink2Result `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdirectoryAdminWithCtxUnlink2Response = _bindings.CreateLazyMarshaler(directoryAdminWithCtxUnlink2Response{})
+
+func (msg *directoryAdminWithCtxUnlink2Response) Marshaler() _bindings.Marshaler {
+ return _mdirectoryAdminWithCtxUnlink2Response
+}
+
+type directoryAdminWithCtxReadDirentsRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ MaxBytes uint64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdirectoryAdminWithCtxReadDirentsRequest = _bindings.CreateLazyMarshaler(directoryAdminWithCtxReadDirentsRequest{})
+
+func (msg *directoryAdminWithCtxReadDirentsRequest) Marshaler() _bindings.Marshaler {
+ return _mdirectoryAdminWithCtxReadDirentsRequest
+}
+
+type directoryAdminWithCtxReadDirentsResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"24" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Dirents []uint8 `fidl_offset_v1:"8" fidl_offset_v2:"8" fidl_bounds:"8192"`
+}
+
+var _mdirectoryAdminWithCtxReadDirentsResponse = _bindings.CreateLazyMarshaler(directoryAdminWithCtxReadDirentsResponse{})
+
+func (msg *directoryAdminWithCtxReadDirentsResponse) Marshaler() _bindings.Marshaler {
+ return _mdirectoryAdminWithCtxReadDirentsResponse
+}
+
+type directoryAdminWithCtxRewindResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdirectoryAdminWithCtxRewindResponse = _bindings.CreateLazyMarshaler(directoryAdminWithCtxRewindResponse{})
+
+func (msg *directoryAdminWithCtxRewindResponse) Marshaler() _bindings.Marshaler {
+ return _mdirectoryAdminWithCtxRewindResponse
+}
+
+type directoryAdminWithCtxGetTokenResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Token _zx.Handle `fidl_offset_v1:"4" fidl_offset_v2:"4" fidl_handle_subtype:"0" fidl_handle_rights:"2147483648" fidl_bounds:"1"`
+}
+
+var _mdirectoryAdminWithCtxGetTokenResponse = _bindings.CreateLazyMarshaler(directoryAdminWithCtxGetTokenResponse{})
+
+func (msg *directoryAdminWithCtxGetTokenResponse) Marshaler() _bindings.Marshaler {
+ return _mdirectoryAdminWithCtxGetTokenResponse
+}
+
+type directoryAdminWithCtxRenameRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"40" fidl_alignment_v1:"8" fidl_size_v2:"40" fidl_alignment_v2:"8"`
+ Src string `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"4096"`
+ DstParentToken _zx.Handle `fidl_offset_v1:"16" fidl_offset_v2:"16" fidl_handle_subtype:"0" fidl_handle_rights:"2147483648" fidl_bounds:"0"`
+ Dst string `fidl_offset_v1:"24" fidl_offset_v2:"24" fidl_bounds:"4096"`
+}
+
+var _mdirectoryAdminWithCtxRenameRequest = _bindings.CreateLazyMarshaler(directoryAdminWithCtxRenameRequest{})
+
+func (msg *directoryAdminWithCtxRenameRequest) Marshaler() _bindings.Marshaler {
+ return _mdirectoryAdminWithCtxRenameRequest
+}
+
+type directoryAdminWithCtxRenameResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdirectoryAdminWithCtxRenameResponse = _bindings.CreateLazyMarshaler(directoryAdminWithCtxRenameResponse{})
+
+func (msg *directoryAdminWithCtxRenameResponse) Marshaler() _bindings.Marshaler {
+ return _mdirectoryAdminWithCtxRenameResponse
+}
+
+type directoryAdminWithCtxRename2Request struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"40" fidl_alignment_v1:"8" fidl_size_v2:"40" fidl_alignment_v2:"8"`
+ Src string `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"255"`
+ DstParentToken _zx.Event `fidl_offset_v1:"16" fidl_offset_v2:"16" fidl_handle_subtype:"5" fidl_handle_rights:"2147483648" fidl_bounds:"0"`
+ Dst string `fidl_offset_v1:"24" fidl_offset_v2:"24" fidl_bounds:"255"`
+}
+
+var _mdirectoryAdminWithCtxRename2Request = _bindings.CreateLazyMarshaler(directoryAdminWithCtxRename2Request{})
+
+func (msg *directoryAdminWithCtxRename2Request) Marshaler() _bindings.Marshaler {
+ return _mdirectoryAdminWithCtxRename2Request
+}
+
+type directoryAdminWithCtxRename2Response struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result DirectoryRename2Result `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdirectoryAdminWithCtxRename2Response = _bindings.CreateLazyMarshaler(directoryAdminWithCtxRename2Response{})
+
+func (msg *directoryAdminWithCtxRename2Response) Marshaler() _bindings.Marshaler {
+ return _mdirectoryAdminWithCtxRename2Response
+}
+
+type directoryAdminWithCtxLinkRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"40" fidl_alignment_v1:"8" fidl_size_v2:"40" fidl_alignment_v2:"8"`
+ Src string `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"4096"`
+ DstParentToken _zx.Handle `fidl_offset_v1:"16" fidl_offset_v2:"16" fidl_handle_subtype:"0" fidl_handle_rights:"2147483648" fidl_bounds:"0"`
+ Dst string `fidl_offset_v1:"24" fidl_offset_v2:"24" fidl_bounds:"4096"`
+}
+
+var _mdirectoryAdminWithCtxLinkRequest = _bindings.CreateLazyMarshaler(directoryAdminWithCtxLinkRequest{})
+
+func (msg *directoryAdminWithCtxLinkRequest) Marshaler() _bindings.Marshaler {
+ return _mdirectoryAdminWithCtxLinkRequest
+}
+
+type directoryAdminWithCtxLinkResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdirectoryAdminWithCtxLinkResponse = _bindings.CreateLazyMarshaler(directoryAdminWithCtxLinkResponse{})
+
+func (msg *directoryAdminWithCtxLinkResponse) Marshaler() _bindings.Marshaler {
+ return _mdirectoryAdminWithCtxLinkResponse
+}
+
+type directoryAdminWithCtxWatchRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Mask uint32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Options uint32 `fidl_offset_v1:"4" fidl_offset_v2:"4"`
+ Watcher _zx.Channel `fidl_offset_v1:"8" fidl_offset_v2:"8" fidl_handle_subtype:"4" fidl_handle_rights:"2147483648" fidl_bounds:"0"`
+}
+
+var _mdirectoryAdminWithCtxWatchRequest = _bindings.CreateLazyMarshaler(directoryAdminWithCtxWatchRequest{})
+
+func (msg *directoryAdminWithCtxWatchRequest) Marshaler() _bindings.Marshaler {
+ return _mdirectoryAdminWithCtxWatchRequest
+}
+
+type directoryAdminWithCtxWatchResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdirectoryAdminWithCtxWatchResponse = _bindings.CreateLazyMarshaler(directoryAdminWithCtxWatchResponse{})
+
+func (msg *directoryAdminWithCtxWatchResponse) Marshaler() _bindings.Marshaler {
+ return _mdirectoryAdminWithCtxWatchResponse
+}
+
+type directoryAdminWithCtxMountRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Remote DirectoryWithCtxInterface `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_handle_subtype:"4"`
+}
+
+var _mdirectoryAdminWithCtxMountRequest = _bindings.CreateLazyMarshaler(directoryAdminWithCtxMountRequest{})
+
+func (msg *directoryAdminWithCtxMountRequest) Marshaler() _bindings.Marshaler {
+ return _mdirectoryAdminWithCtxMountRequest
+}
+
+type directoryAdminWithCtxMountResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdirectoryAdminWithCtxMountResponse = _bindings.CreateLazyMarshaler(directoryAdminWithCtxMountResponse{})
+
+func (msg *directoryAdminWithCtxMountResponse) Marshaler() _bindings.Marshaler {
+ return _mdirectoryAdminWithCtxMountResponse
+}
+
+type directoryAdminWithCtxMountAndCreateRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"32" fidl_alignment_v1:"8" fidl_size_v2:"32" fidl_alignment_v2:"8"`
+ Remote DirectoryWithCtxInterface `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_handle_subtype:"4"`
+ Name string `fidl_offset_v1:"8" fidl_offset_v2:"8" fidl_bounds:"255"`
+ Flags uint32 `fidl_offset_v1:"24" fidl_offset_v2:"24"`
+}
+
+var _mdirectoryAdminWithCtxMountAndCreateRequest = _bindings.CreateLazyMarshaler(directoryAdminWithCtxMountAndCreateRequest{})
+
+func (msg *directoryAdminWithCtxMountAndCreateRequest) Marshaler() _bindings.Marshaler {
+ return _mdirectoryAdminWithCtxMountAndCreateRequest
+}
+
+type directoryAdminWithCtxMountAndCreateResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdirectoryAdminWithCtxMountAndCreateResponse = _bindings.CreateLazyMarshaler(directoryAdminWithCtxMountAndCreateResponse{})
+
+func (msg *directoryAdminWithCtxMountAndCreateResponse) Marshaler() _bindings.Marshaler {
+ return _mdirectoryAdminWithCtxMountAndCreateResponse
+}
+
+type directoryAdminWithCtxUnmountResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdirectoryAdminWithCtxUnmountResponse = _bindings.CreateLazyMarshaler(directoryAdminWithCtxUnmountResponse{})
+
+func (msg *directoryAdminWithCtxUnmountResponse) Marshaler() _bindings.Marshaler {
+ return _mdirectoryAdminWithCtxUnmountResponse
+}
+
+type directoryAdminWithCtxUnmountNodeResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Remote DirectoryWithCtxInterface `fidl_offset_v1:"4" fidl_offset_v2:"4" fidl_handle_subtype:"4"`
+}
+
+var _mdirectoryAdminWithCtxUnmountNodeResponse = _bindings.CreateLazyMarshaler(directoryAdminWithCtxUnmountNodeResponse{})
+
+func (msg *directoryAdminWithCtxUnmountNodeResponse) Marshaler() _bindings.Marshaler {
+ return _mdirectoryAdminWithCtxUnmountNodeResponse
+}
+
+type directoryAdminWithCtxQueryFilesystemResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Info *FilesystemInfo `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+}
+
+var _mdirectoryAdminWithCtxQueryFilesystemResponse = _bindings.CreateLazyMarshaler(directoryAdminWithCtxQueryFilesystemResponse{})
+
+func (msg *directoryAdminWithCtxQueryFilesystemResponse) Marshaler() _bindings.Marshaler {
+ return _mdirectoryAdminWithCtxQueryFilesystemResponse
+}
+
+type directoryAdminWithCtxGetDevicePathResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"24" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Path *string `fidl_offset_v1:"8" fidl_offset_v2:"8" fidl_bounds:"4096"`
+}
+
+var _mdirectoryAdminWithCtxGetDevicePathResponse = _bindings.CreateLazyMarshaler(directoryAdminWithCtxGetDevicePathResponse{})
+
+func (msg *directoryAdminWithCtxGetDevicePathResponse) Marshaler() _bindings.Marshaler {
+ return _mdirectoryAdminWithCtxGetDevicePathResponse
+}
+
+type I_directoryUnlink2ResultTag uint64
+
+const (
+ DirectoryUnlink2ResultResponse = 1 // 0x00000001
+ DirectoryUnlink2ResultErr = 2 // 0x00000002
+)
+
+type DirectoryUnlink2Result struct {
+ I_directoryUnlink2ResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response DirectoryUnlink2Response `fidl_ordinal:"1"`
+ Err int32 `fidl_ordinal:"2"`
+}
+
+func (_m *DirectoryUnlink2Result) reset() {
+ switch _m.I_directoryUnlink2ResultTag {
+ case 1:
+ var _zeroed DirectoryUnlink2Response
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed int32
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *DirectoryUnlink2Result) Which() I_directoryUnlink2ResultTag {
+ return _m.I_directoryUnlink2ResultTag
+}
+
+func (_m *DirectoryUnlink2Result) Ordinal() uint64 {
+ return uint64(_m.I_directoryUnlink2ResultTag)
+}
+
+func (_m *DirectoryUnlink2Result) SetResponse(response DirectoryUnlink2Response) {
+ _m.reset()
+ _m.I_directoryUnlink2ResultTag = DirectoryUnlink2ResultResponse
+ _m.Response = response
+}
+
+func DirectoryUnlink2ResultWithResponse(response DirectoryUnlink2Response) DirectoryUnlink2Result {
+ var _u DirectoryUnlink2Result
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *DirectoryUnlink2Result) SetErr(err int32) {
+ _m.reset()
+ _m.I_directoryUnlink2ResultTag = DirectoryUnlink2ResultErr
+ _m.Err = err
+}
+
+func DirectoryUnlink2ResultWithErr(err int32) DirectoryUnlink2Result {
+ var _u DirectoryUnlink2Result
+ _u.SetErr(err)
+ return _u
+}
+
+type I_directoryRename2ResultTag uint64
+
+const (
+ DirectoryRename2ResultResponse = 1 // 0x00000001
+ DirectoryRename2ResultErr = 2 // 0x00000002
+)
+
+type DirectoryRename2Result struct {
+ I_directoryRename2ResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response DirectoryRename2Response `fidl_ordinal:"1"`
+ Err int32 `fidl_ordinal:"2"`
+}
+
+func (_m *DirectoryRename2Result) reset() {
+ switch _m.I_directoryRename2ResultTag {
+ case 1:
+ var _zeroed DirectoryRename2Response
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed int32
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *DirectoryRename2Result) Which() I_directoryRename2ResultTag {
+ return _m.I_directoryRename2ResultTag
+}
+
+func (_m *DirectoryRename2Result) Ordinal() uint64 {
+ return uint64(_m.I_directoryRename2ResultTag)
+}
+
+func (_m *DirectoryRename2Result) SetResponse(response DirectoryRename2Response) {
+ _m.reset()
+ _m.I_directoryRename2ResultTag = DirectoryRename2ResultResponse
+ _m.Response = response
+}
+
+func DirectoryRename2ResultWithResponse(response DirectoryRename2Response) DirectoryRename2Result {
+ var _u DirectoryRename2Result
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *DirectoryRename2Result) SetErr(err int32) {
+ _m.reset()
+ _m.I_directoryRename2ResultTag = DirectoryRename2ResultErr
+ _m.Err = err
+}
+
+func DirectoryRename2ResultWithErr(err int32) DirectoryRename2Result {
+ var _u DirectoryRename2Result
+ _u.SetErr(err)
+ return _u
+}
+
+type I_nodeInfoTag uint64
+
+const (
+ NodeInfoService = 1 // 0x00000001
+ NodeInfoFile = 2 // 0x00000002
+ NodeInfoDirectory = 3 // 0x00000003
+ NodeInfoPipe = 4 // 0x00000004
+ NodeInfoVmofile = 5 // 0x00000005
+ NodeInfoDevice = 6 // 0x00000006
+ NodeInfoTty = 7 // 0x00000007
+ NodeInfoDatagramSocket = 9 // 0x00000009
+ NodeInfoStreamSocket = 10 // 0x0000000a
+)
+
+// Connection information.
+//
+// Refer to [`Node.Describe`] and [`Node.OnOpen`] for usage.
+type NodeInfo struct {
+ I_nodeInfoTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"true"`
+ // No protocol information was supplied by the connection.
+ Service Service `fidl_ordinal:"1"`
+ // The connection composes [`File`].
+ File FileObject `fidl_ordinal:"2"`
+ // The connection composes [`Directory`].
+ Directory DirectoryObject `fidl_ordinal:"3"`
+ Pipe Pipe `fidl_ordinal:"4"`
+ // The connection composes [`File`]. Its implementation is backed by a VMO.
+ Vmofile Vmofile `fidl_ordinal:"5"`
+ Device Device `fidl_ordinal:"6"`
+ Tty Tty `fidl_ordinal:"7"`
+ // The connection composes [`fuchsia.posix.socket/DatagramSocket`].
+ DatagramSocket DatagramSocket `fidl_ordinal:"9"`
+ // The connection composes [`fuchsia.posix.socket/StreamSocket`].
+ StreamSocket StreamSocket `fidl_ordinal:"10"`
+}
+
+func (_m *NodeInfo) reset() {
+ switch _m.I_nodeInfoTag {
+ case 1:
+ var _zeroed Service
+ _m.Service = _zeroed
+ case 2:
+ var _zeroed FileObject
+ _m.File = _zeroed
+ case 3:
+ var _zeroed DirectoryObject
+ _m.Directory = _zeroed
+ case 4:
+ var _zeroed Pipe
+ _m.Pipe = _zeroed
+ case 5:
+ var _zeroed Vmofile
+ _m.Vmofile = _zeroed
+ case 6:
+ var _zeroed Device
+ _m.Device = _zeroed
+ case 7:
+ var _zeroed Tty
+ _m.Tty = _zeroed
+ case 9:
+ var _zeroed DatagramSocket
+ _m.DatagramSocket = _zeroed
+ case 10:
+ var _zeroed StreamSocket
+ _m.StreamSocket = _zeroed
+ }
+}
+
+func (_m *NodeInfo) Which() I_nodeInfoTag {
+ return _m.I_nodeInfoTag
+}
+
+func (_m *NodeInfo) Ordinal() uint64 {
+ return uint64(_m.I_nodeInfoTag)
+}
+
+func (_m *NodeInfo) SetService(service Service) {
+ _m.reset()
+ _m.I_nodeInfoTag = NodeInfoService
+ _m.Service = service
+}
+
+func NodeInfoWithService(service Service) NodeInfo {
+ var _u NodeInfo
+ _u.SetService(service)
+ return _u
+}
+
+func (_m *NodeInfo) SetFile(file FileObject) {
+ _m.reset()
+ _m.I_nodeInfoTag = NodeInfoFile
+ _m.File = file
+}
+
+func NodeInfoWithFile(file FileObject) NodeInfo {
+ var _u NodeInfo
+ _u.SetFile(file)
+ return _u
+}
+
+func (_m *NodeInfo) SetDirectory(directory DirectoryObject) {
+ _m.reset()
+ _m.I_nodeInfoTag = NodeInfoDirectory
+ _m.Directory = directory
+}
+
+func NodeInfoWithDirectory(directory DirectoryObject) NodeInfo {
+ var _u NodeInfo
+ _u.SetDirectory(directory)
+ return _u
+}
+
+func (_m *NodeInfo) SetPipe(pipe Pipe) {
+ _m.reset()
+ _m.I_nodeInfoTag = NodeInfoPipe
+ _m.Pipe = pipe
+}
+
+func NodeInfoWithPipe(pipe Pipe) NodeInfo {
+ var _u NodeInfo
+ _u.SetPipe(pipe)
+ return _u
+}
+
+func (_m *NodeInfo) SetVmofile(vmofile Vmofile) {
+ _m.reset()
+ _m.I_nodeInfoTag = NodeInfoVmofile
+ _m.Vmofile = vmofile
+}
+
+func NodeInfoWithVmofile(vmofile Vmofile) NodeInfo {
+ var _u NodeInfo
+ _u.SetVmofile(vmofile)
+ return _u
+}
+
+func (_m *NodeInfo) SetDevice(device Device) {
+ _m.reset()
+ _m.I_nodeInfoTag = NodeInfoDevice
+ _m.Device = device
+}
+
+func NodeInfoWithDevice(device Device) NodeInfo {
+ var _u NodeInfo
+ _u.SetDevice(device)
+ return _u
+}
+
+func (_m *NodeInfo) SetTty(tty Tty) {
+ _m.reset()
+ _m.I_nodeInfoTag = NodeInfoTty
+ _m.Tty = tty
+}
+
+func NodeInfoWithTty(tty Tty) NodeInfo {
+ var _u NodeInfo
+ _u.SetTty(tty)
+ return _u
+}
+
+func (_m *NodeInfo) SetDatagramSocket(datagramSocket DatagramSocket) {
+ _m.reset()
+ _m.I_nodeInfoTag = NodeInfoDatagramSocket
+ _m.DatagramSocket = datagramSocket
+}
+
+func NodeInfoWithDatagramSocket(datagramSocket DatagramSocket) NodeInfo {
+ var _u NodeInfo
+ _u.SetDatagramSocket(datagramSocket)
+ return _u
+}
+
+func (_m *NodeInfo) SetStreamSocket(streamSocket StreamSocket) {
+ _m.reset()
+ _m.I_nodeInfoTag = NodeInfoStreamSocket
+ _m.StreamSocket = streamSocket
+}
+
+func NodeInfoWithStreamSocket(streamSocket StreamSocket) NodeInfo {
+ var _u NodeInfo
+ _u.SetStreamSocket(streamSocket)
+ return _u
+}
+
+const (
+ NodeCloneOrdinal uint64 = 0x5a61678f293ce16f
+ NodeCloseOrdinal uint64 = 0x5309c5bd1c33dc44
+ NodeDescribeOrdinal uint64 = 0xffcec215078dea0
+ NodeOnOpenOrdinal uint64 = 0x7fc7bbb1dbfd1972
+ NodeSyncOrdinal uint64 = 0x189d88326c18b519
+ NodeGetAttrOrdinal uint64 = 0x78985e216314dafd
+ NodeSetAttrOrdinal uint64 = 0x4186c0f40d938f46
+ NodeNodeGetFlagsOrdinal uint64 = 0x5b88fffb8eda3aa1
+ NodeNodeSetFlagsOrdinal uint64 = 0x5295b76c71fde733
+)
+
+type NodeWithCtxInterface _bindings.ChannelProxy
+
+// Create another connection to the same remote object.
+//
+// `flags` may be any of:
+//
+// - `OPEN_RIGHT_*`
+// - `OPEN_FLAG_APPEND`
+// - `OPEN_FLAG_NO_REMOTE`
+// - `OPEN_FLAG_DESCRIBE`
+// - `CLONE_FLAG_SAME_RIGHTS`
+//
+// All other flags are ignored.
+//
+// The `OPEN_RIGHT_*` bits in `flags` request corresponding rights over the resulting
+// cloned object.
+// The cloned object must have rights less than or equal to the original object, otherwise
+// returns `ZX_ERR_ACCESS_DENIED`.
+// Alternatively, pass `CLONE_FLAG_SAME_RIGHTS` to inherit the rights on the source connection.
+// It is invalid to pass any of the `OPEN_RIGHT_*` flags together with
+// `CLONE_FLAG_SAME_RIGHTS`.
+func (p *NodeWithCtxInterface) Clone(ctx_ _bindings.Context, flags uint32, object NodeWithCtxInterfaceRequest) error {
+ req_ := &nodeWithCtxCloneRequest{
+ Flags: flags,
+ Object: object,
+ }
+ err_ := ((*_bindings.ChannelProxy)(p)).Send(NodeCloneOrdinal, req_)
+ return err_
+}
+
+// Terminates connection with object.
+//
+// This method does not require any rights.
+func (p *NodeWithCtxInterface) Close(ctx_ _bindings.Context) (int32, error) {
+ var req_ _bindings.Message
+ resp_ := &nodeWithCtxCloseResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(NodeCloseOrdinal, req_, resp_)
+ return resp_.S, err_
+}
+
+// Returns extra information about the type of the object.
+// If the `Describe` operation fails, the connection is closed.
+//
+// This method does not require any rights.
+func (p *NodeWithCtxInterface) Describe(ctx_ _bindings.Context) (NodeInfo, error) {
+ var req_ _bindings.Message
+ resp_ := &nodeWithCtxDescribeResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(NodeDescribeOrdinal, req_, resp_)
+ return resp_.Info, err_
+}
+
+// An event produced eagerly by a FIDL server if requested by `OPEN_FLAG_DESCRIBE`.
+//
+// Indicates the success or failure of the open operation, and optionally describes the
+// object. If the status is `ZX_OK`, `info` contains descriptive information about the object
+// (the same as would be returned by `Describe`).
+func (p *NodeWithCtxInterface) ExpectOnOpen(ctx_ _bindings.Context) (int32, *NodeInfo, error) {
+ resp_ := &nodeWithCtxOnOpenResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Recv(NodeOnOpenOrdinal, resp_)
+ return resp_.S, resp_.Info, err_
+}
+
+// Synchronizes updates to the node to the underlying media, if it exists.
+//
+// This method does not require any rights.
+func (p *NodeWithCtxInterface) Sync(ctx_ _bindings.Context) (int32, error) {
+ var req_ _bindings.Message
+ resp_ := &nodeWithCtxSyncResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(NodeSyncOrdinal, req_, resp_)
+ return resp_.S, err_
+}
+
+// Acquires information about the node.
+//
+// This method does not require any rights.
+func (p *NodeWithCtxInterface) GetAttr(ctx_ _bindings.Context) (int32, NodeAttributes, error) {
+ var req_ _bindings.Message
+ resp_ := &nodeWithCtxGetAttrResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(NodeGetAttrOrdinal, req_, resp_)
+ return resp_.S, resp_.Attributes, err_
+}
+
+// Updates information about the node.
+// `flags` may be any of `NODE_ATTRIBUTE_FLAG_*`.
+//
+// This method requires following rights: `OPEN_RIGHT_WRITABLE`, otherwise returns
+// `ZX_ERR_BAD_HANDLE`.
+func (p *NodeWithCtxInterface) SetAttr(ctx_ _bindings.Context, flags uint32, attributes NodeAttributes) (int32, error) {
+ req_ := &nodeWithCtxSetAttrRequest{
+ Flags: flags,
+ Attributes: attributes,
+ }
+ resp_ := &nodeWithCtxSetAttrResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(NodeSetAttrOrdinal, req_, resp_)
+ return resp_.S, err_
+}
+
+// Acquires the `Directory.Open` rights and flags used to access this file.
+//
+// This method does not require any rights.
+// This method has the same functionality as GetFlags for File and is
+// meant as an in-progress replacement.
+func (p *NodeWithCtxInterface) NodeGetFlags(ctx_ _bindings.Context) (int32, uint32, error) {
+ var req_ _bindings.Message
+ resp_ := &nodeWithCtxNodeGetFlagsResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(NodeNodeGetFlagsOrdinal, req_, resp_)
+ return resp_.S, resp_.Flags, err_
+}
+
+// Changes the `Directory.Open` flags used to access the file.
+// Supported flags which can be turned on / off:
+// - `OPEN_FLAG_APPEND`
+//
+// This method does not require any rights.
+// This method has the same functionality as SetFlags for File and is
+// meant as an in-progress replacement.
+func (p *NodeWithCtxInterface) NodeSetFlags(ctx_ _bindings.Context, flags uint32) (int32, error) {
+ req_ := &nodeWithCtxNodeSetFlagsRequest{
+ Flags: flags,
+ }
+ resp_ := &nodeWithCtxNodeSetFlagsResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(NodeNodeSetFlagsOrdinal, req_, resp_)
+ return resp_.S, err_
+}
+
+// Node defines the minimal interface for entities which can be accessed in a filesystem.
+type NodeWithCtx interface {
+ // Create another connection to the same remote object.
+ //
+ // `flags` may be any of:
+ //
+ // - `OPEN_RIGHT_*`
+ // - `OPEN_FLAG_APPEND`
+ // - `OPEN_FLAG_NO_REMOTE`
+ // - `OPEN_FLAG_DESCRIBE`
+ // - `CLONE_FLAG_SAME_RIGHTS`
+ //
+ // All other flags are ignored.
+ //
+ // The `OPEN_RIGHT_*` bits in `flags` request corresponding rights over the resulting
+ // cloned object.
+ // The cloned object must have rights less than or equal to the original object, otherwise
+ // returns `ZX_ERR_ACCESS_DENIED`.
+ // Alternatively, pass `CLONE_FLAG_SAME_RIGHTS` to inherit the rights on the source connection.
+ // It is invalid to pass any of the `OPEN_RIGHT_*` flags together with
+ // `CLONE_FLAG_SAME_RIGHTS`.
+ Clone(ctx_ _bindings.Context, flags uint32, object NodeWithCtxInterfaceRequest) error
+ // Terminates connection with object.
+ //
+ // This method does not require any rights.
+ Close(ctx_ _bindings.Context) (int32, error)
+ // Returns extra information about the type of the object.
+ // If the `Describe` operation fails, the connection is closed.
+ //
+ // This method does not require any rights.
+ Describe(ctx_ _bindings.Context) (NodeInfo, error)
+ // An event produced eagerly by a FIDL server if requested by `OPEN_FLAG_DESCRIBE`.
+ //
+ // Indicates the success or failure of the open operation, and optionally describes the
+ // object. If the status is `ZX_OK`, `info` contains descriptive information about the object
+ // (the same as would be returned by `Describe`).
+ // Synchronizes updates to the node to the underlying media, if it exists.
+ //
+ // This method does not require any rights.
+ Sync(ctx_ _bindings.Context) (int32, error)
+ // Acquires information about the node.
+ //
+ // This method does not require any rights.
+ GetAttr(ctx_ _bindings.Context) (int32, NodeAttributes, error)
+ // Updates information about the node.
+ // `flags` may be any of `NODE_ATTRIBUTE_FLAG_*`.
+ //
+ // This method requires following rights: `OPEN_RIGHT_WRITABLE`, otherwise returns
+ // `ZX_ERR_BAD_HANDLE`.
+ SetAttr(ctx_ _bindings.Context, flags uint32, attributes NodeAttributes) (int32, error)
+ // Acquires the `Directory.Open` rights and flags used to access this file.
+ //
+ // This method does not require any rights.
+ // This method has the same functionality as GetFlags for File and is
+ // meant as an in-progress replacement.
+ NodeGetFlags(ctx_ _bindings.Context) (int32, uint32, error)
+ // Changes the `Directory.Open` flags used to access the file.
+ // Supported flags which can be turned on / off:
+ // - `OPEN_FLAG_APPEND`
+ //
+ // This method does not require any rights.
+ // This method has the same functionality as SetFlags for File and is
+ // meant as an in-progress replacement.
+ NodeSetFlags(ctx_ _bindings.Context, flags uint32) (int32, error)
+}
+
+type NodeWithCtxTransitionalBase struct{}
+
+func (_ *NodeWithCtxTransitionalBase) NodeGetFlags(ctx_ _bindings.Context) (int32, uint32, error) {
+ panic("Not Implemented")
+}
+func (_ *NodeWithCtxTransitionalBase) NodeSetFlags(ctx_ _bindings.Context, flags uint32) (int32, error) {
+ panic("Not Implemented")
+}
+
+type NodeWithCtxInterfaceRequest _bindings.InterfaceRequest
+
+func NewNodeWithCtxInterfaceRequest() (NodeWithCtxInterfaceRequest, *NodeWithCtxInterface, error) {
+ req, cli, err := _bindings.NewInterfaceRequest()
+ return NodeWithCtxInterfaceRequest(req), (*NodeWithCtxInterface)(cli), err
+}
+
+type NodeWithCtxStub struct {
+ Impl NodeWithCtx
+}
+
+func (s_ *NodeWithCtxStub) Dispatch(args_ _bindings.DispatchArgs) (_bindings.Message, bool, error) {
+ switch args_.Ordinal {
+ case NodeCloneOrdinal:
+ in_ := nodeWithCtxCloneRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ err_ := s_.Impl.Clone(args_.Ctx, in_.Flags, in_.Object)
+ return nil, false, err_
+ case NodeCloseOrdinal:
+ s, err_ := s_.Impl.Close(args_.Ctx)
+ out_ := nodeWithCtxCloseResponse{}
+ out_.S = s
+ return &out_, true, err_
+ case NodeDescribeOrdinal:
+ info, err_ := s_.Impl.Describe(args_.Ctx)
+ out_ := nodeWithCtxDescribeResponse{}
+ out_.Info = info
+ return &out_, true, err_
+ case NodeSyncOrdinal:
+ s, err_ := s_.Impl.Sync(args_.Ctx)
+ out_ := nodeWithCtxSyncResponse{}
+ out_.S = s
+ return &out_, true, err_
+ case NodeGetAttrOrdinal:
+ s, attributes, err_ := s_.Impl.GetAttr(args_.Ctx)
+ out_ := nodeWithCtxGetAttrResponse{}
+ out_.S = s
+ out_.Attributes = attributes
+ return &out_, true, err_
+ case NodeSetAttrOrdinal:
+ in_ := nodeWithCtxSetAttrRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ s, err_ := s_.Impl.SetAttr(args_.Ctx, in_.Flags, in_.Attributes)
+ out_ := nodeWithCtxSetAttrResponse{}
+ out_.S = s
+ return &out_, true, err_
+ case NodeNodeGetFlagsOrdinal:
+ s, flags, err_ := s_.Impl.NodeGetFlags(args_.Ctx)
+ out_ := nodeWithCtxNodeGetFlagsResponse{}
+ out_.S = s
+ out_.Flags = flags
+ return &out_, true, err_
+ case NodeNodeSetFlagsOrdinal:
+ in_ := nodeWithCtxNodeSetFlagsRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ s, err_ := s_.Impl.NodeSetFlags(args_.Ctx, in_.Flags)
+ out_ := nodeWithCtxNodeSetFlagsResponse{}
+ out_.S = s
+ return &out_, true, err_
+ }
+ return nil, false, _bindings.ErrUnknownOrdinal
+}
+
+type NodeEventProxy _bindings.ChannelProxy
+
+func (p *NodeEventProxy) OnOpen(s int32, info *NodeInfo) error {
+ event_ := &nodeWithCtxOnOpenResponse{
+ S: s,
+ Info: info,
+ }
+ return ((*_bindings.ChannelProxy)(p)).Send(NodeOnOpenOrdinal, event_)
+}
+
+const (
+ FileCloneOrdinal uint64 = 0x5a61678f293ce16f
+ FileCloseOrdinal uint64 = 0x5309c5bd1c33dc44
+ FileDescribeOrdinal uint64 = 0xffcec215078dea0
+ FileOnOpenOrdinal uint64 = 0x7fc7bbb1dbfd1972
+ FileSyncOrdinal uint64 = 0x189d88326c18b519
+ FileGetAttrOrdinal uint64 = 0x78985e216314dafd
+ FileSetAttrOrdinal uint64 = 0x4186c0f40d938f46
+ FileNodeGetFlagsOrdinal uint64 = 0x5b88fffb8eda3aa1
+ FileNodeSetFlagsOrdinal uint64 = 0x5295b76c71fde733
+ FileAdvisoryLockOrdinal uint64 = 0x6358e94c468026fa
+ FileReadOrdinal uint64 = 0x29b2b7074c95208c
+ FileReadAtOrdinal uint64 = 0x6527ee3fbc9c5749
+ FileWriteOrdinal uint64 = 0x3b6432f57914225b
+ FileWriteAtOrdinal uint64 = 0x4b29e1582ab379e4
+ FileSeekOrdinal uint64 = 0x324968e9b8a0e394
+ FileTruncateOrdinal uint64 = 0x5ec8f337359a2ddb
+ FileGetFlagsOrdinal uint64 = 0x200be82ca523ab96
+ FileSetFlagsOrdinal uint64 = 0x713f375258671141
+ FileGetBufferOrdinal uint64 = 0x4b93b8486666d951
+)
+
+type FileWithCtxInterface _bindings.ChannelProxy
+
+// Create another connection to the same remote object.
+//
+// `flags` may be any of:
+//
+// - `OPEN_RIGHT_*`
+// - `OPEN_FLAG_APPEND`
+// - `OPEN_FLAG_NO_REMOTE`
+// - `OPEN_FLAG_DESCRIBE`
+// - `CLONE_FLAG_SAME_RIGHTS`
+//
+// All other flags are ignored.
+//
+// The `OPEN_RIGHT_*` bits in `flags` request corresponding rights over the resulting
+// cloned object.
+// The cloned object must have rights less than or equal to the original object, otherwise
+// returns `ZX_ERR_ACCESS_DENIED`.
+// Alternatively, pass `CLONE_FLAG_SAME_RIGHTS` to inherit the rights on the source connection.
+// It is invalid to pass any of the `OPEN_RIGHT_*` flags together with
+// `CLONE_FLAG_SAME_RIGHTS`.
+func (p *FileWithCtxInterface) Clone(ctx_ _bindings.Context, flags uint32, object NodeWithCtxInterfaceRequest) error {
+ req_ := &fileWithCtxCloneRequest{
+ Flags: flags,
+ Object: object,
+ }
+ err_ := ((*_bindings.ChannelProxy)(p)).Send(FileCloneOrdinal, req_)
+ return err_
+}
+
+// Terminates connection with object.
+//
+// This method does not require any rights.
+func (p *FileWithCtxInterface) Close(ctx_ _bindings.Context) (int32, error) {
+ var req_ _bindings.Message
+ resp_ := &fileWithCtxCloseResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(FileCloseOrdinal, req_, resp_)
+ return resp_.S, err_
+}
+
+// Returns extra information about the type of the object.
+// If the `Describe` operation fails, the connection is closed.
+//
+// This method does not require any rights.
+func (p *FileWithCtxInterface) Describe(ctx_ _bindings.Context) (NodeInfo, error) {
+ var req_ _bindings.Message
+ resp_ := &fileWithCtxDescribeResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(FileDescribeOrdinal, req_, resp_)
+ return resp_.Info, err_
+}
+
+// An event produced eagerly by a FIDL server if requested by `OPEN_FLAG_DESCRIBE`.
+//
+// Indicates the success or failure of the open operation, and optionally describes the
+// object. If the status is `ZX_OK`, `info` contains descriptive information about the object
+// (the same as would be returned by `Describe`).
+func (p *FileWithCtxInterface) ExpectOnOpen(ctx_ _bindings.Context) (int32, *NodeInfo, error) {
+ resp_ := &fileWithCtxOnOpenResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Recv(FileOnOpenOrdinal, resp_)
+ return resp_.S, resp_.Info, err_
+}
+
+// Synchronizes updates to the node to the underlying media, if it exists.
+//
+// This method does not require any rights.
+func (p *FileWithCtxInterface) Sync(ctx_ _bindings.Context) (int32, error) {
+ var req_ _bindings.Message
+ resp_ := &fileWithCtxSyncResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(FileSyncOrdinal, req_, resp_)
+ return resp_.S, err_
+}
+
+// Acquires information about the node.
+//
+// This method does not require any rights.
+func (p *FileWithCtxInterface) GetAttr(ctx_ _bindings.Context) (int32, NodeAttributes, error) {
+ var req_ _bindings.Message
+ resp_ := &fileWithCtxGetAttrResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(FileGetAttrOrdinal, req_, resp_)
+ return resp_.S, resp_.Attributes, err_
+}
+
+// Updates information about the node.
+// `flags` may be any of `NODE_ATTRIBUTE_FLAG_*`.
+//
+// This method requires following rights: `OPEN_RIGHT_WRITABLE`, otherwise returns
+// `ZX_ERR_BAD_HANDLE`.
+func (p *FileWithCtxInterface) SetAttr(ctx_ _bindings.Context, flags uint32, attributes NodeAttributes) (int32, error) {
+ req_ := &fileWithCtxSetAttrRequest{
+ Flags: flags,
+ Attributes: attributes,
+ }
+ resp_ := &fileWithCtxSetAttrResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(FileSetAttrOrdinal, req_, resp_)
+ return resp_.S, err_
+}
+
+// Acquires the `Directory.Open` rights and flags used to access this file.
+//
+// This method does not require any rights.
+// This method has the same functionality as GetFlags for File and is
+// meant as an in-progress replacement.
+func (p *FileWithCtxInterface) NodeGetFlags(ctx_ _bindings.Context) (int32, uint32, error) {
+ var req_ _bindings.Message
+ resp_ := &fileWithCtxNodeGetFlagsResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(FileNodeGetFlagsOrdinal, req_, resp_)
+ return resp_.S, resp_.Flags, err_
+}
+
+// Changes the `Directory.Open` flags used to access the file.
+// Supported flags which can be turned on / off:
+// - `OPEN_FLAG_APPEND`
+//
+// This method does not require any rights.
+// This method has the same functionality as SetFlags for File and is
+// meant as an in-progress replacement.
+func (p *FileWithCtxInterface) NodeSetFlags(ctx_ _bindings.Context, flags uint32) (int32, error) {
+ req_ := &fileWithCtxNodeSetFlagsRequest{
+ Flags: flags,
+ }
+ resp_ := &fileWithCtxNodeSetFlagsResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(FileNodeSetFlagsOrdinal, req_, resp_)
+ return resp_.S, err_
+}
+
+// Acquires an advisory lock on the underlying file.
+//
+// The lock lasts until either this connection is closed or
+// this method is called with |AdvisoryLockType.UNLOCK| to release the lock
+// explicitly.
+//
+// Advisory locks are purely advisory. They do not prevent actual read or
+// write operations from occurring on the file, either through this
+// connection or through other connections.
+//
+// This method requires the following rights:
+//
+// * [`Rights.READ_BYTES`] if `request.type` is [`AdvisoryLockType.READ`].
+// * [`Rights.WRITE_BYTES`] if `request.type` is
+// [`AdvisoryLockType.WRITE`].
+//
+// # Errors
+//
+// * `ZX_ERR_BAD_STATE` The specified type of lock cannot be acquired. For
+// example, another connection might hold a conflicting lock type.
+// * `ZX_ERR_NOT_SUPPORTED` This file does not support advisory locking.
+// * `ZX_ERR_ACCESS_DENIED` This connection does not have sufficient rights
+// to acquire the given type of lock.
+func (p *FileWithCtxInterface) AdvisoryLock(ctx_ _bindings.Context, request fuchsiaio2.AdvisoryLockRequest) (fuchsiaio2.AdvisoryLockingAdvisoryLockResult, error) {
+ req_ := &fileWithCtxAdvisoryLockRequest{
+ Request: request,
+ }
+ resp_ := &fileWithCtxAdvisoryLockResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(FileAdvisoryLockOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Reads `count` bytes at the seek offset.
+// The seek offset is moved forward by the number of bytes read.
+//
+// This method requires following rights: `OPEN_RIGHT_READABLE`, otherwise returns
+// `ZX_ERR_BAD_HANDLE`.
+func (p *FileWithCtxInterface) Read(ctx_ _bindings.Context, count uint64) (int32, []uint8, error) {
+ req_ := &fileWithCtxReadRequest{
+ Count: count,
+ }
+ resp_ := &fileWithCtxReadResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(FileReadOrdinal, req_, resp_)
+ return resp_.S, resp_.Data, err_
+}
+
+// Reads `count` bytes at the provided offset.
+// Does not affect the seek offset.
+//
+// This method requires following rights: `OPEN_RIGHT_READABLE`, otherwise returns
+// `ZX_ERR_BAD_HANDLE`.
+func (p *FileWithCtxInterface) ReadAt(ctx_ _bindings.Context, count uint64, offset uint64) (int32, []uint8, error) {
+ req_ := &fileWithCtxReadAtRequest{
+ Count: count,
+ Offset: offset,
+ }
+ resp_ := &fileWithCtxReadAtResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(FileReadAtOrdinal, req_, resp_)
+ return resp_.S, resp_.Data, err_
+}
+
+// Writes data at the seek offset.
+// The seek offset is moved forward by the number of bytes written.
+//
+// This method requires following rights: `OPEN_RIGHT_WRITABLE`, otherwise returns
+// `ZX_ERR_BAD_HANDLE`.
+func (p *FileWithCtxInterface) Write(ctx_ _bindings.Context, data []uint8) (int32, uint64, error) {
+ req_ := &fileWithCtxWriteRequest{
+ Data: data,
+ }
+ resp_ := &fileWithCtxWriteResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(FileWriteOrdinal, req_, resp_)
+ return resp_.S, resp_.Actual, err_
+}
+
+// Writes data to the provided offset.
+// Does not affect the seek offset.
+//
+// This method requires following rights: `OPEN_RIGHT_WRITABLE`, otherwise returns
+// `ZX_ERR_BAD_HANDLE`.
+func (p *FileWithCtxInterface) WriteAt(ctx_ _bindings.Context, data []uint8, offset uint64) (int32, uint64, error) {
+ req_ := &fileWithCtxWriteAtRequest{
+ Data: data,
+ Offset: offset,
+ }
+ resp_ := &fileWithCtxWriteAtResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(FileWriteAtOrdinal, req_, resp_)
+ return resp_.S, resp_.Actual, err_
+}
+
+// Moves the offset at which the next invocation of `Read()` or `Write()` will
+// occur.
+//
+// This method does not require any rights.
+func (p *FileWithCtxInterface) Seek(ctx_ _bindings.Context, offset int64, start SeekOrigin) (int32, uint64, error) {
+ req_ := &fileWithCtxSeekRequest{
+ Offset: offset,
+ Start: start,
+ }
+ resp_ := &fileWithCtxSeekResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(FileSeekOrdinal, req_, resp_)
+ return resp_.S, resp_.Offset, err_
+}
+
+// Shrinks the file size to 'length' bytes.
+//
+// This method requires following rights: `OPEN_RIGHT_WRITABLE`, otherwise returns
+// `ZX_ERR_BAD_HANDLE`.
+func (p *FileWithCtxInterface) Truncate(ctx_ _bindings.Context, length uint64) (int32, error) {
+ req_ := &fileWithCtxTruncateRequest{
+ Length: length,
+ }
+ resp_ := &fileWithCtxTruncateResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(FileTruncateOrdinal, req_, resp_)
+ return resp_.S, err_
+}
+
+// Acquires the `Directory.Open` rights and flags used to access this file.
+//
+// This method does not require any rights.
+func (p *FileWithCtxInterface) GetFlags(ctx_ _bindings.Context) (int32, uint32, error) {
+ var req_ _bindings.Message
+ resp_ := &fileWithCtxGetFlagsResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(FileGetFlagsOrdinal, req_, resp_)
+ return resp_.S, resp_.Flags, err_
+}
+
+// Changes the `Directory.Open` flags used to access the file.
+// Supported flags which can be turned on / off:
+// - `OPEN_FLAG_APPEND`
+//
+// This method does not require any rights.
+func (p *FileWithCtxInterface) SetFlags(ctx_ _bindings.Context, flags uint32) (int32, error) {
+ req_ := &fileWithCtxSetFlagsRequest{
+ Flags: flags,
+ }
+ resp_ := &fileWithCtxSetFlagsResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(FileSetFlagsOrdinal, req_, resp_)
+ return resp_.S, err_
+}
+
+// Acquires a buffer representing this file, if there is one, with the
+// requested access rights.
+//
+// `flags` may be any of `VMO_FLAG_*`.
+//
+// This method requires following rights:
+//
+// - `OPEN_RIGHT_WRITABLE` if `flags` includes `VMO_FLAG_WRITE`.
+// - `OPEN_RIGHT_READABLE` if `flags` includes `VMO_FLAG_READ` or `VMO_FLAG_EXEC`.
+func (p *FileWithCtxInterface) GetBuffer(ctx_ _bindings.Context, flags uint32) (int32, *fuchsiamem.Buffer, error) {
+ req_ := &fileWithCtxGetBufferRequest{
+ Flags: flags,
+ }
+ resp_ := &fileWithCtxGetBufferResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(FileGetBufferOrdinal, req_, resp_)
+ return resp_.S, resp_.Buffer, err_
+}
+
+// File defines the interface of a node which contains a flat layout of data.
+type FileWithCtx interface {
+ // Create another connection to the same remote object.
+ //
+ // `flags` may be any of:
+ //
+ // - `OPEN_RIGHT_*`
+ // - `OPEN_FLAG_APPEND`
+ // - `OPEN_FLAG_NO_REMOTE`
+ // - `OPEN_FLAG_DESCRIBE`
+ // - `CLONE_FLAG_SAME_RIGHTS`
+ //
+ // All other flags are ignored.
+ //
+ // The `OPEN_RIGHT_*` bits in `flags` request corresponding rights over the resulting
+ // cloned object.
+ // The cloned object must have rights less than or equal to the original object, otherwise
+ // returns `ZX_ERR_ACCESS_DENIED`.
+ // Alternatively, pass `CLONE_FLAG_SAME_RIGHTS` to inherit the rights on the source connection.
+ // It is invalid to pass any of the `OPEN_RIGHT_*` flags together with
+ // `CLONE_FLAG_SAME_RIGHTS`.
+ Clone(ctx_ _bindings.Context, flags uint32, object NodeWithCtxInterfaceRequest) error
+ // Terminates connection with object.
+ //
+ // This method does not require any rights.
+ Close(ctx_ _bindings.Context) (int32, error)
+ // Returns extra information about the type of the object.
+ // If the `Describe` operation fails, the connection is closed.
+ //
+ // This method does not require any rights.
+ Describe(ctx_ _bindings.Context) (NodeInfo, error)
+ // An event produced eagerly by a FIDL server if requested by `OPEN_FLAG_DESCRIBE`.
+ //
+ // Indicates the success or failure of the open operation, and optionally describes the
+ // object. If the status is `ZX_OK`, `info` contains descriptive information about the object
+ // (the same as would be returned by `Describe`).
+ // Synchronizes updates to the node to the underlying media, if it exists.
+ //
+ // This method does not require any rights.
+ Sync(ctx_ _bindings.Context) (int32, error)
+ // Acquires information about the node.
+ //
+ // This method does not require any rights.
+ GetAttr(ctx_ _bindings.Context) (int32, NodeAttributes, error)
+ // Updates information about the node.
+ // `flags` may be any of `NODE_ATTRIBUTE_FLAG_*`.
+ //
+ // This method requires following rights: `OPEN_RIGHT_WRITABLE`, otherwise returns
+ // `ZX_ERR_BAD_HANDLE`.
+ SetAttr(ctx_ _bindings.Context, flags uint32, attributes NodeAttributes) (int32, error)
+ // Acquires the `Directory.Open` rights and flags used to access this file.
+ //
+ // This method does not require any rights.
+ // This method has the same functionality as GetFlags for File and is
+ // meant as an in-progress replacement.
+ NodeGetFlags(ctx_ _bindings.Context) (int32, uint32, error)
+ // Changes the `Directory.Open` flags used to access the file.
+ // Supported flags which can be turned on / off:
+ // - `OPEN_FLAG_APPEND`
+ //
+ // This method does not require any rights.
+ // This method has the same functionality as SetFlags for File and is
+ // meant as an in-progress replacement.
+ NodeSetFlags(ctx_ _bindings.Context, flags uint32) (int32, error)
+ // Acquires an advisory lock on the underlying file.
+ //
+ // The lock lasts until either this connection is closed or
+ // this method is called with |AdvisoryLockType.UNLOCK| to release the lock
+ // explicitly.
+ //
+ // Advisory locks are purely advisory. They do not prevent actual read or
+ // write operations from occurring on the file, either through this
+ // connection or through other connections.
+ //
+ // This method requires the following rights:
+ //
+ // * [`Rights.READ_BYTES`] if `request.type` is [`AdvisoryLockType.READ`].
+ // * [`Rights.WRITE_BYTES`] if `request.type` is
+ // [`AdvisoryLockType.WRITE`].
+ //
+ // # Errors
+ //
+ // * `ZX_ERR_BAD_STATE` The specified type of lock cannot be acquired. For
+ // example, another connection might hold a conflicting lock type.
+ // * `ZX_ERR_NOT_SUPPORTED` This file does not support advisory locking.
+ // * `ZX_ERR_ACCESS_DENIED` This connection does not have sufficient rights
+ // to acquire the given type of lock.
+ AdvisoryLock(ctx_ _bindings.Context, request fuchsiaio2.AdvisoryLockRequest) (fuchsiaio2.AdvisoryLockingAdvisoryLockResult, error)
+ // Reads `count` bytes at the seek offset.
+ // The seek offset is moved forward by the number of bytes read.
+ //
+ // This method requires following rights: `OPEN_RIGHT_READABLE`, otherwise returns
+ // `ZX_ERR_BAD_HANDLE`.
+ Read(ctx_ _bindings.Context, count uint64) (int32, []uint8, error)
+ // Reads `count` bytes at the provided offset.
+ // Does not affect the seek offset.
+ //
+ // This method requires following rights: `OPEN_RIGHT_READABLE`, otherwise returns
+ // `ZX_ERR_BAD_HANDLE`.
+ ReadAt(ctx_ _bindings.Context, count uint64, offset uint64) (int32, []uint8, error)
+ // Writes data at the seek offset.
+ // The seek offset is moved forward by the number of bytes written.
+ //
+ // This method requires following rights: `OPEN_RIGHT_WRITABLE`, otherwise returns
+ // `ZX_ERR_BAD_HANDLE`.
+ Write(ctx_ _bindings.Context, data []uint8) (int32, uint64, error)
+ // Writes data to the provided offset.
+ // Does not affect the seek offset.
+ //
+ // This method requires following rights: `OPEN_RIGHT_WRITABLE`, otherwise returns
+ // `ZX_ERR_BAD_HANDLE`.
+ WriteAt(ctx_ _bindings.Context, data []uint8, offset uint64) (int32, uint64, error)
+ // Moves the offset at which the next invocation of `Read()` or `Write()` will
+ // occur.
+ //
+ // This method does not require any rights.
+ Seek(ctx_ _bindings.Context, offset int64, start SeekOrigin) (int32, uint64, error)
+ // Shrinks the file size to 'length' bytes.
+ //
+ // This method requires following rights: `OPEN_RIGHT_WRITABLE`, otherwise returns
+ // `ZX_ERR_BAD_HANDLE`.
+ Truncate(ctx_ _bindings.Context, length uint64) (int32, error)
+ // Acquires the `Directory.Open` rights and flags used to access this file.
+ //
+ // This method does not require any rights.
+ GetFlags(ctx_ _bindings.Context) (int32, uint32, error)
+ // Changes the `Directory.Open` flags used to access the file.
+ // Supported flags which can be turned on / off:
+ // - `OPEN_FLAG_APPEND`
+ //
+ // This method does not require any rights.
+ SetFlags(ctx_ _bindings.Context, flags uint32) (int32, error)
+ // Acquires a buffer representing this file, if there is one, with the
+ // requested access rights.
+ //
+ // `flags` may be any of `VMO_FLAG_*`.
+ //
+ // This method requires following rights:
+ //
+ // - `OPEN_RIGHT_WRITABLE` if `flags` includes `VMO_FLAG_WRITE`.
+ // - `OPEN_RIGHT_READABLE` if `flags` includes `VMO_FLAG_READ` or `VMO_FLAG_EXEC`.
+ GetBuffer(ctx_ _bindings.Context, flags uint32) (int32, *fuchsiamem.Buffer, error)
+}
+
+type FileWithCtxTransitionalBase struct{}
+
+func (_ *FileWithCtxTransitionalBase) NodeGetFlags(ctx_ _bindings.Context) (int32, uint32, error) {
+ panic("Not Implemented")
+}
+func (_ *FileWithCtxTransitionalBase) NodeSetFlags(ctx_ _bindings.Context, flags uint32) (int32, error) {
+ panic("Not Implemented")
+}
+func (_ *FileWithCtxTransitionalBase) AdvisoryLock(ctx_ _bindings.Context, request fuchsiaio2.AdvisoryLockRequest) (fuchsiaio2.AdvisoryLockingAdvisoryLockResult, error) {
+ panic("Not Implemented")
+}
+
+type FileWithCtxInterfaceRequest _bindings.InterfaceRequest
+
+func NewFileWithCtxInterfaceRequest() (FileWithCtxInterfaceRequest, *FileWithCtxInterface, error) {
+ req, cli, err := _bindings.NewInterfaceRequest()
+ return FileWithCtxInterfaceRequest(req), (*FileWithCtxInterface)(cli), err
+}
+
+type FileWithCtxStub struct {
+ Impl FileWithCtx
+}
+
+func (s_ *FileWithCtxStub) Dispatch(args_ _bindings.DispatchArgs) (_bindings.Message, bool, error) {
+ switch args_.Ordinal {
+ case FileCloneOrdinal:
+ in_ := fileWithCtxCloneRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ err_ := s_.Impl.Clone(args_.Ctx, in_.Flags, in_.Object)
+ return nil, false, err_
+ case FileCloseOrdinal:
+ s, err_ := s_.Impl.Close(args_.Ctx)
+ out_ := fileWithCtxCloseResponse{}
+ out_.S = s
+ return &out_, true, err_
+ case FileDescribeOrdinal:
+ info, err_ := s_.Impl.Describe(args_.Ctx)
+ out_ := fileWithCtxDescribeResponse{}
+ out_.Info = info
+ return &out_, true, err_
+ case FileSyncOrdinal:
+ s, err_ := s_.Impl.Sync(args_.Ctx)
+ out_ := fileWithCtxSyncResponse{}
+ out_.S = s
+ return &out_, true, err_
+ case FileGetAttrOrdinal:
+ s, attributes, err_ := s_.Impl.GetAttr(args_.Ctx)
+ out_ := fileWithCtxGetAttrResponse{}
+ out_.S = s
+ out_.Attributes = attributes
+ return &out_, true, err_
+ case FileSetAttrOrdinal:
+ in_ := fileWithCtxSetAttrRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ s, err_ := s_.Impl.SetAttr(args_.Ctx, in_.Flags, in_.Attributes)
+ out_ := fileWithCtxSetAttrResponse{}
+ out_.S = s
+ return &out_, true, err_
+ case FileNodeGetFlagsOrdinal:
+ s, flags, err_ := s_.Impl.NodeGetFlags(args_.Ctx)
+ out_ := fileWithCtxNodeGetFlagsResponse{}
+ out_.S = s
+ out_.Flags = flags
+ return &out_, true, err_
+ case FileNodeSetFlagsOrdinal:
+ in_ := fileWithCtxNodeSetFlagsRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ s, err_ := s_.Impl.NodeSetFlags(args_.Ctx, in_.Flags)
+ out_ := fileWithCtxNodeSetFlagsResponse{}
+ out_.S = s
+ return &out_, true, err_
+ case FileAdvisoryLockOrdinal:
+ in_ := fileWithCtxAdvisoryLockRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.AdvisoryLock(args_.Ctx, in_.Request)
+ out_ := fileWithCtxAdvisoryLockResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case FileReadOrdinal:
+ in_ := fileWithCtxReadRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ s, data, err_ := s_.Impl.Read(args_.Ctx, in_.Count)
+ out_ := fileWithCtxReadResponse{}
+ out_.S = s
+ out_.Data = data
+ return &out_, true, err_
+ case FileReadAtOrdinal:
+ in_ := fileWithCtxReadAtRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ s, data, err_ := s_.Impl.ReadAt(args_.Ctx, in_.Count, in_.Offset)
+ out_ := fileWithCtxReadAtResponse{}
+ out_.S = s
+ out_.Data = data
+ return &out_, true, err_
+ case FileWriteOrdinal:
+ in_ := fileWithCtxWriteRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ s, actual, err_ := s_.Impl.Write(args_.Ctx, in_.Data)
+ out_ := fileWithCtxWriteResponse{}
+ out_.S = s
+ out_.Actual = actual
+ return &out_, true, err_
+ case FileWriteAtOrdinal:
+ in_ := fileWithCtxWriteAtRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ s, actual, err_ := s_.Impl.WriteAt(args_.Ctx, in_.Data, in_.Offset)
+ out_ := fileWithCtxWriteAtResponse{}
+ out_.S = s
+ out_.Actual = actual
+ return &out_, true, err_
+ case FileSeekOrdinal:
+ in_ := fileWithCtxSeekRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ s, offset, err_ := s_.Impl.Seek(args_.Ctx, in_.Offset, in_.Start)
+ out_ := fileWithCtxSeekResponse{}
+ out_.S = s
+ out_.Offset = offset
+ return &out_, true, err_
+ case FileTruncateOrdinal:
+ in_ := fileWithCtxTruncateRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ s, err_ := s_.Impl.Truncate(args_.Ctx, in_.Length)
+ out_ := fileWithCtxTruncateResponse{}
+ out_.S = s
+ return &out_, true, err_
+ case FileGetFlagsOrdinal:
+ s, flags, err_ := s_.Impl.GetFlags(args_.Ctx)
+ out_ := fileWithCtxGetFlagsResponse{}
+ out_.S = s
+ out_.Flags = flags
+ return &out_, true, err_
+ case FileSetFlagsOrdinal:
+ in_ := fileWithCtxSetFlagsRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ s, err_ := s_.Impl.SetFlags(args_.Ctx, in_.Flags)
+ out_ := fileWithCtxSetFlagsResponse{}
+ out_.S = s
+ return &out_, true, err_
+ case FileGetBufferOrdinal:
+ in_ := fileWithCtxGetBufferRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ s, buffer, err_ := s_.Impl.GetBuffer(args_.Ctx, in_.Flags)
+ out_ := fileWithCtxGetBufferResponse{}
+ out_.S = s
+ out_.Buffer = buffer
+ return &out_, true, err_
+ }
+ return nil, false, _bindings.ErrUnknownOrdinal
+}
+
+type FileEventProxy _bindings.ChannelProxy
+
+func (p *FileEventProxy) OnOpen(s int32, info *NodeInfo) error {
+ event_ := &fileWithCtxOnOpenResponse{
+ S: s,
+ Info: info,
+ }
+ return ((*_bindings.ChannelProxy)(p)).Send(FileOnOpenOrdinal, event_)
+}
+
+const (
+ DirectoryWatcherOnEventOrdinal uint64 = 0x3937a088fe53412a
+)
+
+type DirectoryWatcherWithCtxInterface _bindings.ChannelProxy
+
+func (p *DirectoryWatcherWithCtxInterface) OnEvent(ctx_ _bindings.Context, events []uint8) error {
+ req_ := &directoryWatcherWithCtxOnEventRequest{
+ Events: events,
+ }
+ err_ := ((*_bindings.ChannelProxy)(p)).Send(DirectoryWatcherOnEventOrdinal, req_)
+ return err_
+}
+
+// DirectoryWatcher transmits messages from a filesystem server
+// about events happening in the filesystem. Clients can register
+// new watchers using the `Directory.Watch` method, where they can
+// filter which events they want to receive notifications for.
+type DirectoryWatcherWithCtx interface {
+ OnEvent(ctx_ _bindings.Context, events []uint8) error
+}
+
+type DirectoryWatcherWithCtxTransitionalBase struct{}
+
+type DirectoryWatcherWithCtxInterfaceRequest _bindings.InterfaceRequest
+
+func NewDirectoryWatcherWithCtxInterfaceRequest() (DirectoryWatcherWithCtxInterfaceRequest, *DirectoryWatcherWithCtxInterface, error) {
+ req, cli, err := _bindings.NewInterfaceRequest()
+ return DirectoryWatcherWithCtxInterfaceRequest(req), (*DirectoryWatcherWithCtxInterface)(cli), err
+}
+
+type DirectoryWatcherWithCtxStub struct {
+ Impl DirectoryWatcherWithCtx
+}
+
+func (s_ *DirectoryWatcherWithCtxStub) Dispatch(args_ _bindings.DispatchArgs) (_bindings.Message, bool, error) {
+ switch args_.Ordinal {
+ case DirectoryWatcherOnEventOrdinal:
+ in_ := directoryWatcherWithCtxOnEventRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ err_ := s_.Impl.OnEvent(args_.Ctx, in_.Events)
+ return nil, false, err_
+ }
+ return nil, false, _bindings.ErrUnknownOrdinal
+}
+
+type DirectoryWatcherEventProxy _bindings.ChannelProxy
+
+const (
+ DirectoryCloneOrdinal uint64 = 0x5a61678f293ce16f
+ DirectoryCloseOrdinal uint64 = 0x5309c5bd1c33dc44
+ DirectoryDescribeOrdinal uint64 = 0xffcec215078dea0
+ DirectoryOnOpenOrdinal uint64 = 0x7fc7bbb1dbfd1972
+ DirectorySyncOrdinal uint64 = 0x189d88326c18b519
+ DirectoryGetAttrOrdinal uint64 = 0x78985e216314dafd
+ DirectorySetAttrOrdinal uint64 = 0x4186c0f40d938f46
+ DirectoryNodeGetFlagsOrdinal uint64 = 0x5b88fffb8eda3aa1
+ DirectoryNodeSetFlagsOrdinal uint64 = 0x5295b76c71fde733
+ DirectoryAdvisoryLockOrdinal uint64 = 0x6358e94c468026fa
+ DirectoryOpenOrdinal uint64 = 0x2c5044561d685ec0
+ DirectoryAddInotifyFilterOrdinal uint64 = 0x5bf289cc866b68cb
+ DirectoryUnlinkOrdinal uint64 = 0x5a0ff90760a8bc23
+ DirectoryUnlink2Ordinal uint64 = 0x750a0326a78d7bed
+ DirectoryReadDirentsOrdinal uint64 = 0x3582806bf27faa0a
+ DirectoryRewindOrdinal uint64 = 0x16b1202af0f34c71
+ DirectoryGetTokenOrdinal uint64 = 0x26ae9d18763c8655
+ DirectoryRenameOrdinal uint64 = 0xa8e00a247f3c905
+ DirectoryRename2Ordinal uint64 = 0x7060e7723b9928de
+ DirectoryLinkOrdinal uint64 = 0x740604c0c7c930e7
+ DirectoryWatchOrdinal uint64 = 0x5717193a59d66d91
+)
+
+type DirectoryWithCtxInterface _bindings.ChannelProxy
+
+// Create another connection to the same remote object.
+//
+// `flags` may be any of:
+//
+// - `OPEN_RIGHT_*`
+// - `OPEN_FLAG_APPEND`
+// - `OPEN_FLAG_NO_REMOTE`
+// - `OPEN_FLAG_DESCRIBE`
+// - `CLONE_FLAG_SAME_RIGHTS`
+//
+// All other flags are ignored.
+//
+// The `OPEN_RIGHT_*` bits in `flags` request corresponding rights over the resulting
+// cloned object.
+// The cloned object must have rights less than or equal to the original object, otherwise
+// returns `ZX_ERR_ACCESS_DENIED`.
+// Alternatively, pass `CLONE_FLAG_SAME_RIGHTS` to inherit the rights on the source connection.
+// It is invalid to pass any of the `OPEN_RIGHT_*` flags together with
+// `CLONE_FLAG_SAME_RIGHTS`.
+func (p *DirectoryWithCtxInterface) Clone(ctx_ _bindings.Context, flags uint32, object NodeWithCtxInterfaceRequest) error {
+ req_ := &directoryWithCtxCloneRequest{
+ Flags: flags,
+ Object: object,
+ }
+ err_ := ((*_bindings.ChannelProxy)(p)).Send(DirectoryCloneOrdinal, req_)
+ return err_
+}
+
+// Terminates connection with object.
+//
+// This method does not require any rights.
+func (p *DirectoryWithCtxInterface) Close(ctx_ _bindings.Context) (int32, error) {
+ var req_ _bindings.Message
+ resp_ := &directoryWithCtxCloseResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryCloseOrdinal, req_, resp_)
+ return resp_.S, err_
+}
+
+// Returns extra information about the type of the object.
+// If the `Describe` operation fails, the connection is closed.
+//
+// This method does not require any rights.
+func (p *DirectoryWithCtxInterface) Describe(ctx_ _bindings.Context) (NodeInfo, error) {
+ var req_ _bindings.Message
+ resp_ := &directoryWithCtxDescribeResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryDescribeOrdinal, req_, resp_)
+ return resp_.Info, err_
+}
+
+// An event produced eagerly by a FIDL server if requested by `OPEN_FLAG_DESCRIBE`.
+//
+// Indicates the success or failure of the open operation, and optionally describes the
+// object. If the status is `ZX_OK`, `info` contains descriptive information about the object
+// (the same as would be returned by `Describe`).
+func (p *DirectoryWithCtxInterface) ExpectOnOpen(ctx_ _bindings.Context) (int32, *NodeInfo, error) {
+ resp_ := &directoryWithCtxOnOpenResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Recv(DirectoryOnOpenOrdinal, resp_)
+ return resp_.S, resp_.Info, err_
+}
+
+// Synchronizes updates to the node to the underlying media, if it exists.
+//
+// This method does not require any rights.
+func (p *DirectoryWithCtxInterface) Sync(ctx_ _bindings.Context) (int32, error) {
+ var req_ _bindings.Message
+ resp_ := &directoryWithCtxSyncResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectorySyncOrdinal, req_, resp_)
+ return resp_.S, err_
+}
+
+// Acquires information about the node.
+//
+// This method does not require any rights.
+func (p *DirectoryWithCtxInterface) GetAttr(ctx_ _bindings.Context) (int32, NodeAttributes, error) {
+ var req_ _bindings.Message
+ resp_ := &directoryWithCtxGetAttrResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryGetAttrOrdinal, req_, resp_)
+ return resp_.S, resp_.Attributes, err_
+}
+
+// Updates information about the node.
+// `flags` may be any of `NODE_ATTRIBUTE_FLAG_*`.
+//
+// This method requires following rights: `OPEN_RIGHT_WRITABLE`, otherwise returns
+// `ZX_ERR_BAD_HANDLE`.
+func (p *DirectoryWithCtxInterface) SetAttr(ctx_ _bindings.Context, flags uint32, attributes NodeAttributes) (int32, error) {
+ req_ := &directoryWithCtxSetAttrRequest{
+ Flags: flags,
+ Attributes: attributes,
+ }
+ resp_ := &directoryWithCtxSetAttrResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectorySetAttrOrdinal, req_, resp_)
+ return resp_.S, err_
+}
+
+// Acquires the `Directory.Open` rights and flags used to access this file.
+//
+// This method does not require any rights.
+// This method has the same functionality as GetFlags for File and is
+// meant as an in-progress replacement.
+func (p *DirectoryWithCtxInterface) NodeGetFlags(ctx_ _bindings.Context) (int32, uint32, error) {
+ var req_ _bindings.Message
+ resp_ := &directoryWithCtxNodeGetFlagsResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryNodeGetFlagsOrdinal, req_, resp_)
+ return resp_.S, resp_.Flags, err_
+}
+
+// Changes the `Directory.Open` flags used to access the file.
+// Supported flags which can be turned on / off:
+// - `OPEN_FLAG_APPEND`
+//
+// This method does not require any rights.
+// This method has the same functionality as SetFlags for File and is
+// meant as an in-progress replacement.
+func (p *DirectoryWithCtxInterface) NodeSetFlags(ctx_ _bindings.Context, flags uint32) (int32, error) {
+ req_ := &directoryWithCtxNodeSetFlagsRequest{
+ Flags: flags,
+ }
+ resp_ := &directoryWithCtxNodeSetFlagsResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryNodeSetFlagsOrdinal, req_, resp_)
+ return resp_.S, err_
+}
+
+// Acquires an advisory lock on the underlying file.
+//
+// The lock lasts until either this connection is closed or
+// this method is called with |AdvisoryLockType.UNLOCK| to release the lock
+// explicitly.
+//
+// Advisory locks are purely advisory. They do not prevent actual read or
+// write operations from occurring on the file, either through this
+// connection or through other connections.
+//
+// This method requires the following rights:
+//
+// * [`Rights.READ_BYTES`] if `request.type` is [`AdvisoryLockType.READ`].
+// * [`Rights.WRITE_BYTES`] if `request.type` is
+// [`AdvisoryLockType.WRITE`].
+//
+// # Errors
+//
+// * `ZX_ERR_BAD_STATE` The specified type of lock cannot be acquired. For
+// example, another connection might hold a conflicting lock type.
+// * `ZX_ERR_NOT_SUPPORTED` This file does not support advisory locking.
+// * `ZX_ERR_ACCESS_DENIED` This connection does not have sufficient rights
+// to acquire the given type of lock.
+func (p *DirectoryWithCtxInterface) AdvisoryLock(ctx_ _bindings.Context, request fuchsiaio2.AdvisoryLockRequest) (fuchsiaio2.AdvisoryLockingAdvisoryLockResult, error) {
+ req_ := &directoryWithCtxAdvisoryLockRequest{
+ Request: request,
+ }
+ resp_ := &directoryWithCtxAdvisoryLockResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryAdvisoryLockOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Opens a new object relative to this directory object.
+//
+// `path` may contain multiple segments, separated by "/" characters,
+// and should never be empty; i.e., "" is an invalid path. Paths should not contain
+// a leading "/".
+//
+// `flags` may be any of the `OPEN_FLAG_*` and `OPEN_RIGHT_*` values, bitwise ORed together.
+// The `OPEN_FLAG_DESCRIBE` flag may cause an `OnOpen` event to be transmitted
+// on the `object` handle, indicating the type of object opened.
+//
+// If an unknown value is sent for either flags or mode, the connection should
+// be closed.
+//
+// `OPEN_RIGHT_*` flags provided in `flags` will restrict access rights on
+// the `object` channel which will be connected to the opened entity.
+//
+// Rights are never increased. When you open a nested entity within a directory, you may only
+// request the same rights as what the directory connection already has, or a subset of those.
+// Exceeding those rights causes an access denied error to be transmitted in the
+// `OnOpen` event if applicable, and the `object` connection closed.
+//
+// The caller must specify either one or more of the `OPEN_RIGHT_*` flags, or
+// the `OPEN_FLAG_NODE_REFERENCE` flag.
+func (p *DirectoryWithCtxInterface) Open(ctx_ _bindings.Context, flags uint32, mode uint32, path string, object NodeWithCtxInterfaceRequest) error {
+ req_ := &directoryWithCtxOpenRequest{
+ Flags: flags,
+ Mode: mode,
+ Path: path,
+ Object: object,
+ }
+ err_ := ((*_bindings.ChannelProxy)(p)).Send(DirectoryOpenOrdinal, req_)
+ return err_
+}
+
+// Adds a new inotify filter for an object relative to this directory object.
+//
+// + 'filter` is a mask of different inotify events that need to be watched by the server
+// for a specific file/directory.
+//
+// + `path` may contain multiple segments, separated by "/" characters,
+// and should never be empty; i.e., "" is an invalid path. Paths should not contain
+// a leading "/".
+//
+// +`watch_descriptor` is client assigned value to identify a filter.
+// Server shouldn't trust the client-assigned watch_descriptor. They should just send it
+// back to the client in the socket.
+// This value is not used by server, but it is returned back as part of InotifyEvent,
+// to help the client correlate filter with events on this filter.
+//
+// + `socket` is shared between different filter objects i.e every new filter will
+// have a different server end of the socket and there will be a single client end per
+// inotify instance on inotify init.
+func (p *DirectoryWithCtxInterface) AddInotifyFilter(ctx_ _bindings.Context, path string, filter fuchsiaio2.InotifyWatchMask, watchDescriptor uint32, socket _zx.Socket) error {
+ req_ := &directoryWithCtxAddInotifyFilterRequest{
+ Path: path,
+ Filter: filter,
+ WatchDescriptor: watchDescriptor,
+ Socket: socket,
+ }
+ var resp_ _bindings.Message
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryAddInotifyFilterOrdinal, req_, resp_)
+ return err_
+}
+
+// Detaches an object from this directory object.
+//
+// The underlying object may or may not be deleted after this method
+// completes: although the link will be removed from the containing directory,
+// objects with multiple references (such as files which are still open)
+// will not actually be destroyed until all references are removed.
+//
+// If a directory is unlinked while it still has an open reference,
+// it must become read-only, preventing new entries from being created
+// until all references close and the directory is destroyed.
+//
+// `path` identifies the file which should be detached.
+// If `path` contains multiple segments, separated by "/" characters,
+// then the directory is traversed, one segment at a time, relative to the
+// originally accessed Directory.
+//
+// Returns:
+// `ZX_ERR_ACCESS_DENIED` if the connection (or the underlying filesystem) does not
+// allow writable access.
+// `ZX_ERR_INVALID_ARGS` if `path` contains ".." segments.
+// `ZX_ERR_NOT_EMPTY` if `path` refers to a non-empty directory.
+// `ZX_ERR_UNAVAILABLE` if `path` refers to a mount point, containing a remote channel.
+// `ZX_ERR_UNAVAILABLE` if `path` is ".".
+//
+// Other errors may be returned for filesystem-specific reasons.
+//
+// This method requires following rights: `OPEN_RIGHT_WRITABLE`, otherwise returns
+// `ZX_ERR_BAD_HANDLE`.
+func (p *DirectoryWithCtxInterface) Unlink(ctx_ _bindings.Context, path string) (int32, error) {
+ req_ := &directoryWithCtxUnlinkRequest{
+ Path: path,
+ }
+ resp_ := &directoryWithCtxUnlinkResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryUnlinkOrdinal, req_, resp_)
+ return resp_.S, err_
+}
+
+// Removes a child node from the this directory's list of entries.
+//
+// Note: this does not guarantee that the underlying object is destroyed.
+// Although the link will be removed from the containing directory,
+// objects with multiple references (such as files which are still open)
+// will not actually be destroyed until all references are closed.
+//
+// * error `ZX_ERR_ACCESS_DENIED` if the connection does not have
+// [`Rights.WRITE_BYTES`].
+// * error `ZX_ERR_NOT_SUPPORTED` if the underlying filesystem does not
+// support writing.
+// * error `ZX_ERR_BAD_PATH` if `name` is invalid.
+// * error `ZX_ERR_NOT_EMPTY` if `name` refers to a non-empty directory.
+// * error `ZX_ERR_UNAVAILABLE` if `name` refers to a mount point,
+// containing a remote channel.
+// * error `ZX_ERR_NOT_DIR` if the options requested a directory but something other than a
+// directory was found.
+//
+// Other errors may be returned for filesystem-specific reasons.
+//
+// This method requires the following rights:
+//
+// * [`Rights.ENUMERATE`]
+// * [`Rights.MODIFY_DIRECTORY`]
+func (p *DirectoryWithCtxInterface) Unlink2(ctx_ _bindings.Context, name string, options fuchsiaio2.UnlinkOptions) (DirectoryUnlink2Result, error) {
+ req_ := &directoryWithCtxUnlink2Request{
+ Name: name,
+ Options: options,
+ }
+ resp_ := &directoryWithCtxUnlink2Response{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryUnlink2Ordinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Reads a collection of variably sized dirents into a buffer.
+// The number of dirents in a directory may be very large: akin to
+// calling read multiple times on a file, directories have a seek
+// offset which is updated on subsequent calls to ReadDirents.
+//
+// These dirents are of the form:
+// ```
+// struct dirent {
+// // Describes the inode of the entry.
+// uint64 ino;
+// // Describes the length of the dirent name in bytes.
+// uint8 size;
+// // Describes the type of the entry. Aligned with the
+// // POSIX d_type values. Use `DIRENT_TYPE_*` constants.
+// uint8 type;
+// // Unterminated name of entry.
+// char name[0];
+// }
+// ```
+//
+// This method does not require any rights, since one could always probe for
+// directory contents by triggering name conflicts during file creation.
+func (p *DirectoryWithCtxInterface) ReadDirents(ctx_ _bindings.Context, maxBytes uint64) (int32, []uint8, error) {
+ req_ := &directoryWithCtxReadDirentsRequest{
+ MaxBytes: maxBytes,
+ }
+ resp_ := &directoryWithCtxReadDirentsResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryReadDirentsOrdinal, req_, resp_)
+ return resp_.S, resp_.Dirents, err_
+}
+
+// Resets the directory seek offset.
+//
+// This method does not require any rights, similar to ReadDirents.
+func (p *DirectoryWithCtxInterface) Rewind(ctx_ _bindings.Context) (int32, error) {
+ var req_ _bindings.Message
+ resp_ := &directoryWithCtxRewindResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryRewindOrdinal, req_, resp_)
+ return resp_.S, err_
+}
+
+// Acquires a token to a Directory which can be used to identify
+// access to it at a later point in time.
+//
+// This method requires following rights: `OPEN_RIGHT_WRITABLE`, otherwise returns
+// `ZX_ERR_BAD_HANDLE`.
+func (p *DirectoryWithCtxInterface) GetToken(ctx_ _bindings.Context) (int32, _zx.Handle, error) {
+ var req_ _bindings.Message
+ resp_ := &directoryWithCtxGetTokenResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryGetTokenOrdinal, req_, resp_)
+ return resp_.S, resp_.Token, err_
+}
+
+// Renames an object named src to the name dst, in a directory represented by token.
+//
+// `src/dst` must be resolved object names. Including "/" in any position
+// other than the end of the string will return `ZX_ERR_INVALID_ARGS`.
+// Returning "/" at the end of either string implies that it must be a
+// directory, or else `ZX_ERR_NOT_DIR` should be returned.
+//
+// This method requires following rights: `OPEN_RIGHT_WRITABLE`, otherwise returns
+// `ZX_ERR_BAD_HANDLE`.
+func (p *DirectoryWithCtxInterface) Rename(ctx_ _bindings.Context, src string, dstParentToken _zx.Handle, dst string) (int32, error) {
+ req_ := &directoryWithCtxRenameRequest{
+ Src: src,
+ DstParentToken: dstParentToken,
+ Dst: dst,
+ }
+ resp_ := &directoryWithCtxRenameResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryRenameOrdinal, req_, resp_)
+ return resp_.S, err_
+}
+
+// Renames a node named `src` to the name `dst`, in a directory represented
+// by `dst_parent_token`.
+//
+// `src` and `dst` must be valid node names.
+// See [`fuchsia.io2/Name`] for what constitutes a valid name.
+//
+// This method requires the following rights on both the current
+// connection, and the connection identified by `dst_parent_token`:
+//
+// * [`Rights.ENUMERATE`]
+// * [`Rights.MODIFY_DIRECTORY`]
+//
+// * error `ZX_ERR_INVALID_ARGS` if `src` or `dst` is invalid.
+func (p *DirectoryWithCtxInterface) Rename2(ctx_ _bindings.Context, src string, dstParentToken _zx.Event, dst string) (DirectoryRename2Result, error) {
+ req_ := &directoryWithCtxRename2Request{
+ Src: src,
+ DstParentToken: dstParentToken,
+ Dst: dst,
+ }
+ resp_ := &directoryWithCtxRename2Response{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryRename2Ordinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Creates a link to an object named src by the name dst, within a directory represented by
+// token.
+//
+// `src` must be a resolved object name. Including "/" in the string will
+// return `ZX_ERR_INVALID_ARGS`.
+//
+// `dst` must be a resolved object name. Including "/" in the string will
+// return `ZX_ERR_INVALID_ARGS`.
+//
+// This method requires following rights: `OPEN_RIGHT_WRITABLE`, otherwise returns
+// `ZX_ERR_BAD_HANDLE`.
+func (p *DirectoryWithCtxInterface) Link(ctx_ _bindings.Context, src string, dstParentToken _zx.Handle, dst string) (int32, error) {
+ req_ := &directoryWithCtxLinkRequest{
+ Src: src,
+ DstParentToken: dstParentToken,
+ Dst: dst,
+ }
+ resp_ := &directoryWithCtxLinkResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryLinkOrdinal, req_, resp_)
+ return resp_.S, err_
+}
+
+// Watches a directory, receiving events of added messages on the
+// watcher request channel.
+//
+// The `watcher` handle will send messages of the form:
+// ```
+// struct {
+// uint8 event;
+// uint8 len;
+// char name[];
+// };
+// ```
+// Where names are NOT null-terminated.
+//
+// This API is unstable; in the future, watcher will be a `DirectoryWatcher` client.
+//
+// Mask specifies a bitmask of events to observe.
+// Options must be zero; it is reserved.
+//
+// This method does not require any rights, similar to ReadDirents.
+func (p *DirectoryWithCtxInterface) Watch(ctx_ _bindings.Context, mask uint32, options uint32, watcher _zx.Channel) (int32, error) {
+ req_ := &directoryWithCtxWatchRequest{
+ Mask: mask,
+ Options: options,
+ Watcher: watcher,
+ }
+ resp_ := &directoryWithCtxWatchResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryWatchOrdinal, req_, resp_)
+ return resp_.S, err_
+}
+
+// Directory defines a node which is capable of containing other Objects.
+type DirectoryWithCtx interface {
+ // Create another connection to the same remote object.
+ //
+ // `flags` may be any of:
+ //
+ // - `OPEN_RIGHT_*`
+ // - `OPEN_FLAG_APPEND`
+ // - `OPEN_FLAG_NO_REMOTE`
+ // - `OPEN_FLAG_DESCRIBE`
+ // - `CLONE_FLAG_SAME_RIGHTS`
+ //
+ // All other flags are ignored.
+ //
+ // The `OPEN_RIGHT_*` bits in `flags` request corresponding rights over the resulting
+ // cloned object.
+ // The cloned object must have rights less than or equal to the original object, otherwise
+ // returns `ZX_ERR_ACCESS_DENIED`.
+ // Alternatively, pass `CLONE_FLAG_SAME_RIGHTS` to inherit the rights on the source connection.
+ // It is invalid to pass any of the `OPEN_RIGHT_*` flags together with
+ // `CLONE_FLAG_SAME_RIGHTS`.
+ Clone(ctx_ _bindings.Context, flags uint32, object NodeWithCtxInterfaceRequest) error
+ // Terminates connection with object.
+ //
+ // This method does not require any rights.
+ Close(ctx_ _bindings.Context) (int32, error)
+ // Returns extra information about the type of the object.
+ // If the `Describe` operation fails, the connection is closed.
+ //
+ // This method does not require any rights.
+ Describe(ctx_ _bindings.Context) (NodeInfo, error)
+ // An event produced eagerly by a FIDL server if requested by `OPEN_FLAG_DESCRIBE`.
+ //
+ // Indicates the success or failure of the open operation, and optionally describes the
+ // object. If the status is `ZX_OK`, `info` contains descriptive information about the object
+ // (the same as would be returned by `Describe`).
+ // Synchronizes updates to the node to the underlying media, if it exists.
+ //
+ // This method does not require any rights.
+ Sync(ctx_ _bindings.Context) (int32, error)
+ // Acquires information about the node.
+ //
+ // This method does not require any rights.
+ GetAttr(ctx_ _bindings.Context) (int32, NodeAttributes, error)
+ // Updates information about the node.
+ // `flags` may be any of `NODE_ATTRIBUTE_FLAG_*`.
+ //
+ // This method requires following rights: `OPEN_RIGHT_WRITABLE`, otherwise returns
+ // `ZX_ERR_BAD_HANDLE`.
+ SetAttr(ctx_ _bindings.Context, flags uint32, attributes NodeAttributes) (int32, error)
+ // Acquires the `Directory.Open` rights and flags used to access this file.
+ //
+ // This method does not require any rights.
+ // This method has the same functionality as GetFlags for File and is
+ // meant as an in-progress replacement.
+ NodeGetFlags(ctx_ _bindings.Context) (int32, uint32, error)
+ // Changes the `Directory.Open` flags used to access the file.
+ // Supported flags which can be turned on / off:
+ // - `OPEN_FLAG_APPEND`
+ //
+ // This method does not require any rights.
+ // This method has the same functionality as SetFlags for File and is
+ // meant as an in-progress replacement.
+ NodeSetFlags(ctx_ _bindings.Context, flags uint32) (int32, error)
+ // Acquires an advisory lock on the underlying file.
+ //
+ // The lock lasts until either this connection is closed or
+ // this method is called with |AdvisoryLockType.UNLOCK| to release the lock
+ // explicitly.
+ //
+ // Advisory locks are purely advisory. They do not prevent actual read or
+ // write operations from occurring on the file, either through this
+ // connection or through other connections.
+ //
+ // This method requires the following rights:
+ //
+ // * [`Rights.READ_BYTES`] if `request.type` is [`AdvisoryLockType.READ`].
+ // * [`Rights.WRITE_BYTES`] if `request.type` is
+ // [`AdvisoryLockType.WRITE`].
+ //
+ // # Errors
+ //
+ // * `ZX_ERR_BAD_STATE` The specified type of lock cannot be acquired. For
+ // example, another connection might hold a conflicting lock type.
+ // * `ZX_ERR_NOT_SUPPORTED` This file does not support advisory locking.
+ // * `ZX_ERR_ACCESS_DENIED` This connection does not have sufficient rights
+ // to acquire the given type of lock.
+ AdvisoryLock(ctx_ _bindings.Context, request fuchsiaio2.AdvisoryLockRequest) (fuchsiaio2.AdvisoryLockingAdvisoryLockResult, error)
+ // Opens a new object relative to this directory object.
+ //
+ // `path` may contain multiple segments, separated by "/" characters,
+ // and should never be empty; i.e., "" is an invalid path. Paths should not contain
+ // a leading "/".
+ //
+ // `flags` may be any of the `OPEN_FLAG_*` and `OPEN_RIGHT_*` values, bitwise ORed together.
+ // The `OPEN_FLAG_DESCRIBE` flag may cause an `OnOpen` event to be transmitted
+ // on the `object` handle, indicating the type of object opened.
+ //
+ // If an unknown value is sent for either flags or mode, the connection should
+ // be closed.
+ //
+ // `OPEN_RIGHT_*` flags provided in `flags` will restrict access rights on
+ // the `object` channel which will be connected to the opened entity.
+ //
+ // Rights are never increased. When you open a nested entity within a directory, you may only
+ // request the same rights as what the directory connection already has, or a subset of those.
+ // Exceeding those rights causes an access denied error to be transmitted in the
+ // `OnOpen` event if applicable, and the `object` connection closed.
+ //
+ // The caller must specify either one or more of the `OPEN_RIGHT_*` flags, or
+ // the `OPEN_FLAG_NODE_REFERENCE` flag.
+ Open(ctx_ _bindings.Context, flags uint32, mode uint32, path string, object NodeWithCtxInterfaceRequest) error
+ // Adds a new inotify filter for an object relative to this directory object.
+ //
+ // + 'filter` is a mask of different inotify events that need to be watched by the server
+ // for a specific file/directory.
+ //
+ // + `path` may contain multiple segments, separated by "/" characters,
+ // and should never be empty; i.e., "" is an invalid path. Paths should not contain
+ // a leading "/".
+ //
+ // +`watch_descriptor` is client assigned value to identify a filter.
+ // Server shouldn't trust the client-assigned watch_descriptor. They should just send it
+ // back to the client in the socket.
+ // This value is not used by server, but it is returned back as part of InotifyEvent,
+ // to help the client correlate filter with events on this filter.
+ //
+ // + `socket` is shared between different filter objects i.e every new filter will
+ // have a different server end of the socket and there will be a single client end per
+ // inotify instance on inotify init.
+ AddInotifyFilter(ctx_ _bindings.Context, path string, filter fuchsiaio2.InotifyWatchMask, watchDescriptor uint32, socket _zx.Socket) error
+ // Detaches an object from this directory object.
+ //
+ // The underlying object may or may not be deleted after this method
+ // completes: although the link will be removed from the containing directory,
+ // objects with multiple references (such as files which are still open)
+ // will not actually be destroyed until all references are removed.
+ //
+ // If a directory is unlinked while it still has an open reference,
+ // it must become read-only, preventing new entries from being created
+ // until all references close and the directory is destroyed.
+ //
+ // `path` identifies the file which should be detached.
+ // If `path` contains multiple segments, separated by "/" characters,
+ // then the directory is traversed, one segment at a time, relative to the
+ // originally accessed Directory.
+ //
+ // Returns:
+ // `ZX_ERR_ACCESS_DENIED` if the connection (or the underlying filesystem) does not
+ // allow writable access.
+ // `ZX_ERR_INVALID_ARGS` if `path` contains ".." segments.
+ // `ZX_ERR_NOT_EMPTY` if `path` refers to a non-empty directory.
+ // `ZX_ERR_UNAVAILABLE` if `path` refers to a mount point, containing a remote channel.
+ // `ZX_ERR_UNAVAILABLE` if `path` is ".".
+ //
+ // Other errors may be returned for filesystem-specific reasons.
+ //
+ // This method requires following rights: `OPEN_RIGHT_WRITABLE`, otherwise returns
+ // `ZX_ERR_BAD_HANDLE`.
+ Unlink(ctx_ _bindings.Context, path string) (int32, error)
+ // Removes a child node from the this directory's list of entries.
+ //
+ // Note: this does not guarantee that the underlying object is destroyed.
+ // Although the link will be removed from the containing directory,
+ // objects with multiple references (such as files which are still open)
+ // will not actually be destroyed until all references are closed.
+ //
+ // * error `ZX_ERR_ACCESS_DENIED` if the connection does not have
+ // [`Rights.WRITE_BYTES`].
+ // * error `ZX_ERR_NOT_SUPPORTED` if the underlying filesystem does not
+ // support writing.
+ // * error `ZX_ERR_BAD_PATH` if `name` is invalid.
+ // * error `ZX_ERR_NOT_EMPTY` if `name` refers to a non-empty directory.
+ // * error `ZX_ERR_UNAVAILABLE` if `name` refers to a mount point,
+ // containing a remote channel.
+ // * error `ZX_ERR_NOT_DIR` if the options requested a directory but something other than a
+ // directory was found.
+ //
+ // Other errors may be returned for filesystem-specific reasons.
+ //
+ // This method requires the following rights:
+ //
+ // * [`Rights.ENUMERATE`]
+ // * [`Rights.MODIFY_DIRECTORY`]
+ Unlink2(ctx_ _bindings.Context, name string, options fuchsiaio2.UnlinkOptions) (DirectoryUnlink2Result, error)
+ // Reads a collection of variably sized dirents into a buffer.
+ // The number of dirents in a directory may be very large: akin to
+ // calling read multiple times on a file, directories have a seek
+ // offset which is updated on subsequent calls to ReadDirents.
+ //
+ // These dirents are of the form:
+ // ```
+ // struct dirent {
+ // // Describes the inode of the entry.
+ // uint64 ino;
+ // // Describes the length of the dirent name in bytes.
+ // uint8 size;
+ // // Describes the type of the entry. Aligned with the
+ // // POSIX d_type values. Use `DIRENT_TYPE_*` constants.
+ // uint8 type;
+ // // Unterminated name of entry.
+ // char name[0];
+ // }
+ // ```
+ //
+ // This method does not require any rights, since one could always probe for
+ // directory contents by triggering name conflicts during file creation.
+ ReadDirents(ctx_ _bindings.Context, maxBytes uint64) (int32, []uint8, error)
+ // Resets the directory seek offset.
+ //
+ // This method does not require any rights, similar to ReadDirents.
+ Rewind(ctx_ _bindings.Context) (int32, error)
+ // Acquires a token to a Directory which can be used to identify
+ // access to it at a later point in time.
+ //
+ // This method requires following rights: `OPEN_RIGHT_WRITABLE`, otherwise returns
+ // `ZX_ERR_BAD_HANDLE`.
+ GetToken(ctx_ _bindings.Context) (int32, _zx.Handle, error)
+ // Renames an object named src to the name dst, in a directory represented by token.
+ //
+ // `src/dst` must be resolved object names. Including "/" in any position
+ // other than the end of the string will return `ZX_ERR_INVALID_ARGS`.
+ // Returning "/" at the end of either string implies that it must be a
+ // directory, or else `ZX_ERR_NOT_DIR` should be returned.
+ //
+ // This method requires following rights: `OPEN_RIGHT_WRITABLE`, otherwise returns
+ // `ZX_ERR_BAD_HANDLE`.
+ Rename(ctx_ _bindings.Context, src string, dstParentToken _zx.Handle, dst string) (int32, error)
+ // Renames a node named `src` to the name `dst`, in a directory represented
+ // by `dst_parent_token`.
+ //
+ // `src` and `dst` must be valid node names.
+ // See [`fuchsia.io2/Name`] for what constitutes a valid name.
+ //
+ // This method requires the following rights on both the current
+ // connection, and the connection identified by `dst_parent_token`:
+ //
+ // * [`Rights.ENUMERATE`]
+ // * [`Rights.MODIFY_DIRECTORY`]
+ //
+ // * error `ZX_ERR_INVALID_ARGS` if `src` or `dst` is invalid.
+ Rename2(ctx_ _bindings.Context, src string, dstParentToken _zx.Event, dst string) (DirectoryRename2Result, error)
+ // Creates a link to an object named src by the name dst, within a directory represented by
+ // token.
+ //
+ // `src` must be a resolved object name. Including "/" in the string will
+ // return `ZX_ERR_INVALID_ARGS`.
+ //
+ // `dst` must be a resolved object name. Including "/" in the string will
+ // return `ZX_ERR_INVALID_ARGS`.
+ //
+ // This method requires following rights: `OPEN_RIGHT_WRITABLE`, otherwise returns
+ // `ZX_ERR_BAD_HANDLE`.
+ Link(ctx_ _bindings.Context, src string, dstParentToken _zx.Handle, dst string) (int32, error)
+ // Watches a directory, receiving events of added messages on the
+ // watcher request channel.
+ //
+ // The `watcher` handle will send messages of the form:
+ // ```
+ // struct {
+ // uint8 event;
+ // uint8 len;
+ // char name[];
+ // };
+ // ```
+ // Where names are NOT null-terminated.
+ //
+ // This API is unstable; in the future, watcher will be a `DirectoryWatcher` client.
+ //
+ // Mask specifies a bitmask of events to observe.
+ // Options must be zero; it is reserved.
+ //
+ // This method does not require any rights, similar to ReadDirents.
+ Watch(ctx_ _bindings.Context, mask uint32, options uint32, watcher _zx.Channel) (int32, error)
+}
+
+type DirectoryWithCtxTransitionalBase struct{}
+
+func (_ *DirectoryWithCtxTransitionalBase) NodeGetFlags(ctx_ _bindings.Context) (int32, uint32, error) {
+ panic("Not Implemented")
+}
+func (_ *DirectoryWithCtxTransitionalBase) NodeSetFlags(ctx_ _bindings.Context, flags uint32) (int32, error) {
+ panic("Not Implemented")
+}
+func (_ *DirectoryWithCtxTransitionalBase) AdvisoryLock(ctx_ _bindings.Context, request fuchsiaio2.AdvisoryLockRequest) (fuchsiaio2.AdvisoryLockingAdvisoryLockResult, error) {
+ panic("Not Implemented")
+}
+func (_ *DirectoryWithCtxTransitionalBase) Unlink2(ctx_ _bindings.Context, name string, options fuchsiaio2.UnlinkOptions) (DirectoryUnlink2Result, error) {
+ panic("Not Implemented")
+}
+func (_ *DirectoryWithCtxTransitionalBase) Rename(ctx_ _bindings.Context, src string, dstParentToken _zx.Handle, dst string) (int32, error) {
+ panic("Not Implemented")
+}
+
+type DirectoryWithCtxInterfaceRequest _bindings.InterfaceRequest
+
+func NewDirectoryWithCtxInterfaceRequest() (DirectoryWithCtxInterfaceRequest, *DirectoryWithCtxInterface, error) {
+ req, cli, err := _bindings.NewInterfaceRequest()
+ return DirectoryWithCtxInterfaceRequest(req), (*DirectoryWithCtxInterface)(cli), err
+}
+
+type DirectoryWithCtxStub struct {
+ Impl DirectoryWithCtx
+}
+
+func (s_ *DirectoryWithCtxStub) Dispatch(args_ _bindings.DispatchArgs) (_bindings.Message, bool, error) {
+ switch args_.Ordinal {
+ case DirectoryCloneOrdinal:
+ in_ := directoryWithCtxCloneRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ err_ := s_.Impl.Clone(args_.Ctx, in_.Flags, in_.Object)
+ return nil, false, err_
+ case DirectoryCloseOrdinal:
+ s, err_ := s_.Impl.Close(args_.Ctx)
+ out_ := directoryWithCtxCloseResponse{}
+ out_.S = s
+ return &out_, true, err_
+ case DirectoryDescribeOrdinal:
+ info, err_ := s_.Impl.Describe(args_.Ctx)
+ out_ := directoryWithCtxDescribeResponse{}
+ out_.Info = info
+ return &out_, true, err_
+ case DirectorySyncOrdinal:
+ s, err_ := s_.Impl.Sync(args_.Ctx)
+ out_ := directoryWithCtxSyncResponse{}
+ out_.S = s
+ return &out_, true, err_
+ case DirectoryGetAttrOrdinal:
+ s, attributes, err_ := s_.Impl.GetAttr(args_.Ctx)
+ out_ := directoryWithCtxGetAttrResponse{}
+ out_.S = s
+ out_.Attributes = attributes
+ return &out_, true, err_
+ case DirectorySetAttrOrdinal:
+ in_ := directoryWithCtxSetAttrRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ s, err_ := s_.Impl.SetAttr(args_.Ctx, in_.Flags, in_.Attributes)
+ out_ := directoryWithCtxSetAttrResponse{}
+ out_.S = s
+ return &out_, true, err_
+ case DirectoryNodeGetFlagsOrdinal:
+ s, flags, err_ := s_.Impl.NodeGetFlags(args_.Ctx)
+ out_ := directoryWithCtxNodeGetFlagsResponse{}
+ out_.S = s
+ out_.Flags = flags
+ return &out_, true, err_
+ case DirectoryNodeSetFlagsOrdinal:
+ in_ := directoryWithCtxNodeSetFlagsRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ s, err_ := s_.Impl.NodeSetFlags(args_.Ctx, in_.Flags)
+ out_ := directoryWithCtxNodeSetFlagsResponse{}
+ out_.S = s
+ return &out_, true, err_
+ case DirectoryAdvisoryLockOrdinal:
+ in_ := directoryWithCtxAdvisoryLockRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.AdvisoryLock(args_.Ctx, in_.Request)
+ out_ := directoryWithCtxAdvisoryLockResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DirectoryOpenOrdinal:
+ in_ := directoryWithCtxOpenRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ err_ := s_.Impl.Open(args_.Ctx, in_.Flags, in_.Mode, in_.Path, in_.Object)
+ return nil, false, err_
+ case DirectoryAddInotifyFilterOrdinal:
+ in_ := directoryWithCtxAddInotifyFilterRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ err_ := s_.Impl.AddInotifyFilter(args_.Ctx, in_.Path, in_.Filter, in_.WatchDescriptor, in_.Socket)
+ return nil, true, err_
+ case DirectoryUnlinkOrdinal:
+ in_ := directoryWithCtxUnlinkRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ s, err_ := s_.Impl.Unlink(args_.Ctx, in_.Path)
+ out_ := directoryWithCtxUnlinkResponse{}
+ out_.S = s
+ return &out_, true, err_
+ case DirectoryUnlink2Ordinal:
+ in_ := directoryWithCtxUnlink2Request{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.Unlink2(args_.Ctx, in_.Name, in_.Options)
+ out_ := directoryWithCtxUnlink2Response{}
+ out_.Result = result
+ return &out_, true, err_
+ case DirectoryReadDirentsOrdinal:
+ in_ := directoryWithCtxReadDirentsRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ s, dirents, err_ := s_.Impl.ReadDirents(args_.Ctx, in_.MaxBytes)
+ out_ := directoryWithCtxReadDirentsResponse{}
+ out_.S = s
+ out_.Dirents = dirents
+ return &out_, true, err_
+ case DirectoryRewindOrdinal:
+ s, err_ := s_.Impl.Rewind(args_.Ctx)
+ out_ := directoryWithCtxRewindResponse{}
+ out_.S = s
+ return &out_, true, err_
+ case DirectoryGetTokenOrdinal:
+ s, token, err_ := s_.Impl.GetToken(args_.Ctx)
+ out_ := directoryWithCtxGetTokenResponse{}
+ out_.S = s
+ out_.Token = token
+ return &out_, true, err_
+ case DirectoryRenameOrdinal:
+ in_ := directoryWithCtxRenameRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ s, err_ := s_.Impl.Rename(args_.Ctx, in_.Src, in_.DstParentToken, in_.Dst)
+ out_ := directoryWithCtxRenameResponse{}
+ out_.S = s
+ return &out_, true, err_
+ case DirectoryRename2Ordinal:
+ in_ := directoryWithCtxRename2Request{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.Rename2(args_.Ctx, in_.Src, in_.DstParentToken, in_.Dst)
+ out_ := directoryWithCtxRename2Response{}
+ out_.Result = result
+ return &out_, true, err_
+ case DirectoryLinkOrdinal:
+ in_ := directoryWithCtxLinkRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ s, err_ := s_.Impl.Link(args_.Ctx, in_.Src, in_.DstParentToken, in_.Dst)
+ out_ := directoryWithCtxLinkResponse{}
+ out_.S = s
+ return &out_, true, err_
+ case DirectoryWatchOrdinal:
+ in_ := directoryWithCtxWatchRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ s, err_ := s_.Impl.Watch(args_.Ctx, in_.Mask, in_.Options, in_.Watcher)
+ out_ := directoryWithCtxWatchResponse{}
+ out_.S = s
+ return &out_, true, err_
+ }
+ return nil, false, _bindings.ErrUnknownOrdinal
+}
+
+type DirectoryEventProxy _bindings.ChannelProxy
+
+func (p *DirectoryEventProxy) OnOpen(s int32, info *NodeInfo) error {
+ event_ := &directoryWithCtxOnOpenResponse{
+ S: s,
+ Info: info,
+ }
+ return ((*_bindings.ChannelProxy)(p)).Send(DirectoryOnOpenOrdinal, event_)
+}
+
+const (
+ DirectoryAdminCloneOrdinal uint64 = 0x5a61678f293ce16f
+ DirectoryAdminCloseOrdinal uint64 = 0x5309c5bd1c33dc44
+ DirectoryAdminDescribeOrdinal uint64 = 0xffcec215078dea0
+ DirectoryAdminOnOpenOrdinal uint64 = 0x7fc7bbb1dbfd1972
+ DirectoryAdminSyncOrdinal uint64 = 0x189d88326c18b519
+ DirectoryAdminGetAttrOrdinal uint64 = 0x78985e216314dafd
+ DirectoryAdminSetAttrOrdinal uint64 = 0x4186c0f40d938f46
+ DirectoryAdminNodeGetFlagsOrdinal uint64 = 0x5b88fffb8eda3aa1
+ DirectoryAdminNodeSetFlagsOrdinal uint64 = 0x5295b76c71fde733
+ DirectoryAdminAdvisoryLockOrdinal uint64 = 0x6358e94c468026fa
+ DirectoryAdminOpenOrdinal uint64 = 0x2c5044561d685ec0
+ DirectoryAdminAddInotifyFilterOrdinal uint64 = 0x5bf289cc866b68cb
+ DirectoryAdminUnlinkOrdinal uint64 = 0x5a0ff90760a8bc23
+ DirectoryAdminUnlink2Ordinal uint64 = 0x750a0326a78d7bed
+ DirectoryAdminReadDirentsOrdinal uint64 = 0x3582806bf27faa0a
+ DirectoryAdminRewindOrdinal uint64 = 0x16b1202af0f34c71
+ DirectoryAdminGetTokenOrdinal uint64 = 0x26ae9d18763c8655
+ DirectoryAdminRenameOrdinal uint64 = 0xa8e00a247f3c905
+ DirectoryAdminRename2Ordinal uint64 = 0x7060e7723b9928de
+ DirectoryAdminLinkOrdinal uint64 = 0x740604c0c7c930e7
+ DirectoryAdminWatchOrdinal uint64 = 0x5717193a59d66d91
+ DirectoryAdminMountOrdinal uint64 = 0xfa166d1522c27d0
+ DirectoryAdminMountAndCreateOrdinal uint64 = 0x7bc782242022b3b3
+ DirectoryAdminUnmountOrdinal uint64 = 0x7da45d654c35c9a4
+ DirectoryAdminUnmountNodeOrdinal uint64 = 0x26b9d90ebe5f93db
+ DirectoryAdminQueryFilesystemOrdinal uint64 = 0x4a879480f1d7875d
+ DirectoryAdminGetDevicePathOrdinal uint64 = 0x76f2e3c7331f815b
+)
+
+type DirectoryAdminWithCtxInterface _bindings.ChannelProxy
+
+// Create another connection to the same remote object.
+//
+// `flags` may be any of:
+//
+// - `OPEN_RIGHT_*`
+// - `OPEN_FLAG_APPEND`
+// - `OPEN_FLAG_NO_REMOTE`
+// - `OPEN_FLAG_DESCRIBE`
+// - `CLONE_FLAG_SAME_RIGHTS`
+//
+// All other flags are ignored.
+//
+// The `OPEN_RIGHT_*` bits in `flags` request corresponding rights over the resulting
+// cloned object.
+// The cloned object must have rights less than or equal to the original object, otherwise
+// returns `ZX_ERR_ACCESS_DENIED`.
+// Alternatively, pass `CLONE_FLAG_SAME_RIGHTS` to inherit the rights on the source connection.
+// It is invalid to pass any of the `OPEN_RIGHT_*` flags together with
+// `CLONE_FLAG_SAME_RIGHTS`.
+func (p *DirectoryAdminWithCtxInterface) Clone(ctx_ _bindings.Context, flags uint32, object NodeWithCtxInterfaceRequest) error {
+ req_ := &directoryAdminWithCtxCloneRequest{
+ Flags: flags,
+ Object: object,
+ }
+ err_ := ((*_bindings.ChannelProxy)(p)).Send(DirectoryAdminCloneOrdinal, req_)
+ return err_
+}
+
+// Terminates connection with object.
+//
+// This method does not require any rights.
+func (p *DirectoryAdminWithCtxInterface) Close(ctx_ _bindings.Context) (int32, error) {
+ var req_ _bindings.Message
+ resp_ := &directoryAdminWithCtxCloseResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryAdminCloseOrdinal, req_, resp_)
+ return resp_.S, err_
+}
+
+// Returns extra information about the type of the object.
+// If the `Describe` operation fails, the connection is closed.
+//
+// This method does not require any rights.
+func (p *DirectoryAdminWithCtxInterface) Describe(ctx_ _bindings.Context) (NodeInfo, error) {
+ var req_ _bindings.Message
+ resp_ := &directoryAdminWithCtxDescribeResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryAdminDescribeOrdinal, req_, resp_)
+ return resp_.Info, err_
+}
+
+// An event produced eagerly by a FIDL server if requested by `OPEN_FLAG_DESCRIBE`.
+//
+// Indicates the success or failure of the open operation, and optionally describes the
+// object. If the status is `ZX_OK`, `info` contains descriptive information about the object
+// (the same as would be returned by `Describe`).
+func (p *DirectoryAdminWithCtxInterface) ExpectOnOpen(ctx_ _bindings.Context) (int32, *NodeInfo, error) {
+ resp_ := &directoryAdminWithCtxOnOpenResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Recv(DirectoryAdminOnOpenOrdinal, resp_)
+ return resp_.S, resp_.Info, err_
+}
+
+// Synchronizes updates to the node to the underlying media, if it exists.
+//
+// This method does not require any rights.
+func (p *DirectoryAdminWithCtxInterface) Sync(ctx_ _bindings.Context) (int32, error) {
+ var req_ _bindings.Message
+ resp_ := &directoryAdminWithCtxSyncResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryAdminSyncOrdinal, req_, resp_)
+ return resp_.S, err_
+}
+
+// Acquires information about the node.
+//
+// This method does not require any rights.
+func (p *DirectoryAdminWithCtxInterface) GetAttr(ctx_ _bindings.Context) (int32, NodeAttributes, error) {
+ var req_ _bindings.Message
+ resp_ := &directoryAdminWithCtxGetAttrResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryAdminGetAttrOrdinal, req_, resp_)
+ return resp_.S, resp_.Attributes, err_
+}
+
+// Updates information about the node.
+// `flags` may be any of `NODE_ATTRIBUTE_FLAG_*`.
+//
+// This method requires following rights: `OPEN_RIGHT_WRITABLE`, otherwise returns
+// `ZX_ERR_BAD_HANDLE`.
+func (p *DirectoryAdminWithCtxInterface) SetAttr(ctx_ _bindings.Context, flags uint32, attributes NodeAttributes) (int32, error) {
+ req_ := &directoryAdminWithCtxSetAttrRequest{
+ Flags: flags,
+ Attributes: attributes,
+ }
+ resp_ := &directoryAdminWithCtxSetAttrResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryAdminSetAttrOrdinal, req_, resp_)
+ return resp_.S, err_
+}
+
+// Acquires the `Directory.Open` rights and flags used to access this file.
+//
+// This method does not require any rights.
+// This method has the same functionality as GetFlags for File and is
+// meant as an in-progress replacement.
+func (p *DirectoryAdminWithCtxInterface) NodeGetFlags(ctx_ _bindings.Context) (int32, uint32, error) {
+ var req_ _bindings.Message
+ resp_ := &directoryAdminWithCtxNodeGetFlagsResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryAdminNodeGetFlagsOrdinal, req_, resp_)
+ return resp_.S, resp_.Flags, err_
+}
+
+// Changes the `Directory.Open` flags used to access the file.
+// Supported flags which can be turned on / off:
+// - `OPEN_FLAG_APPEND`
+//
+// This method does not require any rights.
+// This method has the same functionality as SetFlags for File and is
+// meant as an in-progress replacement.
+func (p *DirectoryAdminWithCtxInterface) NodeSetFlags(ctx_ _bindings.Context, flags uint32) (int32, error) {
+ req_ := &directoryAdminWithCtxNodeSetFlagsRequest{
+ Flags: flags,
+ }
+ resp_ := &directoryAdminWithCtxNodeSetFlagsResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryAdminNodeSetFlagsOrdinal, req_, resp_)
+ return resp_.S, err_
+}
+
+// Acquires an advisory lock on the underlying file.
+//
+// The lock lasts until either this connection is closed or
+// this method is called with |AdvisoryLockType.UNLOCK| to release the lock
+// explicitly.
+//
+// Advisory locks are purely advisory. They do not prevent actual read or
+// write operations from occurring on the file, either through this
+// connection or through other connections.
+//
+// This method requires the following rights:
+//
+// * [`Rights.READ_BYTES`] if `request.type` is [`AdvisoryLockType.READ`].
+// * [`Rights.WRITE_BYTES`] if `request.type` is
+// [`AdvisoryLockType.WRITE`].
+//
+// # Errors
+//
+// * `ZX_ERR_BAD_STATE` The specified type of lock cannot be acquired. For
+// example, another connection might hold a conflicting lock type.
+// * `ZX_ERR_NOT_SUPPORTED` This file does not support advisory locking.
+// * `ZX_ERR_ACCESS_DENIED` This connection does not have sufficient rights
+// to acquire the given type of lock.
+func (p *DirectoryAdminWithCtxInterface) AdvisoryLock(ctx_ _bindings.Context, request fuchsiaio2.AdvisoryLockRequest) (fuchsiaio2.AdvisoryLockingAdvisoryLockResult, error) {
+ req_ := &directoryAdminWithCtxAdvisoryLockRequest{
+ Request: request,
+ }
+ resp_ := &directoryAdminWithCtxAdvisoryLockResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryAdminAdvisoryLockOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Opens a new object relative to this directory object.
+//
+// `path` may contain multiple segments, separated by "/" characters,
+// and should never be empty; i.e., "" is an invalid path. Paths should not contain
+// a leading "/".
+//
+// `flags` may be any of the `OPEN_FLAG_*` and `OPEN_RIGHT_*` values, bitwise ORed together.
+// The `OPEN_FLAG_DESCRIBE` flag may cause an `OnOpen` event to be transmitted
+// on the `object` handle, indicating the type of object opened.
+//
+// If an unknown value is sent for either flags or mode, the connection should
+// be closed.
+//
+// `OPEN_RIGHT_*` flags provided in `flags` will restrict access rights on
+// the `object` channel which will be connected to the opened entity.
+//
+// Rights are never increased. When you open a nested entity within a directory, you may only
+// request the same rights as what the directory connection already has, or a subset of those.
+// Exceeding those rights causes an access denied error to be transmitted in the
+// `OnOpen` event if applicable, and the `object` connection closed.
+//
+// The caller must specify either one or more of the `OPEN_RIGHT_*` flags, or
+// the `OPEN_FLAG_NODE_REFERENCE` flag.
+func (p *DirectoryAdminWithCtxInterface) Open(ctx_ _bindings.Context, flags uint32, mode uint32, path string, object NodeWithCtxInterfaceRequest) error {
+ req_ := &directoryAdminWithCtxOpenRequest{
+ Flags: flags,
+ Mode: mode,
+ Path: path,
+ Object: object,
+ }
+ err_ := ((*_bindings.ChannelProxy)(p)).Send(DirectoryAdminOpenOrdinal, req_)
+ return err_
+}
+
+// Adds a new inotify filter for an object relative to this directory object.
+//
+// + 'filter` is a mask of different inotify events that need to be watched by the server
+// for a specific file/directory.
+//
+// + `path` may contain multiple segments, separated by "/" characters,
+// and should never be empty; i.e., "" is an invalid path. Paths should not contain
+// a leading "/".
+//
+// +`watch_descriptor` is client assigned value to identify a filter.
+// Server shouldn't trust the client-assigned watch_descriptor. They should just send it
+// back to the client in the socket.
+// This value is not used by server, but it is returned back as part of InotifyEvent,
+// to help the client correlate filter with events on this filter.
+//
+// + `socket` is shared between different filter objects i.e every new filter will
+// have a different server end of the socket and there will be a single client end per
+// inotify instance on inotify init.
+func (p *DirectoryAdminWithCtxInterface) AddInotifyFilter(ctx_ _bindings.Context, path string, filter fuchsiaio2.InotifyWatchMask, watchDescriptor uint32, socket _zx.Socket) error {
+ req_ := &directoryAdminWithCtxAddInotifyFilterRequest{
+ Path: path,
+ Filter: filter,
+ WatchDescriptor: watchDescriptor,
+ Socket: socket,
+ }
+ var resp_ _bindings.Message
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryAdminAddInotifyFilterOrdinal, req_, resp_)
+ return err_
+}
+
+// Detaches an object from this directory object.
+//
+// The underlying object may or may not be deleted after this method
+// completes: although the link will be removed from the containing directory,
+// objects with multiple references (such as files which are still open)
+// will not actually be destroyed until all references are removed.
+//
+// If a directory is unlinked while it still has an open reference,
+// it must become read-only, preventing new entries from being created
+// until all references close and the directory is destroyed.
+//
+// `path` identifies the file which should be detached.
+// If `path` contains multiple segments, separated by "/" characters,
+// then the directory is traversed, one segment at a time, relative to the
+// originally accessed Directory.
+//
+// Returns:
+// `ZX_ERR_ACCESS_DENIED` if the connection (or the underlying filesystem) does not
+// allow writable access.
+// `ZX_ERR_INVALID_ARGS` if `path` contains ".." segments.
+// `ZX_ERR_NOT_EMPTY` if `path` refers to a non-empty directory.
+// `ZX_ERR_UNAVAILABLE` if `path` refers to a mount point, containing a remote channel.
+// `ZX_ERR_UNAVAILABLE` if `path` is ".".
+//
+// Other errors may be returned for filesystem-specific reasons.
+//
+// This method requires following rights: `OPEN_RIGHT_WRITABLE`, otherwise returns
+// `ZX_ERR_BAD_HANDLE`.
+func (p *DirectoryAdminWithCtxInterface) Unlink(ctx_ _bindings.Context, path string) (int32, error) {
+ req_ := &directoryAdminWithCtxUnlinkRequest{
+ Path: path,
+ }
+ resp_ := &directoryAdminWithCtxUnlinkResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryAdminUnlinkOrdinal, req_, resp_)
+ return resp_.S, err_
+}
+
+// Removes a child node from the this directory's list of entries.
+//
+// Note: this does not guarantee that the underlying object is destroyed.
+// Although the link will be removed from the containing directory,
+// objects with multiple references (such as files which are still open)
+// will not actually be destroyed until all references are closed.
+//
+// * error `ZX_ERR_ACCESS_DENIED` if the connection does not have
+// [`Rights.WRITE_BYTES`].
+// * error `ZX_ERR_NOT_SUPPORTED` if the underlying filesystem does not
+// support writing.
+// * error `ZX_ERR_BAD_PATH` if `name` is invalid.
+// * error `ZX_ERR_NOT_EMPTY` if `name` refers to a non-empty directory.
+// * error `ZX_ERR_UNAVAILABLE` if `name` refers to a mount point,
+// containing a remote channel.
+// * error `ZX_ERR_NOT_DIR` if the options requested a directory but something other than a
+// directory was found.
+//
+// Other errors may be returned for filesystem-specific reasons.
+//
+// This method requires the following rights:
+//
+// * [`Rights.ENUMERATE`]
+// * [`Rights.MODIFY_DIRECTORY`]
+func (p *DirectoryAdminWithCtxInterface) Unlink2(ctx_ _bindings.Context, name string, options fuchsiaio2.UnlinkOptions) (DirectoryUnlink2Result, error) {
+ req_ := &directoryAdminWithCtxUnlink2Request{
+ Name: name,
+ Options: options,
+ }
+ resp_ := &directoryAdminWithCtxUnlink2Response{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryAdminUnlink2Ordinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Reads a collection of variably sized dirents into a buffer.
+// The number of dirents in a directory may be very large: akin to
+// calling read multiple times on a file, directories have a seek
+// offset which is updated on subsequent calls to ReadDirents.
+//
+// These dirents are of the form:
+// ```
+// struct dirent {
+// // Describes the inode of the entry.
+// uint64 ino;
+// // Describes the length of the dirent name in bytes.
+// uint8 size;
+// // Describes the type of the entry. Aligned with the
+// // POSIX d_type values. Use `DIRENT_TYPE_*` constants.
+// uint8 type;
+// // Unterminated name of entry.
+// char name[0];
+// }
+// ```
+//
+// This method does not require any rights, since one could always probe for
+// directory contents by triggering name conflicts during file creation.
+func (p *DirectoryAdminWithCtxInterface) ReadDirents(ctx_ _bindings.Context, maxBytes uint64) (int32, []uint8, error) {
+ req_ := &directoryAdminWithCtxReadDirentsRequest{
+ MaxBytes: maxBytes,
+ }
+ resp_ := &directoryAdminWithCtxReadDirentsResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryAdminReadDirentsOrdinal, req_, resp_)
+ return resp_.S, resp_.Dirents, err_
+}
+
+// Resets the directory seek offset.
+//
+// This method does not require any rights, similar to ReadDirents.
+func (p *DirectoryAdminWithCtxInterface) Rewind(ctx_ _bindings.Context) (int32, error) {
+ var req_ _bindings.Message
+ resp_ := &directoryAdminWithCtxRewindResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryAdminRewindOrdinal, req_, resp_)
+ return resp_.S, err_
+}
+
+// Acquires a token to a Directory which can be used to identify
+// access to it at a later point in time.
+//
+// This method requires following rights: `OPEN_RIGHT_WRITABLE`, otherwise returns
+// `ZX_ERR_BAD_HANDLE`.
+func (p *DirectoryAdminWithCtxInterface) GetToken(ctx_ _bindings.Context) (int32, _zx.Handle, error) {
+ var req_ _bindings.Message
+ resp_ := &directoryAdminWithCtxGetTokenResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryAdminGetTokenOrdinal, req_, resp_)
+ return resp_.S, resp_.Token, err_
+}
+
+// Renames an object named src to the name dst, in a directory represented by token.
+//
+// `src/dst` must be resolved object names. Including "/" in any position
+// other than the end of the string will return `ZX_ERR_INVALID_ARGS`.
+// Returning "/" at the end of either string implies that it must be a
+// directory, or else `ZX_ERR_NOT_DIR` should be returned.
+//
+// This method requires following rights: `OPEN_RIGHT_WRITABLE`, otherwise returns
+// `ZX_ERR_BAD_HANDLE`.
+func (p *DirectoryAdminWithCtxInterface) Rename(ctx_ _bindings.Context, src string, dstParentToken _zx.Handle, dst string) (int32, error) {
+ req_ := &directoryAdminWithCtxRenameRequest{
+ Src: src,
+ DstParentToken: dstParentToken,
+ Dst: dst,
+ }
+ resp_ := &directoryAdminWithCtxRenameResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryAdminRenameOrdinal, req_, resp_)
+ return resp_.S, err_
+}
+
+// Renames a node named `src` to the name `dst`, in a directory represented
+// by `dst_parent_token`.
+//
+// `src` and `dst` must be valid node names.
+// See [`fuchsia.io2/Name`] for what constitutes a valid name.
+//
+// This method requires the following rights on both the current
+// connection, and the connection identified by `dst_parent_token`:
+//
+// * [`Rights.ENUMERATE`]
+// * [`Rights.MODIFY_DIRECTORY`]
+//
+// * error `ZX_ERR_INVALID_ARGS` if `src` or `dst` is invalid.
+func (p *DirectoryAdminWithCtxInterface) Rename2(ctx_ _bindings.Context, src string, dstParentToken _zx.Event, dst string) (DirectoryRename2Result, error) {
+ req_ := &directoryAdminWithCtxRename2Request{
+ Src: src,
+ DstParentToken: dstParentToken,
+ Dst: dst,
+ }
+ resp_ := &directoryAdminWithCtxRename2Response{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryAdminRename2Ordinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Creates a link to an object named src by the name dst, within a directory represented by
+// token.
+//
+// `src` must be a resolved object name. Including "/" in the string will
+// return `ZX_ERR_INVALID_ARGS`.
+//
+// `dst` must be a resolved object name. Including "/" in the string will
+// return `ZX_ERR_INVALID_ARGS`.
+//
+// This method requires following rights: `OPEN_RIGHT_WRITABLE`, otherwise returns
+// `ZX_ERR_BAD_HANDLE`.
+func (p *DirectoryAdminWithCtxInterface) Link(ctx_ _bindings.Context, src string, dstParentToken _zx.Handle, dst string) (int32, error) {
+ req_ := &directoryAdminWithCtxLinkRequest{
+ Src: src,
+ DstParentToken: dstParentToken,
+ Dst: dst,
+ }
+ resp_ := &directoryAdminWithCtxLinkResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryAdminLinkOrdinal, req_, resp_)
+ return resp_.S, err_
+}
+
+// Watches a directory, receiving events of added messages on the
+// watcher request channel.
+//
+// The `watcher` handle will send messages of the form:
+// ```
+// struct {
+// uint8 event;
+// uint8 len;
+// char name[];
+// };
+// ```
+// Where names are NOT null-terminated.
+//
+// This API is unstable; in the future, watcher will be a `DirectoryWatcher` client.
+//
+// Mask specifies a bitmask of events to observe.
+// Options must be zero; it is reserved.
+//
+// This method does not require any rights, similar to ReadDirents.
+func (p *DirectoryAdminWithCtxInterface) Watch(ctx_ _bindings.Context, mask uint32, options uint32, watcher _zx.Channel) (int32, error) {
+ req_ := &directoryAdminWithCtxWatchRequest{
+ Mask: mask,
+ Options: options,
+ Watcher: watcher,
+ }
+ resp_ := &directoryAdminWithCtxWatchResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryAdminWatchOrdinal, req_, resp_)
+ return resp_.S, err_
+}
+
+// Mount a channel representing a remote filesystem onto this directory.
+// All future requests to this node will be forwarded to the remote filesystem.
+// To re-open a node without forwarding to the remote target, the node
+// should be opened with `OPEN_FLAG_NO_REMOTE`.
+func (p *DirectoryAdminWithCtxInterface) Mount(ctx_ _bindings.Context, remote DirectoryWithCtxInterface) (int32, error) {
+ req_ := &directoryAdminWithCtxMountRequest{
+ Remote: remote,
+ }
+ resp_ := &directoryAdminWithCtxMountResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryAdminMountOrdinal, req_, resp_)
+ return resp_.S, err_
+}
+
+// Atomically create a directory with a provided path, and mount the
+// remote handle to the newly created directory.
+func (p *DirectoryAdminWithCtxInterface) MountAndCreate(ctx_ _bindings.Context, remote DirectoryWithCtxInterface, name string, flags uint32) (int32, error) {
+ req_ := &directoryAdminWithCtxMountAndCreateRequest{
+ Remote: remote,
+ Name: name,
+ Flags: flags,
+ }
+ resp_ := &directoryAdminWithCtxMountAndCreateResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryAdminMountAndCreateOrdinal, req_, resp_)
+ return resp_.S, err_
+}
+
+// Unmount this filesystem. After this function returns successfully,
+// all connections to the filesystem will be terminated.
+func (p *DirectoryAdminWithCtxInterface) Unmount(ctx_ _bindings.Context) (int32, error) {
+ var req_ _bindings.Message
+ resp_ := &directoryAdminWithCtxUnmountResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryAdminUnmountOrdinal, req_, resp_)
+ return resp_.S, err_
+}
+
+// Detach a node which was previously attached to this directory
+// with Mount.
+func (p *DirectoryAdminWithCtxInterface) UnmountNode(ctx_ _bindings.Context) (int32, DirectoryWithCtxInterface, error) {
+ var req_ _bindings.Message
+ resp_ := &directoryAdminWithCtxUnmountNodeResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryAdminUnmountNodeOrdinal, req_, resp_)
+ return resp_.S, resp_.Remote, err_
+}
+
+// Query the filesystem for filesystem-specific information.
+func (p *DirectoryAdminWithCtxInterface) QueryFilesystem(ctx_ _bindings.Context) (int32, *FilesystemInfo, error) {
+ var req_ _bindings.Message
+ resp_ := &directoryAdminWithCtxQueryFilesystemResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryAdminQueryFilesystemOrdinal, req_, resp_)
+ return resp_.S, resp_.Info, err_
+}
+
+// Acquire the path to the device backing this filesystem, if there is one.
+func (p *DirectoryAdminWithCtxInterface) GetDevicePath(ctx_ _bindings.Context) (int32, *string, error) {
+ var req_ _bindings.Message
+ resp_ := &directoryAdminWithCtxGetDevicePathResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryAdminGetDevicePathOrdinal, req_, resp_)
+ return resp_.S, resp_.Path, err_
+}
+
+// DirectoryAdmin defines a directory which is capable of handling
+// administrator tasks within the filesystem.
+type DirectoryAdminWithCtx interface {
+ // Create another connection to the same remote object.
+ //
+ // `flags` may be any of:
+ //
+ // - `OPEN_RIGHT_*`
+ // - `OPEN_FLAG_APPEND`
+ // - `OPEN_FLAG_NO_REMOTE`
+ // - `OPEN_FLAG_DESCRIBE`
+ // - `CLONE_FLAG_SAME_RIGHTS`
+ //
+ // All other flags are ignored.
+ //
+ // The `OPEN_RIGHT_*` bits in `flags` request corresponding rights over the resulting
+ // cloned object.
+ // The cloned object must have rights less than or equal to the original object, otherwise
+ // returns `ZX_ERR_ACCESS_DENIED`.
+ // Alternatively, pass `CLONE_FLAG_SAME_RIGHTS` to inherit the rights on the source connection.
+ // It is invalid to pass any of the `OPEN_RIGHT_*` flags together with
+ // `CLONE_FLAG_SAME_RIGHTS`.
+ Clone(ctx_ _bindings.Context, flags uint32, object NodeWithCtxInterfaceRequest) error
+ // Terminates connection with object.
+ //
+ // This method does not require any rights.
+ Close(ctx_ _bindings.Context) (int32, error)
+ // Returns extra information about the type of the object.
+ // If the `Describe` operation fails, the connection is closed.
+ //
+ // This method does not require any rights.
+ Describe(ctx_ _bindings.Context) (NodeInfo, error)
+ // An event produced eagerly by a FIDL server if requested by `OPEN_FLAG_DESCRIBE`.
+ //
+ // Indicates the success or failure of the open operation, and optionally describes the
+ // object. If the status is `ZX_OK`, `info` contains descriptive information about the object
+ // (the same as would be returned by `Describe`).
+ // Synchronizes updates to the node to the underlying media, if it exists.
+ //
+ // This method does not require any rights.
+ Sync(ctx_ _bindings.Context) (int32, error)
+ // Acquires information about the node.
+ //
+ // This method does not require any rights.
+ GetAttr(ctx_ _bindings.Context) (int32, NodeAttributes, error)
+ // Updates information about the node.
+ // `flags` may be any of `NODE_ATTRIBUTE_FLAG_*`.
+ //
+ // This method requires following rights: `OPEN_RIGHT_WRITABLE`, otherwise returns
+ // `ZX_ERR_BAD_HANDLE`.
+ SetAttr(ctx_ _bindings.Context, flags uint32, attributes NodeAttributes) (int32, error)
+ // Acquires the `Directory.Open` rights and flags used to access this file.
+ //
+ // This method does not require any rights.
+ // This method has the same functionality as GetFlags for File and is
+ // meant as an in-progress replacement.
+ NodeGetFlags(ctx_ _bindings.Context) (int32, uint32, error)
+ // Changes the `Directory.Open` flags used to access the file.
+ // Supported flags which can be turned on / off:
+ // - `OPEN_FLAG_APPEND`
+ //
+ // This method does not require any rights.
+ // This method has the same functionality as SetFlags for File and is
+ // meant as an in-progress replacement.
+ NodeSetFlags(ctx_ _bindings.Context, flags uint32) (int32, error)
+ // Acquires an advisory lock on the underlying file.
+ //
+ // The lock lasts until either this connection is closed or
+ // this method is called with |AdvisoryLockType.UNLOCK| to release the lock
+ // explicitly.
+ //
+ // Advisory locks are purely advisory. They do not prevent actual read or
+ // write operations from occurring on the file, either through this
+ // connection or through other connections.
+ //
+ // This method requires the following rights:
+ //
+ // * [`Rights.READ_BYTES`] if `request.type` is [`AdvisoryLockType.READ`].
+ // * [`Rights.WRITE_BYTES`] if `request.type` is
+ // [`AdvisoryLockType.WRITE`].
+ //
+ // # Errors
+ //
+ // * `ZX_ERR_BAD_STATE` The specified type of lock cannot be acquired. For
+ // example, another connection might hold a conflicting lock type.
+ // * `ZX_ERR_NOT_SUPPORTED` This file does not support advisory locking.
+ // * `ZX_ERR_ACCESS_DENIED` This connection does not have sufficient rights
+ // to acquire the given type of lock.
+ AdvisoryLock(ctx_ _bindings.Context, request fuchsiaio2.AdvisoryLockRequest) (fuchsiaio2.AdvisoryLockingAdvisoryLockResult, error)
+ // Opens a new object relative to this directory object.
+ //
+ // `path` may contain multiple segments, separated by "/" characters,
+ // and should never be empty; i.e., "" is an invalid path. Paths should not contain
+ // a leading "/".
+ //
+ // `flags` may be any of the `OPEN_FLAG_*` and `OPEN_RIGHT_*` values, bitwise ORed together.
+ // The `OPEN_FLAG_DESCRIBE` flag may cause an `OnOpen` event to be transmitted
+ // on the `object` handle, indicating the type of object opened.
+ //
+ // If an unknown value is sent for either flags or mode, the connection should
+ // be closed.
+ //
+ // `OPEN_RIGHT_*` flags provided in `flags` will restrict access rights on
+ // the `object` channel which will be connected to the opened entity.
+ //
+ // Rights are never increased. When you open a nested entity within a directory, you may only
+ // request the same rights as what the directory connection already has, or a subset of those.
+ // Exceeding those rights causes an access denied error to be transmitted in the
+ // `OnOpen` event if applicable, and the `object` connection closed.
+ //
+ // The caller must specify either one or more of the `OPEN_RIGHT_*` flags, or
+ // the `OPEN_FLAG_NODE_REFERENCE` flag.
+ Open(ctx_ _bindings.Context, flags uint32, mode uint32, path string, object NodeWithCtxInterfaceRequest) error
+ // Adds a new inotify filter for an object relative to this directory object.
+ //
+ // + 'filter` is a mask of different inotify events that need to be watched by the server
+ // for a specific file/directory.
+ //
+ // + `path` may contain multiple segments, separated by "/" characters,
+ // and should never be empty; i.e., "" is an invalid path. Paths should not contain
+ // a leading "/".
+ //
+ // +`watch_descriptor` is client assigned value to identify a filter.
+ // Server shouldn't trust the client-assigned watch_descriptor. They should just send it
+ // back to the client in the socket.
+ // This value is not used by server, but it is returned back as part of InotifyEvent,
+ // to help the client correlate filter with events on this filter.
+ //
+ // + `socket` is shared between different filter objects i.e every new filter will
+ // have a different server end of the socket and there will be a single client end per
+ // inotify instance on inotify init.
+ AddInotifyFilter(ctx_ _bindings.Context, path string, filter fuchsiaio2.InotifyWatchMask, watchDescriptor uint32, socket _zx.Socket) error
+ // Detaches an object from this directory object.
+ //
+ // The underlying object may or may not be deleted after this method
+ // completes: although the link will be removed from the containing directory,
+ // objects with multiple references (such as files which are still open)
+ // will not actually be destroyed until all references are removed.
+ //
+ // If a directory is unlinked while it still has an open reference,
+ // it must become read-only, preventing new entries from being created
+ // until all references close and the directory is destroyed.
+ //
+ // `path` identifies the file which should be detached.
+ // If `path` contains multiple segments, separated by "/" characters,
+ // then the directory is traversed, one segment at a time, relative to the
+ // originally accessed Directory.
+ //
+ // Returns:
+ // `ZX_ERR_ACCESS_DENIED` if the connection (or the underlying filesystem) does not
+ // allow writable access.
+ // `ZX_ERR_INVALID_ARGS` if `path` contains ".." segments.
+ // `ZX_ERR_NOT_EMPTY` if `path` refers to a non-empty directory.
+ // `ZX_ERR_UNAVAILABLE` if `path` refers to a mount point, containing a remote channel.
+ // `ZX_ERR_UNAVAILABLE` if `path` is ".".
+ //
+ // Other errors may be returned for filesystem-specific reasons.
+ //
+ // This method requires following rights: `OPEN_RIGHT_WRITABLE`, otherwise returns
+ // `ZX_ERR_BAD_HANDLE`.
+ Unlink(ctx_ _bindings.Context, path string) (int32, error)
+ // Removes a child node from the this directory's list of entries.
+ //
+ // Note: this does not guarantee that the underlying object is destroyed.
+ // Although the link will be removed from the containing directory,
+ // objects with multiple references (such as files which are still open)
+ // will not actually be destroyed until all references are closed.
+ //
+ // * error `ZX_ERR_ACCESS_DENIED` if the connection does not have
+ // [`Rights.WRITE_BYTES`].
+ // * error `ZX_ERR_NOT_SUPPORTED` if the underlying filesystem does not
+ // support writing.
+ // * error `ZX_ERR_BAD_PATH` if `name` is invalid.
+ // * error `ZX_ERR_NOT_EMPTY` if `name` refers to a non-empty directory.
+ // * error `ZX_ERR_UNAVAILABLE` if `name` refers to a mount point,
+ // containing a remote channel.
+ // * error `ZX_ERR_NOT_DIR` if the options requested a directory but something other than a
+ // directory was found.
+ //
+ // Other errors may be returned for filesystem-specific reasons.
+ //
+ // This method requires the following rights:
+ //
+ // * [`Rights.ENUMERATE`]
+ // * [`Rights.MODIFY_DIRECTORY`]
+ Unlink2(ctx_ _bindings.Context, name string, options fuchsiaio2.UnlinkOptions) (DirectoryUnlink2Result, error)
+ // Reads a collection of variably sized dirents into a buffer.
+ // The number of dirents in a directory may be very large: akin to
+ // calling read multiple times on a file, directories have a seek
+ // offset which is updated on subsequent calls to ReadDirents.
+ //
+ // These dirents are of the form:
+ // ```
+ // struct dirent {
+ // // Describes the inode of the entry.
+ // uint64 ino;
+ // // Describes the length of the dirent name in bytes.
+ // uint8 size;
+ // // Describes the type of the entry. Aligned with the
+ // // POSIX d_type values. Use `DIRENT_TYPE_*` constants.
+ // uint8 type;
+ // // Unterminated name of entry.
+ // char name[0];
+ // }
+ // ```
+ //
+ // This method does not require any rights, since one could always probe for
+ // directory contents by triggering name conflicts during file creation.
+ ReadDirents(ctx_ _bindings.Context, maxBytes uint64) (int32, []uint8, error)
+ // Resets the directory seek offset.
+ //
+ // This method does not require any rights, similar to ReadDirents.
+ Rewind(ctx_ _bindings.Context) (int32, error)
+ // Acquires a token to a Directory which can be used to identify
+ // access to it at a later point in time.
+ //
+ // This method requires following rights: `OPEN_RIGHT_WRITABLE`, otherwise returns
+ // `ZX_ERR_BAD_HANDLE`.
+ GetToken(ctx_ _bindings.Context) (int32, _zx.Handle, error)
+ // Renames an object named src to the name dst, in a directory represented by token.
+ //
+ // `src/dst` must be resolved object names. Including "/" in any position
+ // other than the end of the string will return `ZX_ERR_INVALID_ARGS`.
+ // Returning "/" at the end of either string implies that it must be a
+ // directory, or else `ZX_ERR_NOT_DIR` should be returned.
+ //
+ // This method requires following rights: `OPEN_RIGHT_WRITABLE`, otherwise returns
+ // `ZX_ERR_BAD_HANDLE`.
+ Rename(ctx_ _bindings.Context, src string, dstParentToken _zx.Handle, dst string) (int32, error)
+ // Renames a node named `src` to the name `dst`, in a directory represented
+ // by `dst_parent_token`.
+ //
+ // `src` and `dst` must be valid node names.
+ // See [`fuchsia.io2/Name`] for what constitutes a valid name.
+ //
+ // This method requires the following rights on both the current
+ // connection, and the connection identified by `dst_parent_token`:
+ //
+ // * [`Rights.ENUMERATE`]
+ // * [`Rights.MODIFY_DIRECTORY`]
+ //
+ // * error `ZX_ERR_INVALID_ARGS` if `src` or `dst` is invalid.
+ Rename2(ctx_ _bindings.Context, src string, dstParentToken _zx.Event, dst string) (DirectoryRename2Result, error)
+ // Creates a link to an object named src by the name dst, within a directory represented by
+ // token.
+ //
+ // `src` must be a resolved object name. Including "/" in the string will
+ // return `ZX_ERR_INVALID_ARGS`.
+ //
+ // `dst` must be a resolved object name. Including "/" in the string will
+ // return `ZX_ERR_INVALID_ARGS`.
+ //
+ // This method requires following rights: `OPEN_RIGHT_WRITABLE`, otherwise returns
+ // `ZX_ERR_BAD_HANDLE`.
+ Link(ctx_ _bindings.Context, src string, dstParentToken _zx.Handle, dst string) (int32, error)
+ // Watches a directory, receiving events of added messages on the
+ // watcher request channel.
+ //
+ // The `watcher` handle will send messages of the form:
+ // ```
+ // struct {
+ // uint8 event;
+ // uint8 len;
+ // char name[];
+ // };
+ // ```
+ // Where names are NOT null-terminated.
+ //
+ // This API is unstable; in the future, watcher will be a `DirectoryWatcher` client.
+ //
+ // Mask specifies a bitmask of events to observe.
+ // Options must be zero; it is reserved.
+ //
+ // This method does not require any rights, similar to ReadDirents.
+ Watch(ctx_ _bindings.Context, mask uint32, options uint32, watcher _zx.Channel) (int32, error)
+ // Mount a channel representing a remote filesystem onto this directory.
+ // All future requests to this node will be forwarded to the remote filesystem.
+ // To re-open a node without forwarding to the remote target, the node
+ // should be opened with `OPEN_FLAG_NO_REMOTE`.
+ Mount(ctx_ _bindings.Context, remote DirectoryWithCtxInterface) (int32, error)
+ // Atomically create a directory with a provided path, and mount the
+ // remote handle to the newly created directory.
+ MountAndCreate(ctx_ _bindings.Context, remote DirectoryWithCtxInterface, name string, flags uint32) (int32, error)
+ // Unmount this filesystem. After this function returns successfully,
+ // all connections to the filesystem will be terminated.
+ Unmount(ctx_ _bindings.Context) (int32, error)
+ // Detach a node which was previously attached to this directory
+ // with Mount.
+ UnmountNode(ctx_ _bindings.Context) (int32, DirectoryWithCtxInterface, error)
+ // Query the filesystem for filesystem-specific information.
+ QueryFilesystem(ctx_ _bindings.Context) (int32, *FilesystemInfo, error)
+ // Acquire the path to the device backing this filesystem, if there is one.
+ GetDevicePath(ctx_ _bindings.Context) (int32, *string, error)
+}
+
+type DirectoryAdminWithCtxTransitionalBase struct{}
+
+func (_ *DirectoryAdminWithCtxTransitionalBase) NodeGetFlags(ctx_ _bindings.Context) (int32, uint32, error) {
+ panic("Not Implemented")
+}
+func (_ *DirectoryAdminWithCtxTransitionalBase) NodeSetFlags(ctx_ _bindings.Context, flags uint32) (int32, error) {
+ panic("Not Implemented")
+}
+func (_ *DirectoryAdminWithCtxTransitionalBase) AdvisoryLock(ctx_ _bindings.Context, request fuchsiaio2.AdvisoryLockRequest) (fuchsiaio2.AdvisoryLockingAdvisoryLockResult, error) {
+ panic("Not Implemented")
+}
+func (_ *DirectoryAdminWithCtxTransitionalBase) Unlink2(ctx_ _bindings.Context, name string, options fuchsiaio2.UnlinkOptions) (DirectoryUnlink2Result, error) {
+ panic("Not Implemented")
+}
+func (_ *DirectoryAdminWithCtxTransitionalBase) Rename(ctx_ _bindings.Context, src string, dstParentToken _zx.Handle, dst string) (int32, error) {
+ panic("Not Implemented")
+}
+
+type DirectoryAdminWithCtxInterfaceRequest _bindings.InterfaceRequest
+
+func NewDirectoryAdminWithCtxInterfaceRequest() (DirectoryAdminWithCtxInterfaceRequest, *DirectoryAdminWithCtxInterface, error) {
+ req, cli, err := _bindings.NewInterfaceRequest()
+ return DirectoryAdminWithCtxInterfaceRequest(req), (*DirectoryAdminWithCtxInterface)(cli), err
+}
+
+type DirectoryAdminWithCtxStub struct {
+ Impl DirectoryAdminWithCtx
+}
+
+func (s_ *DirectoryAdminWithCtxStub) Dispatch(args_ _bindings.DispatchArgs) (_bindings.Message, bool, error) {
+ switch args_.Ordinal {
+ case DirectoryAdminCloneOrdinal:
+ in_ := directoryAdminWithCtxCloneRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ err_ := s_.Impl.Clone(args_.Ctx, in_.Flags, in_.Object)
+ return nil, false, err_
+ case DirectoryAdminCloseOrdinal:
+ s, err_ := s_.Impl.Close(args_.Ctx)
+ out_ := directoryAdminWithCtxCloseResponse{}
+ out_.S = s
+ return &out_, true, err_
+ case DirectoryAdminDescribeOrdinal:
+ info, err_ := s_.Impl.Describe(args_.Ctx)
+ out_ := directoryAdminWithCtxDescribeResponse{}
+ out_.Info = info
+ return &out_, true, err_
+ case DirectoryAdminSyncOrdinal:
+ s, err_ := s_.Impl.Sync(args_.Ctx)
+ out_ := directoryAdminWithCtxSyncResponse{}
+ out_.S = s
+ return &out_, true, err_
+ case DirectoryAdminGetAttrOrdinal:
+ s, attributes, err_ := s_.Impl.GetAttr(args_.Ctx)
+ out_ := directoryAdminWithCtxGetAttrResponse{}
+ out_.S = s
+ out_.Attributes = attributes
+ return &out_, true, err_
+ case DirectoryAdminSetAttrOrdinal:
+ in_ := directoryAdminWithCtxSetAttrRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ s, err_ := s_.Impl.SetAttr(args_.Ctx, in_.Flags, in_.Attributes)
+ out_ := directoryAdminWithCtxSetAttrResponse{}
+ out_.S = s
+ return &out_, true, err_
+ case DirectoryAdminNodeGetFlagsOrdinal:
+ s, flags, err_ := s_.Impl.NodeGetFlags(args_.Ctx)
+ out_ := directoryAdminWithCtxNodeGetFlagsResponse{}
+ out_.S = s
+ out_.Flags = flags
+ return &out_, true, err_
+ case DirectoryAdminNodeSetFlagsOrdinal:
+ in_ := directoryAdminWithCtxNodeSetFlagsRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ s, err_ := s_.Impl.NodeSetFlags(args_.Ctx, in_.Flags)
+ out_ := directoryAdminWithCtxNodeSetFlagsResponse{}
+ out_.S = s
+ return &out_, true, err_
+ case DirectoryAdminAdvisoryLockOrdinal:
+ in_ := directoryAdminWithCtxAdvisoryLockRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.AdvisoryLock(args_.Ctx, in_.Request)
+ out_ := directoryAdminWithCtxAdvisoryLockResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DirectoryAdminOpenOrdinal:
+ in_ := directoryAdminWithCtxOpenRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ err_ := s_.Impl.Open(args_.Ctx, in_.Flags, in_.Mode, in_.Path, in_.Object)
+ return nil, false, err_
+ case DirectoryAdminAddInotifyFilterOrdinal:
+ in_ := directoryAdminWithCtxAddInotifyFilterRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ err_ := s_.Impl.AddInotifyFilter(args_.Ctx, in_.Path, in_.Filter, in_.WatchDescriptor, in_.Socket)
+ return nil, true, err_
+ case DirectoryAdminUnlinkOrdinal:
+ in_ := directoryAdminWithCtxUnlinkRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ s, err_ := s_.Impl.Unlink(args_.Ctx, in_.Path)
+ out_ := directoryAdminWithCtxUnlinkResponse{}
+ out_.S = s
+ return &out_, true, err_
+ case DirectoryAdminUnlink2Ordinal:
+ in_ := directoryAdminWithCtxUnlink2Request{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.Unlink2(args_.Ctx, in_.Name, in_.Options)
+ out_ := directoryAdminWithCtxUnlink2Response{}
+ out_.Result = result
+ return &out_, true, err_
+ case DirectoryAdminReadDirentsOrdinal:
+ in_ := directoryAdminWithCtxReadDirentsRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ s, dirents, err_ := s_.Impl.ReadDirents(args_.Ctx, in_.MaxBytes)
+ out_ := directoryAdminWithCtxReadDirentsResponse{}
+ out_.S = s
+ out_.Dirents = dirents
+ return &out_, true, err_
+ case DirectoryAdminRewindOrdinal:
+ s, err_ := s_.Impl.Rewind(args_.Ctx)
+ out_ := directoryAdminWithCtxRewindResponse{}
+ out_.S = s
+ return &out_, true, err_
+ case DirectoryAdminGetTokenOrdinal:
+ s, token, err_ := s_.Impl.GetToken(args_.Ctx)
+ out_ := directoryAdminWithCtxGetTokenResponse{}
+ out_.S = s
+ out_.Token = token
+ return &out_, true, err_
+ case DirectoryAdminRenameOrdinal:
+ in_ := directoryAdminWithCtxRenameRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ s, err_ := s_.Impl.Rename(args_.Ctx, in_.Src, in_.DstParentToken, in_.Dst)
+ out_ := directoryAdminWithCtxRenameResponse{}
+ out_.S = s
+ return &out_, true, err_
+ case DirectoryAdminRename2Ordinal:
+ in_ := directoryAdminWithCtxRename2Request{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.Rename2(args_.Ctx, in_.Src, in_.DstParentToken, in_.Dst)
+ out_ := directoryAdminWithCtxRename2Response{}
+ out_.Result = result
+ return &out_, true, err_
+ case DirectoryAdminLinkOrdinal:
+ in_ := directoryAdminWithCtxLinkRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ s, err_ := s_.Impl.Link(args_.Ctx, in_.Src, in_.DstParentToken, in_.Dst)
+ out_ := directoryAdminWithCtxLinkResponse{}
+ out_.S = s
+ return &out_, true, err_
+ case DirectoryAdminWatchOrdinal:
+ in_ := directoryAdminWithCtxWatchRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ s, err_ := s_.Impl.Watch(args_.Ctx, in_.Mask, in_.Options, in_.Watcher)
+ out_ := directoryAdminWithCtxWatchResponse{}
+ out_.S = s
+ return &out_, true, err_
+ case DirectoryAdminMountOrdinal:
+ in_ := directoryAdminWithCtxMountRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ s, err_ := s_.Impl.Mount(args_.Ctx, in_.Remote)
+ out_ := directoryAdminWithCtxMountResponse{}
+ out_.S = s
+ return &out_, true, err_
+ case DirectoryAdminMountAndCreateOrdinal:
+ in_ := directoryAdminWithCtxMountAndCreateRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ s, err_ := s_.Impl.MountAndCreate(args_.Ctx, in_.Remote, in_.Name, in_.Flags)
+ out_ := directoryAdminWithCtxMountAndCreateResponse{}
+ out_.S = s
+ return &out_, true, err_
+ case DirectoryAdminUnmountOrdinal:
+ s, err_ := s_.Impl.Unmount(args_.Ctx)
+ out_ := directoryAdminWithCtxUnmountResponse{}
+ out_.S = s
+ return &out_, true, err_
+ case DirectoryAdminUnmountNodeOrdinal:
+ s, remote, err_ := s_.Impl.UnmountNode(args_.Ctx)
+ out_ := directoryAdminWithCtxUnmountNodeResponse{}
+ out_.S = s
+ out_.Remote = remote
+ return &out_, true, err_
+ case DirectoryAdminQueryFilesystemOrdinal:
+ s, info, err_ := s_.Impl.QueryFilesystem(args_.Ctx)
+ out_ := directoryAdminWithCtxQueryFilesystemResponse{}
+ out_.S = s
+ out_.Info = info
+ return &out_, true, err_
+ case DirectoryAdminGetDevicePathOrdinal:
+ s, path, err_ := s_.Impl.GetDevicePath(args_.Ctx)
+ out_ := directoryAdminWithCtxGetDevicePathResponse{}
+ out_.S = s
+ out_.Path = path
+ return &out_, true, err_
+ }
+ return nil, false, _bindings.ErrUnknownOrdinal
+}
+
+type DirectoryAdminEventProxy _bindings.ChannelProxy
+
+func (p *DirectoryAdminEventProxy) OnOpen(s int32, info *NodeInfo) error {
+ event_ := &directoryAdminWithCtxOnOpenResponse{
+ S: s,
+ Info: info,
+ }
+ return ((*_bindings.ChannelProxy)(p)).Send(DirectoryAdminOnOpenOrdinal, event_)
+}
diff --git a/src/syscall/zx/io2/impl.go b/src/syscall/zx/io2/impl.go
new file mode 100644
index 0000000..27a45d4
--- /dev/null
+++ b/src/syscall/zx/io2/impl.go
@@ -0,0 +1,8050 @@
+// Copyright 2020 The Fuchsia Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// Code generated by third_party/go/regen-fidl; DO NOT EDIT.
+
+package io2
+
+import (
+ _zx "syscall/zx"
+ _bindings "syscall/zx/fidl"
+ fuchsiamem "syscall/zx/mem"
+)
+
+const (
+ // The maximum number of directory entires or watcher events returned
+ // in a batch by a hanging-get pattern.
+ MaxDirectoryBatchSize uint64 = 8192
+ // The maximum I/O size that is allowed for read/write operations using
+ // byte vectors.
+ MaxTransferSize uint64 = 8192
+ CloseAll InotifyWatchMask = 24
+ Move InotifyWatchMask = 192
+ // The maximum length, in bytes, of a single filesystem component.
+ MaxNameLength uint64 = 255
+ // The maximum length, in bytes, of a filesystem path.
+ MaxPathLength uint64 = 4095
+ // Alias for directory permission alias r*
+ RStarDir Operations = 211
+ // Alias for directory permission alias rw*
+ RwStarDir Operations = 503
+ // Alias for directory permission alias rx*
+ RxStarDir Operations = 219
+ // Alias for directory permission alias w*
+ WStarDir Operations = 485
+ // Alias for directory permission alias x*
+ XStarDir Operations = 201
+)
+
+var _ _bindings.Enum = RightsResolution(0)
+
+// When an `Open`/`Reopen` request reaches its final remote server, it should
+// assign rights on the new connection based on one of these modes.
+type RightsResolution uint32
+
+const (
+
+ // The rights will be the intersection between [`RightsRequest.at_most`]
+ // and the connection where the `Open`/`Reopen` request was received,
+ // closing `object_request` with `ZX_ERR_ACCESS_DENIED` if it is empty.
+ RightsResolutionMaximize RightsResolution = 1
+
+ // The rights will be determined by the following rules:
+ //
+ // * If the negotiated protocol on the new connection is
+ // [`fuchsia.io2/Directory`], the rules from the `MAXIMIZE` case applies.
+ // * Otherwise, the rights will be [`RightsRequest.at_least`] if it
+ // does not exceed rights on the current connection.
+ // * Otherwise, `object_request` should be closed with
+ // `ZX_ERR_ACCESS_DENIED`.
+ //
+ // The motivation for this enum is to facilitate implementing POSIX
+ // compatibility layers. The POSIX file permission model relies on ambient
+ // authority: access control on files are resolved based on the `mode` of
+ // the file, and the current user. There is no concept of hierarchical
+ // permissions. Fuchsia, on the other hand, restricts rights on file
+ // connections to never exceed that of its containing directory connection.
+ RightsResolutionPosix RightsResolution = 2
+)
+
+func (_ RightsResolution) I_EnumValues() []RightsResolution {
+ return []RightsResolution{
+ RightsResolutionMaximize,
+ RightsResolutionPosix,
+ }
+}
+
+func (_ RightsResolution) I_EnumIsStrict() bool {
+ return true
+}
+
+func (x RightsResolution) IsUnknown() bool {
+ switch x {
+ case 1:
+ return true
+ case 2:
+ return true
+ default:
+ return false
+ }
+}
+
+func (x RightsResolution) String() string {
+ switch x {
+ case 1:
+ return "Maximize"
+ case 2:
+ return "Posix"
+ }
+ return "Unknown"
+}
+
+var _ _bindings.Enum = OpenMode(0)
+
+// Options related to node creation during [`Directory.Open`].
+type OpenMode uint32
+
+const (
+
+ // Only succeed if the object exists.
+ OpenModeOpenExisting OpenMode = 1
+
+ // Create the object if it does not exist, otherwise open existing.
+ // The check and the creation are performed in one atomic step.
+ OpenModeMaybeCreate OpenMode = 2
+
+ // Assert that the object does not exist, then create it.
+ // The assertion and creation are performed in one atomic step.
+ OpenModeAlwaysCreate OpenMode = 3
+
+ // If the object is a mount point, open the local directory
+ // instead of forwarding the request. The object must be a directory.
+ //
+ // This option implies the behavior of `OPEN_EXISTING`.
+ OpenModeOpenMountPoint OpenMode = 268435456
+)
+
+func (_ OpenMode) I_EnumValues() []OpenMode {
+ return []OpenMode{
+ OpenModeOpenExisting,
+ OpenModeMaybeCreate,
+ OpenModeAlwaysCreate,
+ OpenModeOpenMountPoint,
+ }
+}
+
+func (_ OpenMode) I_EnumIsStrict() bool {
+ return true
+}
+
+func (x OpenMode) IsUnknown() bool {
+ switch x {
+ case 1:
+ return true
+ case 2:
+ return true
+ case 3:
+ return true
+ case 268435456:
+ return true
+ default:
+ return false
+ }
+}
+
+func (x OpenMode) String() string {
+ switch x {
+ case 1:
+ return "OpenExisting"
+ case 2:
+ return "MaybeCreate"
+ case 3:
+ return "AlwaysCreate"
+ case 268435456:
+ return "OpenMountPoint"
+ }
+ return "Unknown"
+}
+
+var _ _bindings.Enum = SeekOrigin(0)
+
+// The reference point for updating the seek offset. See [`File.Seek`].
+//
+// This enum matches the `zx_stream_seek_origin_t` enum.
+type SeekOrigin uint32
+
+const (
+
+ // Seek from the start of the file.
+ // The seek offset will be set to `offset` bytes.
+ // The seek offset cannot be negative in this case.
+ SeekOriginStart SeekOrigin = 0
+
+ // Seek from the current position in the file.
+ // The seek offset will be the current seek offset plus `offset` bytes.
+ SeekOriginCurrent SeekOrigin = 1
+
+ // Seek from the end of the file.
+ // The seek offset will be the file size plus `offset` bytes.
+ SeekOriginEnd SeekOrigin = 2
+)
+
+func (_ SeekOrigin) I_EnumValues() []SeekOrigin {
+ return []SeekOrigin{
+ SeekOriginStart,
+ SeekOriginCurrent,
+ SeekOriginEnd,
+ }
+}
+
+func (_ SeekOrigin) I_EnumIsStrict() bool {
+ return true
+}
+
+func (x SeekOrigin) IsUnknown() bool {
+ switch x {
+ case 0:
+ return true
+ case 1:
+ return true
+ case 2:
+ return true
+ default:
+ return false
+ }
+}
+
+func (x SeekOrigin) String() string {
+ switch x {
+ case 0:
+ return "Start"
+ case 1:
+ return "Current"
+ case 2:
+ return "End"
+ }
+ return "Unknown"
+}
+
+var _ _bindings.Enum = AdvisoryLockType(0)
+
+// A type of advisory lock.
+//
+// Used with [`AdvisoryLocking.AdvisoryLock`].
+type AdvisoryLockType uint32
+
+const (
+
+ // Zero or more connections can hold read locks on a file simultaneously.
+ AdvisoryLockTypeRead AdvisoryLockType = 1
+
+ // At most one connection can hold a write lock on a file simultaneously.
+ // When a write lock is held on a file, no other types of locks can be held
+ // on that file.
+ AdvisoryLockTypeWrite AdvisoryLockType = 2
+
+ // The region specifies a region to be unlocked.
+ AdvisoryLockTypeUnlock AdvisoryLockType = 3
+)
+
+func (_ AdvisoryLockType) I_EnumValues() []AdvisoryLockType {
+ return []AdvisoryLockType{
+ AdvisoryLockTypeRead,
+ AdvisoryLockTypeWrite,
+ AdvisoryLockTypeUnlock,
+ }
+}
+
+func (_ AdvisoryLockType) I_EnumIsStrict() bool {
+ return true
+}
+
+func (x AdvisoryLockType) IsUnknown() bool {
+ switch x {
+ case 1:
+ return true
+ case 2:
+ return true
+ case 3:
+ return true
+ default:
+ return false
+ }
+}
+
+func (x AdvisoryLockType) String() string {
+ switch x {
+ case 1:
+ return "Read"
+ case 2:
+ return "Write"
+ case 3:
+ return "Unlock"
+ }
+ return "Unknown"
+}
+
+var _ _bindings.Bits = ConnectionInfoQuery(0)
+
+// Set the relevant bit to one to fetch the corresponding field
+// during [`fuchsia.io2/Node.Describe`].
+type ConnectionInfoQuery uint64
+
+const (
+ ConnectionInfoQueryRepresentation ConnectionInfoQuery = 1
+ ConnectionInfoQueryRights ConnectionInfoQuery = 2
+ ConnectionInfoQueryAvailableOperations ConnectionInfoQuery = 4
+ ConnectionInfoQuery_Mask ConnectionInfoQuery = 7
+)
+
+func (_ ConnectionInfoQuery) I_BitsMask() ConnectionInfoQuery {
+ return ConnectionInfoQuery_Mask
+}
+
+func (_ ConnectionInfoQuery) I_BitsIsStrict() bool {
+ return true
+}
+
+func (x ConnectionInfoQuery) HasUnknownBits() bool {
+ return x.GetUnknownBits() != 0
+}
+
+func (x ConnectionInfoQuery) GetUnknownBits() uint64 {
+ return uint64(^ConnectionInfoQuery_Mask & x)
+}
+
+func (x ConnectionInfoQuery) InvertBits() ConnectionInfoQuery {
+ return ConnectionInfoQuery_Mask & ^x
+}
+
+// HasBits validates that all flipped bits in the mask are set.
+func (x ConnectionInfoQuery) HasBits(mask ConnectionInfoQuery) bool {
+ return mask|x == x
+}
+
+// ClearBits ensures all flipped bits in the mask are unset.
+func (x ConnectionInfoQuery) ClearBits(mask ConnectionInfoQuery) ConnectionInfoQuery {
+ return ^mask & x
+}
+
+func (x ConnectionInfoQuery) String() string {
+ switch x {
+ case 1:
+ return "Representation"
+ case 2:
+ return "Rights"
+ case 4:
+ return "AvailableOperations"
+ }
+ return "Unknown"
+}
+
+var _ _bindings.Bits = NodeProtocols(0)
+
+// A node may have multiple supported representations when opening, even though
+// it may have a fixed underlying identity.
+//
+// Today, a file is accessed via the [`fuchsia.io2/File`] protocol, and sends a
+// [`Representation.FileInfo`] when opened with `GET_CONNECTION_INFO`. However,
+// in the future we might introduce a more sophisticated `FileV2` protocol, or
+// a more efficient `SuperFastFile` backed by a specialized kernel object.
+// New clients can request the more advanced representations by specifying
+// the corresponding bits in [`NodeProtocols`], whereas existing clients
+// would continue to talk to the node via the old representation.
+//
+// [`NodeProtocols`] enables forward-compatibility through a form of protocol
+// negotiation.
+//
+// The elements have one-to-one correspondence with the members of
+// [`Representation`].
+type NodeProtocols uint64
+
+const (
+ NodeProtocolsConnector NodeProtocols = 1
+ NodeProtocolsDirectory NodeProtocols = 2
+ NodeProtocolsFile NodeProtocols = 4
+ NodeProtocolsMemory NodeProtocols = 8
+ NodeProtocolsPosixSocket NodeProtocols = 16
+ NodeProtocolsPipe NodeProtocols = 32
+ NodeProtocolsDebuglog NodeProtocols = 64
+ NodeProtocolsDevice NodeProtocols = 268435456
+ NodeProtocolsTty NodeProtocols = 536870912
+ NodeProtocols_Mask NodeProtocols = 805306495
+)
+
+func (_ NodeProtocols) I_BitsMask() NodeProtocols {
+ return NodeProtocols_Mask
+}
+
+func (_ NodeProtocols) I_BitsIsStrict() bool {
+ return true
+}
+
+func (x NodeProtocols) HasUnknownBits() bool {
+ return x.GetUnknownBits() != 0
+}
+
+func (x NodeProtocols) GetUnknownBits() uint64 {
+ return uint64(^NodeProtocols_Mask & x)
+}
+
+func (x NodeProtocols) InvertBits() NodeProtocols {
+ return NodeProtocols_Mask & ^x
+}
+
+// HasBits validates that all flipped bits in the mask are set.
+func (x NodeProtocols) HasBits(mask NodeProtocols) bool {
+ return mask|x == x
+}
+
+// ClearBits ensures all flipped bits in the mask are unset.
+func (x NodeProtocols) ClearBits(mask NodeProtocols) NodeProtocols {
+ return ^mask & x
+}
+
+func (x NodeProtocols) String() string {
+ switch x {
+ case 1:
+ return "Connector"
+ case 2:
+ return "Directory"
+ case 4:
+ return "File"
+ case 8:
+ return "Memory"
+ case 16:
+ return "PosixSocket"
+ case 32:
+ return "Pipe"
+ case 64:
+ return "Debuglog"
+ case 268435456:
+ return "Device"
+ case 536870912:
+ return "Tty"
+ }
+ return "Unknown"
+}
+
+var _ _bindings.Bits = ConnectionFlags(0)
+
+// Flags applicable to both [`Directory.Open`] and [`Node.Reopen`].
+type ConnectionFlags uint64
+
+const (
+ ConnectionFlagsGetConnectionInfo ConnectionFlags = 1
+ ConnectionFlagsConnect ConnectionFlags = 2
+ ConnectionFlagsAppend ConnectionFlags = 4
+ ConnectionFlagsTruncate ConnectionFlags = 8
+ ConnectionFlags_Mask ConnectionFlags = 15
+)
+
+func (_ ConnectionFlags) I_BitsMask() ConnectionFlags {
+ return ConnectionFlags_Mask
+}
+
+func (_ ConnectionFlags) I_BitsIsStrict() bool {
+ return true
+}
+
+func (x ConnectionFlags) HasUnknownBits() bool {
+ return x.GetUnknownBits() != 0
+}
+
+func (x ConnectionFlags) GetUnknownBits() uint64 {
+ return uint64(^ConnectionFlags_Mask & x)
+}
+
+func (x ConnectionFlags) InvertBits() ConnectionFlags {
+ return ConnectionFlags_Mask & ^x
+}
+
+// HasBits validates that all flipped bits in the mask are set.
+func (x ConnectionFlags) HasBits(mask ConnectionFlags) bool {
+ return mask|x == x
+}
+
+// ClearBits ensures all flipped bits in the mask are unset.
+func (x ConnectionFlags) ClearBits(mask ConnectionFlags) ConnectionFlags {
+ return ^mask & x
+}
+
+func (x ConnectionFlags) String() string {
+ switch x {
+ case 1:
+ return "GetConnectionInfo"
+ case 2:
+ return "Connect"
+ case 4:
+ return "Append"
+ case 8:
+ return "Truncate"
+ }
+ return "Unknown"
+}
+
+var _ _bindings.Bits = DeviceSignal(0)
+
+type DeviceSignal uint32
+
+const (
+ DeviceSignalReadable DeviceSignal = 16777216
+ DeviceSignalWritable DeviceSignal = 33554432
+ DeviceSignalError DeviceSignal = 67108864
+ DeviceSignalHangup DeviceSignal = 134217728
+ DeviceSignalOob DeviceSignal = 268435456
+ DeviceSignal_Mask DeviceSignal = 520093696
+)
+
+func (_ DeviceSignal) I_BitsMask() DeviceSignal {
+ return DeviceSignal_Mask
+}
+
+func (_ DeviceSignal) I_BitsIsStrict() bool {
+ return true
+}
+
+func (x DeviceSignal) HasUnknownBits() bool {
+ return x.GetUnknownBits() != 0
+}
+
+func (x DeviceSignal) GetUnknownBits() uint64 {
+ return uint64(^DeviceSignal_Mask & x)
+}
+
+func (x DeviceSignal) InvertBits() DeviceSignal {
+ return DeviceSignal_Mask & ^x
+}
+
+// HasBits validates that all flipped bits in the mask are set.
+func (x DeviceSignal) HasBits(mask DeviceSignal) bool {
+ return mask|x == x
+}
+
+// ClearBits ensures all flipped bits in the mask are unset.
+func (x DeviceSignal) ClearBits(mask DeviceSignal) DeviceSignal {
+ return ^mask & x
+}
+
+func (x DeviceSignal) String() string {
+ switch x {
+ case 16777216:
+ return "Readable"
+ case 33554432:
+ return "Writable"
+ case 67108864:
+ return "Error"
+ case 134217728:
+ return "Hangup"
+ case 268435456:
+ return "Oob"
+ }
+ return "Unknown"
+}
+
+var _ _bindings.Bits = UnlinkFlags(0)
+
+// Flags for [`Directory.Unlink`].
+type UnlinkFlags uint64
+
+const (
+ UnlinkFlagsMustBeDirectory UnlinkFlags = 1
+ UnlinkFlags_Mask UnlinkFlags = 1
+)
+
+func (_ UnlinkFlags) I_BitsMask() UnlinkFlags {
+ return UnlinkFlags_Mask
+}
+
+func (_ UnlinkFlags) I_BitsIsStrict() bool {
+ return true
+}
+
+func (x UnlinkFlags) HasUnknownBits() bool {
+ return x.GetUnknownBits() != 0
+}
+
+func (x UnlinkFlags) GetUnknownBits() uint64 {
+ return uint64(^UnlinkFlags_Mask & x)
+}
+
+func (x UnlinkFlags) InvertBits() UnlinkFlags {
+ return UnlinkFlags_Mask & ^x
+}
+
+// HasBits validates that all flipped bits in the mask are set.
+func (x UnlinkFlags) HasBits(mask UnlinkFlags) bool {
+ return mask|x == x
+}
+
+// ClearBits ensures all flipped bits in the mask are unset.
+func (x UnlinkFlags) ClearBits(mask UnlinkFlags) UnlinkFlags {
+ return ^mask & x
+}
+
+func (x UnlinkFlags) String() string {
+ switch x {
+ case 1:
+ return "MustBeDirectory"
+ }
+ return "Unknown"
+}
+
+var _ _bindings.Bits = DirectoryWatchMask(0)
+
+// Used by [`fuchsia.io2/Directory.Watch`] to indicate the types of events
+// interested by a watcher.
+type DirectoryWatchMask uint64
+
+const (
+ DirectoryWatchMaskExisting DirectoryWatchMask = 1
+ DirectoryWatchMaskIdle DirectoryWatchMask = 2
+ DirectoryWatchMaskAdded DirectoryWatchMask = 4
+ DirectoryWatchMaskRemoved DirectoryWatchMask = 8
+ DirectoryWatchMask_Mask DirectoryWatchMask = 15
+)
+
+func (_ DirectoryWatchMask) I_BitsMask() DirectoryWatchMask {
+ return DirectoryWatchMask_Mask
+}
+
+func (_ DirectoryWatchMask) I_BitsIsStrict() bool {
+ return true
+}
+
+func (x DirectoryWatchMask) HasUnknownBits() bool {
+ return x.GetUnknownBits() != 0
+}
+
+func (x DirectoryWatchMask) GetUnknownBits() uint64 {
+ return uint64(^DirectoryWatchMask_Mask & x)
+}
+
+func (x DirectoryWatchMask) InvertBits() DirectoryWatchMask {
+ return DirectoryWatchMask_Mask & ^x
+}
+
+// HasBits validates that all flipped bits in the mask are set.
+func (x DirectoryWatchMask) HasBits(mask DirectoryWatchMask) bool {
+ return mask|x == x
+}
+
+// ClearBits ensures all flipped bits in the mask are unset.
+func (x DirectoryWatchMask) ClearBits(mask DirectoryWatchMask) DirectoryWatchMask {
+ return ^mask & x
+}
+
+func (x DirectoryWatchMask) String() string {
+ switch x {
+ case 1:
+ return "Existing"
+ case 2:
+ return "Idle"
+ case 4:
+ return "Added"
+ case 8:
+ return "Removed"
+ }
+ return "Unknown"
+}
+
+var _ _bindings.Bits = VmoFlags(0)
+
+type VmoFlags uint64
+
+const (
+ VmoFlagsRead VmoFlags = 1
+ VmoFlagsWrite VmoFlags = 2
+ VmoFlagsExecute VmoFlags = 4
+ VmoFlagsPrivateClone VmoFlags = 65536
+ VmoFlagsSharedBuffer VmoFlags = 131072
+ VmoFlags_Mask VmoFlags = 196615
+)
+
+func (_ VmoFlags) I_BitsMask() VmoFlags {
+ return VmoFlags_Mask
+}
+
+func (_ VmoFlags) I_BitsIsStrict() bool {
+ return true
+}
+
+func (x VmoFlags) HasUnknownBits() bool {
+ return x.GetUnknownBits() != 0
+}
+
+func (x VmoFlags) GetUnknownBits() uint64 {
+ return uint64(^VmoFlags_Mask & x)
+}
+
+func (x VmoFlags) InvertBits() VmoFlags {
+ return VmoFlags_Mask & ^x
+}
+
+// HasBits validates that all flipped bits in the mask are set.
+func (x VmoFlags) HasBits(mask VmoFlags) bool {
+ return mask|x == x
+}
+
+// ClearBits ensures all flipped bits in the mask are unset.
+func (x VmoFlags) ClearBits(mask VmoFlags) VmoFlags {
+ return ^mask & x
+}
+
+func (x VmoFlags) String() string {
+ switch x {
+ case 1:
+ return "Read"
+ case 2:
+ return "Write"
+ case 4:
+ return "Execute"
+ case 65536:
+ return "PrivateClone"
+ case 131072:
+ return "SharedBuffer"
+ }
+ return "Unknown"
+}
+
+var _ _bindings.Bits = FileSignal(0)
+
+type FileSignal uint32
+
+const (
+ FileSignalReadable FileSignal = 16777216
+ FileSignalWritable FileSignal = 33554432
+ FileSignal_Mask FileSignal = 50331648
+)
+
+func (_ FileSignal) I_BitsMask() FileSignal {
+ return FileSignal_Mask
+}
+
+func (_ FileSignal) I_BitsIsStrict() bool {
+ return true
+}
+
+func (x FileSignal) HasUnknownBits() bool {
+ return x.GetUnknownBits() != 0
+}
+
+func (x FileSignal) GetUnknownBits() uint64 {
+ return uint64(^FileSignal_Mask & x)
+}
+
+func (x FileSignal) InvertBits() FileSignal {
+ return FileSignal_Mask & ^x
+}
+
+// HasBits validates that all flipped bits in the mask are set.
+func (x FileSignal) HasBits(mask FileSignal) bool {
+ return mask|x == x
+}
+
+// ClearBits ensures all flipped bits in the mask are unset.
+func (x FileSignal) ClearBits(mask FileSignal) FileSignal {
+ return ^mask & x
+}
+
+func (x FileSignal) String() string {
+ switch x {
+ case 16777216:
+ return "Readable"
+ case 33554432:
+ return "Writable"
+ }
+ return "Unknown"
+}
+
+var _ _bindings.Bits = InotifyWatchMask(0)
+
+// Used by InotifyAddWatch to indicate the server the events to be watched on.
+// Also used by [`fuchsia.io2/Node.Inotify`] to indicate the types of events
+// that occured on server side, to be notified to clients. See InotifyEvent.
+type InotifyWatchMask uint32
+
+const (
+ InotifyWatchMaskAccess InotifyWatchMask = 1
+ InotifyWatchMaskModify InotifyWatchMask = 2
+ InotifyWatchMaskAttrib InotifyWatchMask = 4
+ InotifyWatchMaskCloseWrite InotifyWatchMask = 8
+ InotifyWatchMaskCloseNowrite InotifyWatchMask = 16
+ InotifyWatchMaskOpen InotifyWatchMask = 32
+ InotifyWatchMaskMovedFrom InotifyWatchMask = 64
+ InotifyWatchMaskMovedTo InotifyWatchMask = 128
+ InotifyWatchMaskCreate InotifyWatchMask = 256
+ InotifyWatchMaskDelete InotifyWatchMask = 512
+ InotifyWatchMaskDeleteSelf InotifyWatchMask = 1024
+ InotifyWatchMaskMoveSelf InotifyWatchMask = 2048
+ InotifyWatchMaskUnmount InotifyWatchMask = 8192
+ InotifyWatchMaskQOverflow InotifyWatchMask = 16384
+ InotifyWatchMaskIgnored InotifyWatchMask = 32768
+ InotifyWatchMaskOnlydir InotifyWatchMask = 16777216
+ InotifyWatchMaskDontFollow InotifyWatchMask = 33554432
+ InotifyWatchMaskExclUnlink InotifyWatchMask = 67108864
+ InotifyWatchMaskMaskCreate InotifyWatchMask = 268435456
+ InotifyWatchMaskMaskAdd InotifyWatchMask = 536870912
+ InotifyWatchMaskIsdirectory InotifyWatchMask = 1073741824
+ InotifyWatchMaskOneshot InotifyWatchMask = 2147483648
+ InotifyWatchMask_Mask InotifyWatchMask = 4144033791
+)
+
+func (_ InotifyWatchMask) I_BitsMask() InotifyWatchMask {
+ return InotifyWatchMask_Mask
+}
+
+func (_ InotifyWatchMask) I_BitsIsStrict() bool {
+ return true
+}
+
+func (x InotifyWatchMask) HasUnknownBits() bool {
+ return x.GetUnknownBits() != 0
+}
+
+func (x InotifyWatchMask) GetUnknownBits() uint64 {
+ return uint64(^InotifyWatchMask_Mask & x)
+}
+
+func (x InotifyWatchMask) InvertBits() InotifyWatchMask {
+ return InotifyWatchMask_Mask & ^x
+}
+
+// HasBits validates that all flipped bits in the mask are set.
+func (x InotifyWatchMask) HasBits(mask InotifyWatchMask) bool {
+ return mask|x == x
+}
+
+// ClearBits ensures all flipped bits in the mask are unset.
+func (x InotifyWatchMask) ClearBits(mask InotifyWatchMask) InotifyWatchMask {
+ return ^mask & x
+}
+
+func (x InotifyWatchMask) String() string {
+ switch x {
+ case 1:
+ return "Access"
+ case 2:
+ return "Modify"
+ case 4:
+ return "Attrib"
+ case 8:
+ return "CloseWrite"
+ case 16:
+ return "CloseNowrite"
+ case 32:
+ return "Open"
+ case 64:
+ return "MovedFrom"
+ case 128:
+ return "MovedTo"
+ case 256:
+ return "Create"
+ case 512:
+ return "Delete"
+ case 1024:
+ return "DeleteSelf"
+ case 2048:
+ return "MoveSelf"
+ case 8192:
+ return "Unmount"
+ case 16384:
+ return "QOverflow"
+ case 32768:
+ return "Ignored"
+ case 16777216:
+ return "Onlydir"
+ case 33554432:
+ return "DontFollow"
+ case 67108864:
+ return "ExclUnlink"
+ case 268435456:
+ return "MaskCreate"
+ case 536870912:
+ return "MaskAdd"
+ case 1073741824:
+ return "Isdirectory"
+ case 2147483648:
+ return "Oneshot"
+ }
+ return "Unknown"
+}
+
+var _ _bindings.Bits = NodeAttributesQuery(0)
+
+// When calling [`Node.GetAttributes`], set the corresponding bit to one
+// to query that particular attribute.
+// The elements here correspond one-to-one with [`NodeAttributes`].
+type NodeAttributesQuery uint64
+
+const (
+ NodeAttributesQueryProtocols NodeAttributesQuery = 1
+ NodeAttributesQueryAbilities NodeAttributesQuery = 2
+ NodeAttributesQueryContentSize NodeAttributesQuery = 4
+ NodeAttributesQueryStorageSize NodeAttributesQuery = 8
+ NodeAttributesQueryLinkCount NodeAttributesQuery = 16
+ NodeAttributesQueryCreationTime NodeAttributesQuery = 32
+ NodeAttributesQueryModificationTime NodeAttributesQuery = 64
+ NodeAttributesQueryId NodeAttributesQuery = 128
+ NodeAttributesQuery_Mask NodeAttributesQuery = 255
+)
+
+func (_ NodeAttributesQuery) I_BitsMask() NodeAttributesQuery {
+ return NodeAttributesQuery_Mask
+}
+
+func (_ NodeAttributesQuery) I_BitsIsStrict() bool {
+ return true
+}
+
+func (x NodeAttributesQuery) HasUnknownBits() bool {
+ return x.GetUnknownBits() != 0
+}
+
+func (x NodeAttributesQuery) GetUnknownBits() uint64 {
+ return uint64(^NodeAttributesQuery_Mask & x)
+}
+
+func (x NodeAttributesQuery) InvertBits() NodeAttributesQuery {
+ return NodeAttributesQuery_Mask & ^x
+}
+
+// HasBits validates that all flipped bits in the mask are set.
+func (x NodeAttributesQuery) HasBits(mask NodeAttributesQuery) bool {
+ return mask|x == x
+}
+
+// ClearBits ensures all flipped bits in the mask are unset.
+func (x NodeAttributesQuery) ClearBits(mask NodeAttributesQuery) NodeAttributesQuery {
+ return ^mask & x
+}
+
+func (x NodeAttributesQuery) String() string {
+ switch x {
+ case 1:
+ return "Protocols"
+ case 2:
+ return "Abilities"
+ case 4:
+ return "ContentSize"
+ case 8:
+ return "StorageSize"
+ case 16:
+ return "LinkCount"
+ case 32:
+ return "CreationTime"
+ case 64:
+ return "ModificationTime"
+ case 128:
+ return "Id"
+ }
+ return "Unknown"
+}
+
+var _ _bindings.Bits = Operations(0)
+
+// The common members definition behind [`Rights`] and [`Abilities`].
+// Note that Directory operations are distinct from File operations, with the
+// exception of some common operations (e.g. `GET_ATTRIBUTES`) defined on the
+// underlying [`fuchsia.io2/Node`].
+type Operations uint64
+
+const (
+ OperationsConnect Operations = 1
+ OperationsReadBytes Operations = 2
+ OperationsWriteBytes Operations = 4
+ OperationsExecute Operations = 8
+ OperationsGetAttributes Operations = 16
+ OperationsUpdateAttributes Operations = 32
+ OperationsEnumerate Operations = 64
+ OperationsTraverse Operations = 128
+ OperationsModifyDirectory Operations = 256
+ OperationsAdmin Operations = 72057594037927936
+ Operations_Mask Operations = 72057594037928447
+)
+
+func (_ Operations) I_BitsMask() Operations {
+ return Operations_Mask
+}
+
+func (_ Operations) I_BitsIsStrict() bool {
+ return true
+}
+
+func (x Operations) HasUnknownBits() bool {
+ return x.GetUnknownBits() != 0
+}
+
+func (x Operations) GetUnknownBits() uint64 {
+ return uint64(^Operations_Mask & x)
+}
+
+func (x Operations) InvertBits() Operations {
+ return Operations_Mask & ^x
+}
+
+// HasBits validates that all flipped bits in the mask are set.
+func (x Operations) HasBits(mask Operations) bool {
+ return mask|x == x
+}
+
+// ClearBits ensures all flipped bits in the mask are unset.
+func (x Operations) ClearBits(mask Operations) Operations {
+ return ^mask & x
+}
+
+func (x Operations) String() string {
+ switch x {
+ case 1:
+ return "Connect"
+ case 2:
+ return "ReadBytes"
+ case 4:
+ return "WriteBytes"
+ case 8:
+ return "Execute"
+ case 16:
+ return "GetAttributes"
+ case 32:
+ return "UpdateAttributes"
+ case 64:
+ return "Enumerate"
+ case 128:
+ return "Traverse"
+ case 256:
+ return "ModifyDirectory"
+ case 72057594037927936:
+ return "Admin"
+ }
+ return "Unknown"
+}
+
+// Options for requesting rights on the new connection. Because opening a
+// new connection may involve multiple hops through directory proxies,
+// we require the client to set an upper bound and lower bound on the
+// rights request, and intermediate proxies to refine these bounds.
+//
+// The rights manipulation should be implemented mechanically
+// without knowledge of any specific rights, and servers should propagate
+// unknown bits members, to gracefully handle future rights extensions.
+//
+// ## Implementation Notes
+//
+// It could be common for a client to request an exact set of rights.
+// We recommend client libraries to define a helper function like follows:
+//
+// ```
+// fn Exact(exact_rights: Rights) -> RightsRequest {
+// RightsRequest {
+// at_most: exact_rights,
+// at_least: exact_rights,
+// resolution: RightsResolution.MAXIMIZE,
+// }
+// }
+// ```
+type RightsRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"24" fidl_alignment_v2:"8"`
+ // Sets an upper bound on the resulting rights. The exact rights will
+ // depend on `resolution`.
+ //
+ // ## Implementation Notes
+ //
+ // When a directory proxy encounters this variant, it should compute the
+ // intersection between this and the rights on the connection where it
+ // received the request, to shrink the rights.
+ //
+ // * If the intersection is empty, or not a superset of `at_least`,
+ // the proxy should close `object_request` with the
+ // `ZX_ERR_ACCESS_DENIED` epitaph.
+ // * Otherwise, the proxy should forward the `Open` call as usual,
+ // but update `at_most` with the shrunk rights.
+ AtMost Operations `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ // Sets a lower bound on the resulting rights. The exact rights will
+ // depend on `resolution`.
+ //
+ // + During [`Directory.Open`], you may only specify the same rights as
+ // what the directory connection already has, or a subset of those.
+ // + During [`Node.Reopen`], similarly, you may only specify the same or
+ // a subset of rights possessed by the original connection.
+ // + Exceeding those rights causes `object_request` to be closed with a
+ // `ZX_ERR_ACCESS_DENIED` epitaph.
+ //
+ // Therefore there are these invariants which should be maintained:
+ //
+ // ```
+ // at_most ⊋ {}
+ // at_most ⊃ at_least
+ // rights_on_connection_where_open_is_received ⊋ {}
+ // rights_on_connection_where_open_is_received ⊃ at_least
+ // ```
+ //
+ // using the superset (`⊃`), proper superset (`⊋`),
+ // and empty set (`{}`) notations.
+ AtLeast Operations `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+ // Controls how the rights on the new connection are computed from
+ // `at_most` and `at_least`. See [`fuchsia.io2/RightsResolution`].
+ Resolution RightsResolution `fidl_offset_v1:"16" fidl_offset_v2:"16"`
+}
+
+var _mRightsRequest = _bindings.CreateLazyMarshaler(RightsRequest{})
+
+func (msg *RightsRequest) Marshaler() _bindings.Marshaler {
+ return _mRightsRequest
+}
+
+type DirectoryUnlinkResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mDirectoryUnlinkResponse = _bindings.CreateLazyMarshaler(DirectoryUnlinkResponse{})
+
+func (msg *DirectoryUnlinkResponse) Marshaler() _bindings.Marshaler {
+ return _mDirectoryUnlinkResponse
+}
+
+type DirectoryUnlink2Response struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mDirectoryUnlink2Response = _bindings.CreateLazyMarshaler(DirectoryUnlink2Response{})
+
+func (msg *DirectoryUnlink2Response) Marshaler() _bindings.Marshaler {
+ return _mDirectoryUnlink2Response
+}
+
+type DirectoryRenameResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mDirectoryRenameResponse = _bindings.CreateLazyMarshaler(DirectoryRenameResponse{})
+
+func (msg *DirectoryRenameResponse) Marshaler() _bindings.Marshaler {
+ return _mDirectoryRenameResponse
+}
+
+type DirectoryLinkResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mDirectoryLinkResponse = _bindings.CreateLazyMarshaler(DirectoryLinkResponse{})
+
+func (msg *DirectoryLinkResponse) Marshaler() _bindings.Marshaler {
+ return _mDirectoryLinkResponse
+}
+
+type DirectoryIteratorGetNextResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Entries []DirectoryEntry `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"8192"`
+}
+
+var _mDirectoryIteratorGetNextResponse = _bindings.CreateLazyMarshaler(DirectoryIteratorGetNextResponse{})
+
+func (msg *DirectoryIteratorGetNextResponse) Marshaler() _bindings.Marshaler {
+ return _mDirectoryIteratorGetNextResponse
+}
+
+type IdleEvent struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mIdleEvent = _bindings.CreateLazyMarshaler(IdleEvent{})
+
+func (msg *IdleEvent) Marshaler() _bindings.Marshaler {
+ return _mIdleEvent
+}
+
+type FileSeekResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ OffsetFromStart uint64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mFileSeekResponse = _bindings.CreateLazyMarshaler(FileSeekResponse{})
+
+func (msg *FileSeekResponse) Marshaler() _bindings.Marshaler {
+ return _mFileSeekResponse
+}
+
+type FileReadResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Data []uint8 `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"8192"`
+}
+
+var _mFileReadResponse = _bindings.CreateLazyMarshaler(FileReadResponse{})
+
+func (msg *FileReadResponse) Marshaler() _bindings.Marshaler {
+ return _mFileReadResponse
+}
+
+type FileWriteResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ ActualCount uint64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mFileWriteResponse = _bindings.CreateLazyMarshaler(FileWriteResponse{})
+
+func (msg *FileWriteResponse) Marshaler() _bindings.Marshaler {
+ return _mFileWriteResponse
+}
+
+type FileReadAtResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Data []uint8 `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"8192"`
+}
+
+var _mFileReadAtResponse = _bindings.CreateLazyMarshaler(FileReadAtResponse{})
+
+func (msg *FileReadAtResponse) Marshaler() _bindings.Marshaler {
+ return _mFileReadAtResponse
+}
+
+type FileWriteAtResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ ActualCount uint64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mFileWriteAtResponse = _bindings.CreateLazyMarshaler(FileWriteAtResponse{})
+
+func (msg *FileWriteAtResponse) Marshaler() _bindings.Marshaler {
+ return _mFileWriteAtResponse
+}
+
+type FileResizeResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mFileResizeResponse = _bindings.CreateLazyMarshaler(FileResizeResponse{})
+
+func (msg *FileResizeResponse) Marshaler() _bindings.Marshaler {
+ return _mFileResizeResponse
+}
+
+type FileGetMemRangeResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"24" fidl_alignment_v2:"8"`
+ Buffer fuchsiamem.Range `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mFileGetMemRangeResponse = _bindings.CreateLazyMarshaler(FileGetMemRangeResponse{})
+
+func (msg *FileGetMemRangeResponse) Marshaler() _bindings.Marshaler {
+ return _mFileGetMemRangeResponse
+}
+
+type InotifyEvent struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"32" fidl_alignment_v1:"8" fidl_size_v2:"32" fidl_alignment_v2:"8"`
+ WatchDescriptor uint32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Mask InotifyWatchMask `fidl_offset_v1:"4" fidl_offset_v2:"4"`
+ Cookie uint32 `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+ Len uint32 `fidl_offset_v1:"12" fidl_offset_v2:"12"`
+ Filename string `fidl_offset_v1:"16" fidl_offset_v2:"16" fidl_bounds:"4095"`
+}
+
+var _mInotifyEvent = _bindings.CreateLazyMarshaler(InotifyEvent{})
+
+func (msg *InotifyEvent) Marshaler() _bindings.Marshaler {
+ return _mInotifyEvent
+}
+
+type AdvisoryLockingAdvisoryLockResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mAdvisoryLockingAdvisoryLockResponse = _bindings.CreateLazyMarshaler(AdvisoryLockingAdvisoryLockResponse{})
+
+func (msg *AdvisoryLockingAdvisoryLockResponse) Marshaler() _bindings.Marshaler {
+ return _mAdvisoryLockingAdvisoryLockResponse
+}
+
+// A range within a file associated with an advisory lock.
+//
+// The range can extend beyond the end of the file but cannot extend beyond
+// the beginning of the file.
+type AdvisoryLockRange struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"24" fidl_alignment_v2:"8"`
+ // The location in the file from which [`offset`] is computed.
+ Origin SeekOrigin `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ // The start of the byte range, expressed as an offset from [`origin`].
+ // Cannot be negative if [`origin`] is [`SeekOrigin.START`].
+ Offset int64 `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+ // The length of the byte range in bytes.
+ //
+ // If the length is zero, then the byte range exends until the end of the
+ // file, regardless of how large the file becomes.
+ //
+ // If the length is negative, the byte range includes the bytes `offset` +
+ // `length` up to, and including, `offset` - 1, provided this range does
+ // not extend beyond the beginning of the file.
+ Length int64 `fidl_offset_v1:"16" fidl_offset_v2:"16"`
+}
+
+var _mAdvisoryLockRange = _bindings.CreateLazyMarshaler(AdvisoryLockRange{})
+
+func (msg *AdvisoryLockRange) Marshaler() _bindings.Marshaler {
+ return _mAdvisoryLockRange
+}
+
+type NodeGetTokenResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"4" fidl_alignment_v1:"4" fidl_size_v2:"4" fidl_alignment_v2:"4"`
+ Token _zx.Event `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_handle_subtype:"5" fidl_handle_rights:"2147483648" fidl_bounds:"0"`
+}
+
+var _mNodeGetTokenResponse = _bindings.CreateLazyMarshaler(NodeGetTokenResponse{})
+
+func (msg *NodeGetTokenResponse) Marshaler() _bindings.Marshaler {
+ return _mNodeGetTokenResponse
+}
+
+type NodeGetAttributesResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Attributes NodeAttributes `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mNodeGetAttributesResponse = _bindings.CreateLazyMarshaler(NodeGetAttributesResponse{})
+
+func (msg *NodeGetAttributesResponse) Marshaler() _bindings.Marshaler {
+ return _mNodeGetAttributesResponse
+}
+
+type NodeUpdateAttributesResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mNodeUpdateAttributesResponse = _bindings.CreateLazyMarshaler(NodeUpdateAttributesResponse{})
+
+func (msg *NodeUpdateAttributesResponse) Marshaler() _bindings.Marshaler {
+ return _mNodeUpdateAttributesResponse
+}
+
+type NodeSyncResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mNodeSyncResponse = _bindings.CreateLazyMarshaler(NodeSyncResponse{})
+
+func (msg *NodeSyncResponse) Marshaler() _bindings.Marshaler {
+ return _mNodeSyncResponse
+}
+
+type debuglogWithCtxReopenRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"24" fidl_alignment_v2:"8"`
+ Options ConnectionOptions `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ ObjectRequest _zx.Channel `fidl_offset_v1:"16" fidl_offset_v2:"16" fidl_handle_subtype:"4" fidl_handle_rights:"2147483648" fidl_bounds:"0"`
+}
+
+var _mdebuglogWithCtxReopenRequest = _bindings.CreateLazyMarshaler(debuglogWithCtxReopenRequest{})
+
+func (msg *debuglogWithCtxReopenRequest) Marshaler() _bindings.Marshaler {
+ return _mdebuglogWithCtxReopenRequest
+}
+
+type debuglogWithCtxDescribeRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Query ConnectionInfoQuery `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdebuglogWithCtxDescribeRequest = _bindings.CreateLazyMarshaler(debuglogWithCtxDescribeRequest{})
+
+func (msg *debuglogWithCtxDescribeRequest) Marshaler() _bindings.Marshaler {
+ return _mdebuglogWithCtxDescribeRequest
+}
+
+type debuglogWithCtxDescribeResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Info ConnectionInfo `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdebuglogWithCtxDescribeResponse = _bindings.CreateLazyMarshaler(debuglogWithCtxDescribeResponse{})
+
+func (msg *debuglogWithCtxDescribeResponse) Marshaler() _bindings.Marshaler {
+ return _mdebuglogWithCtxDescribeResponse
+}
+
+type debuglogWithCtxOnConnectionInfoResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Info ConnectionInfo `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdebuglogWithCtxOnConnectionInfoResponse = _bindings.CreateLazyMarshaler(debuglogWithCtxOnConnectionInfoResponse{})
+
+func (msg *debuglogWithCtxOnConnectionInfoResponse) Marshaler() _bindings.Marshaler {
+ return _mdebuglogWithCtxOnConnectionInfoResponse
+}
+
+type debuglogWithCtxGetTokenResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result NodeGetTokenResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdebuglogWithCtxGetTokenResponse = _bindings.CreateLazyMarshaler(debuglogWithCtxGetTokenResponse{})
+
+func (msg *debuglogWithCtxGetTokenResponse) Marshaler() _bindings.Marshaler {
+ return _mdebuglogWithCtxGetTokenResponse
+}
+
+type debuglogWithCtxGetAttributesRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Query NodeAttributesQuery `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdebuglogWithCtxGetAttributesRequest = _bindings.CreateLazyMarshaler(debuglogWithCtxGetAttributesRequest{})
+
+func (msg *debuglogWithCtxGetAttributesRequest) Marshaler() _bindings.Marshaler {
+ return _mdebuglogWithCtxGetAttributesRequest
+}
+
+type debuglogWithCtxGetAttributesResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result NodeGetAttributesResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdebuglogWithCtxGetAttributesResponse = _bindings.CreateLazyMarshaler(debuglogWithCtxGetAttributesResponse{})
+
+func (msg *debuglogWithCtxGetAttributesResponse) Marshaler() _bindings.Marshaler {
+ return _mdebuglogWithCtxGetAttributesResponse
+}
+
+type debuglogWithCtxUpdateAttributesRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Attributes NodeAttributes `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdebuglogWithCtxUpdateAttributesRequest = _bindings.CreateLazyMarshaler(debuglogWithCtxUpdateAttributesRequest{})
+
+func (msg *debuglogWithCtxUpdateAttributesRequest) Marshaler() _bindings.Marshaler {
+ return _mdebuglogWithCtxUpdateAttributesRequest
+}
+
+type debuglogWithCtxUpdateAttributesResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result NodeUpdateAttributesResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdebuglogWithCtxUpdateAttributesResponse = _bindings.CreateLazyMarshaler(debuglogWithCtxUpdateAttributesResponse{})
+
+func (msg *debuglogWithCtxUpdateAttributesResponse) Marshaler() _bindings.Marshaler {
+ return _mdebuglogWithCtxUpdateAttributesResponse
+}
+
+type debuglogWithCtxSyncResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result NodeSyncResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdebuglogWithCtxSyncResponse = _bindings.CreateLazyMarshaler(debuglogWithCtxSyncResponse{})
+
+func (msg *debuglogWithCtxSyncResponse) Marshaler() _bindings.Marshaler {
+ return _mdebuglogWithCtxSyncResponse
+}
+
+type directoryWithCtxReopenRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"24" fidl_alignment_v2:"8"`
+ Options ConnectionOptions `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ ObjectRequest _zx.Channel `fidl_offset_v1:"16" fidl_offset_v2:"16" fidl_handle_subtype:"4" fidl_handle_rights:"2147483648" fidl_bounds:"0"`
+}
+
+var _mdirectoryWithCtxReopenRequest = _bindings.CreateLazyMarshaler(directoryWithCtxReopenRequest{})
+
+func (msg *directoryWithCtxReopenRequest) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxReopenRequest
+}
+
+type directoryWithCtxDescribeRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Query ConnectionInfoQuery `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdirectoryWithCtxDescribeRequest = _bindings.CreateLazyMarshaler(directoryWithCtxDescribeRequest{})
+
+func (msg *directoryWithCtxDescribeRequest) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxDescribeRequest
+}
+
+type directoryWithCtxDescribeResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Info ConnectionInfo `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdirectoryWithCtxDescribeResponse = _bindings.CreateLazyMarshaler(directoryWithCtxDescribeResponse{})
+
+func (msg *directoryWithCtxDescribeResponse) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxDescribeResponse
+}
+
+type directoryWithCtxOnConnectionInfoResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Info ConnectionInfo `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdirectoryWithCtxOnConnectionInfoResponse = _bindings.CreateLazyMarshaler(directoryWithCtxOnConnectionInfoResponse{})
+
+func (msg *directoryWithCtxOnConnectionInfoResponse) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxOnConnectionInfoResponse
+}
+
+type directoryWithCtxGetTokenResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result NodeGetTokenResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdirectoryWithCtxGetTokenResponse = _bindings.CreateLazyMarshaler(directoryWithCtxGetTokenResponse{})
+
+func (msg *directoryWithCtxGetTokenResponse) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxGetTokenResponse
+}
+
+type directoryWithCtxGetAttributesRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Query NodeAttributesQuery `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdirectoryWithCtxGetAttributesRequest = _bindings.CreateLazyMarshaler(directoryWithCtxGetAttributesRequest{})
+
+func (msg *directoryWithCtxGetAttributesRequest) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxGetAttributesRequest
+}
+
+type directoryWithCtxGetAttributesResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result NodeGetAttributesResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdirectoryWithCtxGetAttributesResponse = _bindings.CreateLazyMarshaler(directoryWithCtxGetAttributesResponse{})
+
+func (msg *directoryWithCtxGetAttributesResponse) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxGetAttributesResponse
+}
+
+type directoryWithCtxUpdateAttributesRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Attributes NodeAttributes `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdirectoryWithCtxUpdateAttributesRequest = _bindings.CreateLazyMarshaler(directoryWithCtxUpdateAttributesRequest{})
+
+func (msg *directoryWithCtxUpdateAttributesRequest) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxUpdateAttributesRequest
+}
+
+type directoryWithCtxUpdateAttributesResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result NodeUpdateAttributesResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdirectoryWithCtxUpdateAttributesResponse = _bindings.CreateLazyMarshaler(directoryWithCtxUpdateAttributesResponse{})
+
+func (msg *directoryWithCtxUpdateAttributesResponse) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxUpdateAttributesResponse
+}
+
+type directoryWithCtxSyncResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result NodeSyncResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdirectoryWithCtxSyncResponse = _bindings.CreateLazyMarshaler(directoryWithCtxSyncResponse{})
+
+func (msg *directoryWithCtxSyncResponse) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxSyncResponse
+}
+
+type directoryWithCtxOpenRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"48" fidl_alignment_v1:"8" fidl_size_v2:"48" fidl_alignment_v2:"8"`
+ Path string `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"4095"`
+ Mode OpenMode `fidl_offset_v1:"16" fidl_offset_v2:"16"`
+ Options ConnectionOptions `fidl_offset_v1:"24" fidl_offset_v2:"24"`
+ ObjectRequest _zx.Channel `fidl_offset_v1:"40" fidl_offset_v2:"40" fidl_handle_subtype:"4" fidl_handle_rights:"2147483648" fidl_bounds:"0"`
+}
+
+var _mdirectoryWithCtxOpenRequest = _bindings.CreateLazyMarshaler(directoryWithCtxOpenRequest{})
+
+func (msg *directoryWithCtxOpenRequest) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxOpenRequest
+}
+
+type directoryWithCtxAddInotifyFilterRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"32" fidl_alignment_v1:"8" fidl_size_v2:"32" fidl_alignment_v2:"8"`
+ Path string `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"4095"`
+ Filter InotifyWatchMask `fidl_offset_v1:"16" fidl_offset_v2:"16"`
+ WatchDescriptor uint32 `fidl_offset_v1:"20" fidl_offset_v2:"20"`
+ Socket _zx.Socket `fidl_offset_v1:"24" fidl_offset_v2:"24" fidl_handle_subtype:"14" fidl_handle_rights:"2147483648" fidl_bounds:"0"`
+}
+
+var _mdirectoryWithCtxAddInotifyFilterRequest = _bindings.CreateLazyMarshaler(directoryWithCtxAddInotifyFilterRequest{})
+
+func (msg *directoryWithCtxAddInotifyFilterRequest) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxAddInotifyFilterRequest
+}
+
+type directoryWithCtxUnlinkRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Path string `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"4095"`
+}
+
+var _mdirectoryWithCtxUnlinkRequest = _bindings.CreateLazyMarshaler(directoryWithCtxUnlinkRequest{})
+
+func (msg *directoryWithCtxUnlinkRequest) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxUnlinkRequest
+}
+
+type directoryWithCtxUnlinkResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result DirectoryUnlinkResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdirectoryWithCtxUnlinkResponse = _bindings.CreateLazyMarshaler(directoryWithCtxUnlinkResponse{})
+
+func (msg *directoryWithCtxUnlinkResponse) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxUnlinkResponse
+}
+
+type directoryWithCtxUnlink2Request struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"32" fidl_alignment_v1:"8" fidl_size_v2:"32" fidl_alignment_v2:"8"`
+ Name string `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"255"`
+ Options UnlinkOptions `fidl_offset_v1:"16" fidl_offset_v2:"16"`
+}
+
+var _mdirectoryWithCtxUnlink2Request = _bindings.CreateLazyMarshaler(directoryWithCtxUnlink2Request{})
+
+func (msg *directoryWithCtxUnlink2Request) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxUnlink2Request
+}
+
+type directoryWithCtxUnlink2Response struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result DirectoryUnlink2Result `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdirectoryWithCtxUnlink2Response = _bindings.CreateLazyMarshaler(directoryWithCtxUnlink2Response{})
+
+func (msg *directoryWithCtxUnlink2Response) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxUnlink2Response
+}
+
+type directoryWithCtxEnumerateRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"24" fidl_alignment_v2:"8"`
+ Options DirectoryEnumerateOptions `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Iterator DirectoryIteratorWithCtxInterfaceRequest `fidl_offset_v1:"16" fidl_offset_v2:"16" fidl_handle_subtype:"4" fidl_bounds:"0"`
+}
+
+var _mdirectoryWithCtxEnumerateRequest = _bindings.CreateLazyMarshaler(directoryWithCtxEnumerateRequest{})
+
+func (msg *directoryWithCtxEnumerateRequest) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxEnumerateRequest
+}
+
+type directoryWithCtxRenameRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"40" fidl_alignment_v1:"8" fidl_size_v2:"40" fidl_alignment_v2:"8"`
+ Src string `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"255"`
+ DstParentToken _zx.Event `fidl_offset_v1:"16" fidl_offset_v2:"16" fidl_handle_subtype:"5" fidl_handle_rights:"2147483648" fidl_bounds:"0"`
+ Dst string `fidl_offset_v1:"24" fidl_offset_v2:"24" fidl_bounds:"255"`
+}
+
+var _mdirectoryWithCtxRenameRequest = _bindings.CreateLazyMarshaler(directoryWithCtxRenameRequest{})
+
+func (msg *directoryWithCtxRenameRequest) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxRenameRequest
+}
+
+type directoryWithCtxRenameResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result DirectoryRenameResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdirectoryWithCtxRenameResponse = _bindings.CreateLazyMarshaler(directoryWithCtxRenameResponse{})
+
+func (msg *directoryWithCtxRenameResponse) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxRenameResponse
+}
+
+type directoryWithCtxLinkRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"40" fidl_alignment_v1:"8" fidl_size_v2:"40" fidl_alignment_v2:"8"`
+ Src string `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"255"`
+ DstParentToken _zx.Event `fidl_offset_v1:"16" fidl_offset_v2:"16" fidl_handle_subtype:"5" fidl_handle_rights:"2147483648" fidl_bounds:"0"`
+ Dst string `fidl_offset_v1:"24" fidl_offset_v2:"24" fidl_bounds:"255"`
+}
+
+var _mdirectoryWithCtxLinkRequest = _bindings.CreateLazyMarshaler(directoryWithCtxLinkRequest{})
+
+func (msg *directoryWithCtxLinkRequest) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxLinkRequest
+}
+
+type directoryWithCtxLinkResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result DirectoryLinkResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdirectoryWithCtxLinkResponse = _bindings.CreateLazyMarshaler(directoryWithCtxLinkResponse{})
+
+func (msg *directoryWithCtxLinkResponse) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxLinkResponse
+}
+
+type directoryWithCtxWatchRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"32" fidl_alignment_v1:"8" fidl_size_v2:"32" fidl_alignment_v2:"8"`
+ Mask DirectoryWatchMask `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Options DirectoryWatchOptions `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+ Watcher DirectoryWatcherWithCtxInterfaceRequest `fidl_offset_v1:"24" fidl_offset_v2:"24" fidl_handle_subtype:"4" fidl_bounds:"0"`
+}
+
+var _mdirectoryWithCtxWatchRequest = _bindings.CreateLazyMarshaler(directoryWithCtxWatchRequest{})
+
+func (msg *directoryWithCtxWatchRequest) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWithCtxWatchRequest
+}
+
+type directoryIteratorWithCtxGetNextResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result DirectoryIteratorGetNextResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdirectoryIteratorWithCtxGetNextResponse = _bindings.CreateLazyMarshaler(directoryIteratorWithCtxGetNextResponse{})
+
+func (msg *directoryIteratorWithCtxGetNextResponse) Marshaler() _bindings.Marshaler {
+ return _mdirectoryIteratorWithCtxGetNextResponse
+}
+
+type directoryWatcherWithCtxGetNextResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Events []DirectoryWatchedEvent `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"8192"`
+}
+
+var _mdirectoryWatcherWithCtxGetNextResponse = _bindings.CreateLazyMarshaler(directoryWatcherWithCtxGetNextResponse{})
+
+func (msg *directoryWatcherWithCtxGetNextResponse) Marshaler() _bindings.Marshaler {
+ return _mdirectoryWatcherWithCtxGetNextResponse
+}
+
+type fileWithCtxReopenRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"24" fidl_alignment_v2:"8"`
+ Options ConnectionOptions `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ ObjectRequest _zx.Channel `fidl_offset_v1:"16" fidl_offset_v2:"16" fidl_handle_subtype:"4" fidl_handle_rights:"2147483648" fidl_bounds:"0"`
+}
+
+var _mfileWithCtxReopenRequest = _bindings.CreateLazyMarshaler(fileWithCtxReopenRequest{})
+
+func (msg *fileWithCtxReopenRequest) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxReopenRequest
+}
+
+type fileWithCtxDescribeRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Query ConnectionInfoQuery `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mfileWithCtxDescribeRequest = _bindings.CreateLazyMarshaler(fileWithCtxDescribeRequest{})
+
+func (msg *fileWithCtxDescribeRequest) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxDescribeRequest
+}
+
+type fileWithCtxDescribeResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Info ConnectionInfo `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mfileWithCtxDescribeResponse = _bindings.CreateLazyMarshaler(fileWithCtxDescribeResponse{})
+
+func (msg *fileWithCtxDescribeResponse) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxDescribeResponse
+}
+
+type fileWithCtxOnConnectionInfoResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Info ConnectionInfo `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mfileWithCtxOnConnectionInfoResponse = _bindings.CreateLazyMarshaler(fileWithCtxOnConnectionInfoResponse{})
+
+func (msg *fileWithCtxOnConnectionInfoResponse) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxOnConnectionInfoResponse
+}
+
+type fileWithCtxGetTokenResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result NodeGetTokenResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mfileWithCtxGetTokenResponse = _bindings.CreateLazyMarshaler(fileWithCtxGetTokenResponse{})
+
+func (msg *fileWithCtxGetTokenResponse) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxGetTokenResponse
+}
+
+type fileWithCtxGetAttributesRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Query NodeAttributesQuery `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mfileWithCtxGetAttributesRequest = _bindings.CreateLazyMarshaler(fileWithCtxGetAttributesRequest{})
+
+func (msg *fileWithCtxGetAttributesRequest) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxGetAttributesRequest
+}
+
+type fileWithCtxGetAttributesResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result NodeGetAttributesResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mfileWithCtxGetAttributesResponse = _bindings.CreateLazyMarshaler(fileWithCtxGetAttributesResponse{})
+
+func (msg *fileWithCtxGetAttributesResponse) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxGetAttributesResponse
+}
+
+type fileWithCtxUpdateAttributesRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Attributes NodeAttributes `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mfileWithCtxUpdateAttributesRequest = _bindings.CreateLazyMarshaler(fileWithCtxUpdateAttributesRequest{})
+
+func (msg *fileWithCtxUpdateAttributesRequest) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxUpdateAttributesRequest
+}
+
+type fileWithCtxUpdateAttributesResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result NodeUpdateAttributesResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mfileWithCtxUpdateAttributesResponse = _bindings.CreateLazyMarshaler(fileWithCtxUpdateAttributesResponse{})
+
+func (msg *fileWithCtxUpdateAttributesResponse) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxUpdateAttributesResponse
+}
+
+type fileWithCtxSyncResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result NodeSyncResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mfileWithCtxSyncResponse = _bindings.CreateLazyMarshaler(fileWithCtxSyncResponse{})
+
+func (msg *fileWithCtxSyncResponse) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxSyncResponse
+}
+
+type fileWithCtxAdvisoryLockRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Request AdvisoryLockRequest `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mfileWithCtxAdvisoryLockRequest = _bindings.CreateLazyMarshaler(fileWithCtxAdvisoryLockRequest{})
+
+func (msg *fileWithCtxAdvisoryLockRequest) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxAdvisoryLockRequest
+}
+
+type fileWithCtxAdvisoryLockResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result AdvisoryLockingAdvisoryLockResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mfileWithCtxAdvisoryLockResponse = _bindings.CreateLazyMarshaler(fileWithCtxAdvisoryLockResponse{})
+
+func (msg *fileWithCtxAdvisoryLockResponse) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxAdvisoryLockResponse
+}
+
+type fileWithCtxSeekRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Origin SeekOrigin `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Offset int64 `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+}
+
+var _mfileWithCtxSeekRequest = _bindings.CreateLazyMarshaler(fileWithCtxSeekRequest{})
+
+func (msg *fileWithCtxSeekRequest) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxSeekRequest
+}
+
+type fileWithCtxSeekResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result FileSeekResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mfileWithCtxSeekResponse = _bindings.CreateLazyMarshaler(fileWithCtxSeekResponse{})
+
+func (msg *fileWithCtxSeekResponse) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxSeekResponse
+}
+
+type fileWithCtxReadRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Count uint64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mfileWithCtxReadRequest = _bindings.CreateLazyMarshaler(fileWithCtxReadRequest{})
+
+func (msg *fileWithCtxReadRequest) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxReadRequest
+}
+
+type fileWithCtxReadResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result FileReadResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mfileWithCtxReadResponse = _bindings.CreateLazyMarshaler(fileWithCtxReadResponse{})
+
+func (msg *fileWithCtxReadResponse) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxReadResponse
+}
+
+type fileWithCtxWriteRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Data []uint8 `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"8192"`
+}
+
+var _mfileWithCtxWriteRequest = _bindings.CreateLazyMarshaler(fileWithCtxWriteRequest{})
+
+func (msg *fileWithCtxWriteRequest) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxWriteRequest
+}
+
+type fileWithCtxWriteResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result FileWriteResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mfileWithCtxWriteResponse = _bindings.CreateLazyMarshaler(fileWithCtxWriteResponse{})
+
+func (msg *fileWithCtxWriteResponse) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxWriteResponse
+}
+
+type fileWithCtxReadAtRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Count uint64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Offset uint64 `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+}
+
+var _mfileWithCtxReadAtRequest = _bindings.CreateLazyMarshaler(fileWithCtxReadAtRequest{})
+
+func (msg *fileWithCtxReadAtRequest) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxReadAtRequest
+}
+
+type fileWithCtxReadAtResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result FileReadAtResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mfileWithCtxReadAtResponse = _bindings.CreateLazyMarshaler(fileWithCtxReadAtResponse{})
+
+func (msg *fileWithCtxReadAtResponse) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxReadAtResponse
+}
+
+type fileWithCtxWriteAtRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"24" fidl_alignment_v2:"8"`
+ Data []uint8 `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"8192"`
+ Offset uint64 `fidl_offset_v1:"16" fidl_offset_v2:"16"`
+}
+
+var _mfileWithCtxWriteAtRequest = _bindings.CreateLazyMarshaler(fileWithCtxWriteAtRequest{})
+
+func (msg *fileWithCtxWriteAtRequest) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxWriteAtRequest
+}
+
+type fileWithCtxWriteAtResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result FileWriteAtResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mfileWithCtxWriteAtResponse = _bindings.CreateLazyMarshaler(fileWithCtxWriteAtResponse{})
+
+func (msg *fileWithCtxWriteAtResponse) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxWriteAtResponse
+}
+
+type fileWithCtxResizeRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Length uint64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mfileWithCtxResizeRequest = _bindings.CreateLazyMarshaler(fileWithCtxResizeRequest{})
+
+func (msg *fileWithCtxResizeRequest) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxResizeRequest
+}
+
+type fileWithCtxResizeResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result FileResizeResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mfileWithCtxResizeResponse = _bindings.CreateLazyMarshaler(fileWithCtxResizeResponse{})
+
+func (msg *fileWithCtxResizeResponse) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxResizeResponse
+}
+
+type fileWithCtxGetMemRangeRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Flags VmoFlags `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mfileWithCtxGetMemRangeRequest = _bindings.CreateLazyMarshaler(fileWithCtxGetMemRangeRequest{})
+
+func (msg *fileWithCtxGetMemRangeRequest) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxGetMemRangeRequest
+}
+
+type fileWithCtxGetMemRangeResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result FileGetMemRangeResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mfileWithCtxGetMemRangeResponse = _bindings.CreateLazyMarshaler(fileWithCtxGetMemRangeResponse{})
+
+func (msg *fileWithCtxGetMemRangeResponse) Marshaler() _bindings.Marshaler {
+ return _mfileWithCtxGetMemRangeResponse
+}
+
+type advisoryLockingWithCtxAdvisoryLockRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Request AdvisoryLockRequest `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _madvisoryLockingWithCtxAdvisoryLockRequest = _bindings.CreateLazyMarshaler(advisoryLockingWithCtxAdvisoryLockRequest{})
+
+func (msg *advisoryLockingWithCtxAdvisoryLockRequest) Marshaler() _bindings.Marshaler {
+ return _madvisoryLockingWithCtxAdvisoryLockRequest
+}
+
+type advisoryLockingWithCtxAdvisoryLockResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result AdvisoryLockingAdvisoryLockResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _madvisoryLockingWithCtxAdvisoryLockResponse = _bindings.CreateLazyMarshaler(advisoryLockingWithCtxAdvisoryLockResponse{})
+
+func (msg *advisoryLockingWithCtxAdvisoryLockResponse) Marshaler() _bindings.Marshaler {
+ return _madvisoryLockingWithCtxAdvisoryLockResponse
+}
+
+type memoryWithCtxReopenRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"24" fidl_alignment_v2:"8"`
+ Options ConnectionOptions `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ ObjectRequest _zx.Channel `fidl_offset_v1:"16" fidl_offset_v2:"16" fidl_handle_subtype:"4" fidl_handle_rights:"2147483648" fidl_bounds:"0"`
+}
+
+var _mmemoryWithCtxReopenRequest = _bindings.CreateLazyMarshaler(memoryWithCtxReopenRequest{})
+
+func (msg *memoryWithCtxReopenRequest) Marshaler() _bindings.Marshaler {
+ return _mmemoryWithCtxReopenRequest
+}
+
+type memoryWithCtxDescribeRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Query ConnectionInfoQuery `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mmemoryWithCtxDescribeRequest = _bindings.CreateLazyMarshaler(memoryWithCtxDescribeRequest{})
+
+func (msg *memoryWithCtxDescribeRequest) Marshaler() _bindings.Marshaler {
+ return _mmemoryWithCtxDescribeRequest
+}
+
+type memoryWithCtxDescribeResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Info ConnectionInfo `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mmemoryWithCtxDescribeResponse = _bindings.CreateLazyMarshaler(memoryWithCtxDescribeResponse{})
+
+func (msg *memoryWithCtxDescribeResponse) Marshaler() _bindings.Marshaler {
+ return _mmemoryWithCtxDescribeResponse
+}
+
+type memoryWithCtxOnConnectionInfoResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Info ConnectionInfo `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mmemoryWithCtxOnConnectionInfoResponse = _bindings.CreateLazyMarshaler(memoryWithCtxOnConnectionInfoResponse{})
+
+func (msg *memoryWithCtxOnConnectionInfoResponse) Marshaler() _bindings.Marshaler {
+ return _mmemoryWithCtxOnConnectionInfoResponse
+}
+
+type memoryWithCtxGetTokenResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result NodeGetTokenResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mmemoryWithCtxGetTokenResponse = _bindings.CreateLazyMarshaler(memoryWithCtxGetTokenResponse{})
+
+func (msg *memoryWithCtxGetTokenResponse) Marshaler() _bindings.Marshaler {
+ return _mmemoryWithCtxGetTokenResponse
+}
+
+type memoryWithCtxGetAttributesRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Query NodeAttributesQuery `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mmemoryWithCtxGetAttributesRequest = _bindings.CreateLazyMarshaler(memoryWithCtxGetAttributesRequest{})
+
+func (msg *memoryWithCtxGetAttributesRequest) Marshaler() _bindings.Marshaler {
+ return _mmemoryWithCtxGetAttributesRequest
+}
+
+type memoryWithCtxGetAttributesResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result NodeGetAttributesResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mmemoryWithCtxGetAttributesResponse = _bindings.CreateLazyMarshaler(memoryWithCtxGetAttributesResponse{})
+
+func (msg *memoryWithCtxGetAttributesResponse) Marshaler() _bindings.Marshaler {
+ return _mmemoryWithCtxGetAttributesResponse
+}
+
+type memoryWithCtxUpdateAttributesRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Attributes NodeAttributes `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mmemoryWithCtxUpdateAttributesRequest = _bindings.CreateLazyMarshaler(memoryWithCtxUpdateAttributesRequest{})
+
+func (msg *memoryWithCtxUpdateAttributesRequest) Marshaler() _bindings.Marshaler {
+ return _mmemoryWithCtxUpdateAttributesRequest
+}
+
+type memoryWithCtxUpdateAttributesResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result NodeUpdateAttributesResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mmemoryWithCtxUpdateAttributesResponse = _bindings.CreateLazyMarshaler(memoryWithCtxUpdateAttributesResponse{})
+
+func (msg *memoryWithCtxUpdateAttributesResponse) Marshaler() _bindings.Marshaler {
+ return _mmemoryWithCtxUpdateAttributesResponse
+}
+
+type memoryWithCtxSyncResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result NodeSyncResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mmemoryWithCtxSyncResponse = _bindings.CreateLazyMarshaler(memoryWithCtxSyncResponse{})
+
+func (msg *memoryWithCtxSyncResponse) Marshaler() _bindings.Marshaler {
+ return _mmemoryWithCtxSyncResponse
+}
+
+type nodeWithCtxReopenRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"24" fidl_alignment_v2:"8"`
+ Options ConnectionOptions `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ ObjectRequest _zx.Channel `fidl_offset_v1:"16" fidl_offset_v2:"16" fidl_handle_subtype:"4" fidl_handle_rights:"2147483648" fidl_bounds:"0"`
+}
+
+var _mnodeWithCtxReopenRequest = _bindings.CreateLazyMarshaler(nodeWithCtxReopenRequest{})
+
+func (msg *nodeWithCtxReopenRequest) Marshaler() _bindings.Marshaler {
+ return _mnodeWithCtxReopenRequest
+}
+
+type nodeWithCtxDescribeRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Query ConnectionInfoQuery `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mnodeWithCtxDescribeRequest = _bindings.CreateLazyMarshaler(nodeWithCtxDescribeRequest{})
+
+func (msg *nodeWithCtxDescribeRequest) Marshaler() _bindings.Marshaler {
+ return _mnodeWithCtxDescribeRequest
+}
+
+type nodeWithCtxDescribeResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Info ConnectionInfo `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mnodeWithCtxDescribeResponse = _bindings.CreateLazyMarshaler(nodeWithCtxDescribeResponse{})
+
+func (msg *nodeWithCtxDescribeResponse) Marshaler() _bindings.Marshaler {
+ return _mnodeWithCtxDescribeResponse
+}
+
+type nodeWithCtxOnConnectionInfoResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Info ConnectionInfo `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mnodeWithCtxOnConnectionInfoResponse = _bindings.CreateLazyMarshaler(nodeWithCtxOnConnectionInfoResponse{})
+
+func (msg *nodeWithCtxOnConnectionInfoResponse) Marshaler() _bindings.Marshaler {
+ return _mnodeWithCtxOnConnectionInfoResponse
+}
+
+type nodeWithCtxGetTokenResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result NodeGetTokenResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mnodeWithCtxGetTokenResponse = _bindings.CreateLazyMarshaler(nodeWithCtxGetTokenResponse{})
+
+func (msg *nodeWithCtxGetTokenResponse) Marshaler() _bindings.Marshaler {
+ return _mnodeWithCtxGetTokenResponse
+}
+
+type nodeWithCtxGetAttributesRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Query NodeAttributesQuery `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mnodeWithCtxGetAttributesRequest = _bindings.CreateLazyMarshaler(nodeWithCtxGetAttributesRequest{})
+
+func (msg *nodeWithCtxGetAttributesRequest) Marshaler() _bindings.Marshaler {
+ return _mnodeWithCtxGetAttributesRequest
+}
+
+type nodeWithCtxGetAttributesResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result NodeGetAttributesResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mnodeWithCtxGetAttributesResponse = _bindings.CreateLazyMarshaler(nodeWithCtxGetAttributesResponse{})
+
+func (msg *nodeWithCtxGetAttributesResponse) Marshaler() _bindings.Marshaler {
+ return _mnodeWithCtxGetAttributesResponse
+}
+
+type nodeWithCtxUpdateAttributesRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Attributes NodeAttributes `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mnodeWithCtxUpdateAttributesRequest = _bindings.CreateLazyMarshaler(nodeWithCtxUpdateAttributesRequest{})
+
+func (msg *nodeWithCtxUpdateAttributesRequest) Marshaler() _bindings.Marshaler {
+ return _mnodeWithCtxUpdateAttributesRequest
+}
+
+type nodeWithCtxUpdateAttributesResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result NodeUpdateAttributesResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mnodeWithCtxUpdateAttributesResponse = _bindings.CreateLazyMarshaler(nodeWithCtxUpdateAttributesResponse{})
+
+func (msg *nodeWithCtxUpdateAttributesResponse) Marshaler() _bindings.Marshaler {
+ return _mnodeWithCtxUpdateAttributesResponse
+}
+
+type nodeWithCtxSyncResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result NodeSyncResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mnodeWithCtxSyncResponse = _bindings.CreateLazyMarshaler(nodeWithCtxSyncResponse{})
+
+func (msg *nodeWithCtxSyncResponse) Marshaler() _bindings.Marshaler {
+ return _mnodeWithCtxSyncResponse
+}
+
+type pipeWithCtxReopenRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"24" fidl_alignment_v2:"8"`
+ Options ConnectionOptions `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ ObjectRequest _zx.Channel `fidl_offset_v1:"16" fidl_offset_v2:"16" fidl_handle_subtype:"4" fidl_handle_rights:"2147483648" fidl_bounds:"0"`
+}
+
+var _mpipeWithCtxReopenRequest = _bindings.CreateLazyMarshaler(pipeWithCtxReopenRequest{})
+
+func (msg *pipeWithCtxReopenRequest) Marshaler() _bindings.Marshaler {
+ return _mpipeWithCtxReopenRequest
+}
+
+type pipeWithCtxDescribeRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Query ConnectionInfoQuery `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mpipeWithCtxDescribeRequest = _bindings.CreateLazyMarshaler(pipeWithCtxDescribeRequest{})
+
+func (msg *pipeWithCtxDescribeRequest) Marshaler() _bindings.Marshaler {
+ return _mpipeWithCtxDescribeRequest
+}
+
+type pipeWithCtxDescribeResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Info ConnectionInfo `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mpipeWithCtxDescribeResponse = _bindings.CreateLazyMarshaler(pipeWithCtxDescribeResponse{})
+
+func (msg *pipeWithCtxDescribeResponse) Marshaler() _bindings.Marshaler {
+ return _mpipeWithCtxDescribeResponse
+}
+
+type pipeWithCtxOnConnectionInfoResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Info ConnectionInfo `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mpipeWithCtxOnConnectionInfoResponse = _bindings.CreateLazyMarshaler(pipeWithCtxOnConnectionInfoResponse{})
+
+func (msg *pipeWithCtxOnConnectionInfoResponse) Marshaler() _bindings.Marshaler {
+ return _mpipeWithCtxOnConnectionInfoResponse
+}
+
+type pipeWithCtxGetTokenResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result NodeGetTokenResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mpipeWithCtxGetTokenResponse = _bindings.CreateLazyMarshaler(pipeWithCtxGetTokenResponse{})
+
+func (msg *pipeWithCtxGetTokenResponse) Marshaler() _bindings.Marshaler {
+ return _mpipeWithCtxGetTokenResponse
+}
+
+type pipeWithCtxGetAttributesRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Query NodeAttributesQuery `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mpipeWithCtxGetAttributesRequest = _bindings.CreateLazyMarshaler(pipeWithCtxGetAttributesRequest{})
+
+func (msg *pipeWithCtxGetAttributesRequest) Marshaler() _bindings.Marshaler {
+ return _mpipeWithCtxGetAttributesRequest
+}
+
+type pipeWithCtxGetAttributesResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result NodeGetAttributesResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mpipeWithCtxGetAttributesResponse = _bindings.CreateLazyMarshaler(pipeWithCtxGetAttributesResponse{})
+
+func (msg *pipeWithCtxGetAttributesResponse) Marshaler() _bindings.Marshaler {
+ return _mpipeWithCtxGetAttributesResponse
+}
+
+type pipeWithCtxUpdateAttributesRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Attributes NodeAttributes `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mpipeWithCtxUpdateAttributesRequest = _bindings.CreateLazyMarshaler(pipeWithCtxUpdateAttributesRequest{})
+
+func (msg *pipeWithCtxUpdateAttributesRequest) Marshaler() _bindings.Marshaler {
+ return _mpipeWithCtxUpdateAttributesRequest
+}
+
+type pipeWithCtxUpdateAttributesResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result NodeUpdateAttributesResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mpipeWithCtxUpdateAttributesResponse = _bindings.CreateLazyMarshaler(pipeWithCtxUpdateAttributesResponse{})
+
+func (msg *pipeWithCtxUpdateAttributesResponse) Marshaler() _bindings.Marshaler {
+ return _mpipeWithCtxUpdateAttributesResponse
+}
+
+type pipeWithCtxSyncResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result NodeSyncResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mpipeWithCtxSyncResponse = _bindings.CreateLazyMarshaler(pipeWithCtxSyncResponse{})
+
+func (msg *pipeWithCtxSyncResponse) Marshaler() _bindings.Marshaler {
+ return _mpipeWithCtxSyncResponse
+}
+
+type I_representationTag uint64
+
+const (
+ Representation_unknownData = 0 // 0x00000000
+ RepresentationConnector = 1 // 0x00000001
+ RepresentationDirectory = 2 // 0x00000002
+ RepresentationFile = 3 // 0x00000003
+ RepresentationMemory = 4 // 0x00000004
+ RepresentationPosixSocket = 5 // 0x00000005
+ RepresentationPipe = 6 // 0x00000006
+ RepresentationDebuglog = 7 // 0x00000007
+ RepresentationDevice = 8 // 0x00000008
+ RepresentationTty = 9 // 0x00000009
+)
+
+// Describes how the connection should be handled, and provides auxiliary
+// handles and information for the connection where applicable.
+// Refer to [`Node.Describe`] and [`Node.OnConnectionInfo`].
+//
+// If handles are returned which offer alternative ways of access to the node,
+// the rights on the handles should correspond to the rights on the connection.
+//
+// If the client specified more than one protocol in `protocols` during
+// [`Directory.Open`] or [`Node.Reopen`], the [`Representation`] xunion carries
+// additionally the result of the connection-time negotiation via its tag.
+//
+// The elements have one-to-one correspondence with the members of
+// [`NodeProtocols`].
+type Representation struct {
+ I_representationTag `fidl:"x" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"true"`
+ I_unknownData interface{}
+ // See [`NodeProtocols.CONNECTOR`].
+ Connector ConnectorInfo `fidl_ordinal:"1"`
+ // See [`NodeProtocols.DIRECTORY`].
+ Directory DirectoryInfo `fidl_ordinal:"2"`
+ // See [`NodeProtocols.FILE`].
+ File FileInfo `fidl_ordinal:"3"`
+ // See [`NodeProtocols.MEMORY`].
+ Memory MemoryInfo `fidl_ordinal:"4"`
+ // See [`NodeProtocols.POSIX_SOCKET`].
+ PosixSocket PosixSocketInfo `fidl_ordinal:"5"`
+ // See [`NodeProtocols.PIPE`].
+ Pipe PipeInfo `fidl_ordinal:"6"`
+ // See [`NodeProtocols.DEBUGLOG`].
+ Debuglog DebuglogInfo `fidl_ordinal:"7"`
+ Device DeviceInfo `fidl_ordinal:"8"`
+ Tty TtyInfo `fidl_ordinal:"9"`
+}
+
+func (_m *Representation) reset() {
+ switch _m.I_representationTag {
+ case 1:
+ var _zeroed ConnectorInfo
+ _m.Connector = _zeroed
+ case 2:
+ var _zeroed DirectoryInfo
+ _m.Directory = _zeroed
+ case 3:
+ var _zeroed FileInfo
+ _m.File = _zeroed
+ case 4:
+ var _zeroed MemoryInfo
+ _m.Memory = _zeroed
+ case 5:
+ var _zeroed PosixSocketInfo
+ _m.PosixSocket = _zeroed
+ case 6:
+ var _zeroed PipeInfo
+ _m.Pipe = _zeroed
+ case 7:
+ var _zeroed DebuglogInfo
+ _m.Debuglog = _zeroed
+ case 8:
+ var _zeroed DeviceInfo
+ _m.Device = _zeroed
+ case 9:
+ var _zeroed TtyInfo
+ _m.Tty = _zeroed
+ default:
+ var _zeroed interface{}
+ _m.I_unknownData = _zeroed
+ }
+}
+
+func (_m *Representation) Which() I_representationTag {
+ switch _m.I_representationTag {
+ case 1:
+ return RepresentationConnector
+ case 2:
+ return RepresentationDirectory
+ case 3:
+ return RepresentationFile
+ case 4:
+ return RepresentationMemory
+ case 5:
+ return RepresentationPosixSocket
+ case 6:
+ return RepresentationPipe
+ case 7:
+ return RepresentationDebuglog
+ case 8:
+ return RepresentationDevice
+ case 9:
+ return RepresentationTty
+ default:
+ return Representation_unknownData
+ }
+}
+
+func (_m *Representation) Ordinal() uint64 {
+ return uint64(_m.I_representationTag)
+}
+
+func (_m *Representation) SetConnector(connector ConnectorInfo) {
+ _m.reset()
+ _m.I_representationTag = RepresentationConnector
+ _m.Connector = connector
+}
+
+func RepresentationWithConnector(connector ConnectorInfo) Representation {
+ var _u Representation
+ _u.SetConnector(connector)
+ return _u
+}
+
+func (_m *Representation) SetDirectory(directory DirectoryInfo) {
+ _m.reset()
+ _m.I_representationTag = RepresentationDirectory
+ _m.Directory = directory
+}
+
+func RepresentationWithDirectory(directory DirectoryInfo) Representation {
+ var _u Representation
+ _u.SetDirectory(directory)
+ return _u
+}
+
+func (_m *Representation) SetFile(file FileInfo) {
+ _m.reset()
+ _m.I_representationTag = RepresentationFile
+ _m.File = file
+}
+
+func RepresentationWithFile(file FileInfo) Representation {
+ var _u Representation
+ _u.SetFile(file)
+ return _u
+}
+
+func (_m *Representation) SetMemory(memory MemoryInfo) {
+ _m.reset()
+ _m.I_representationTag = RepresentationMemory
+ _m.Memory = memory
+}
+
+func RepresentationWithMemory(memory MemoryInfo) Representation {
+ var _u Representation
+ _u.SetMemory(memory)
+ return _u
+}
+
+func (_m *Representation) SetPosixSocket(posixSocket PosixSocketInfo) {
+ _m.reset()
+ _m.I_representationTag = RepresentationPosixSocket
+ _m.PosixSocket = posixSocket
+}
+
+func RepresentationWithPosixSocket(posixSocket PosixSocketInfo) Representation {
+ var _u Representation
+ _u.SetPosixSocket(posixSocket)
+ return _u
+}
+
+func (_m *Representation) SetPipe(pipe PipeInfo) {
+ _m.reset()
+ _m.I_representationTag = RepresentationPipe
+ _m.Pipe = pipe
+}
+
+func RepresentationWithPipe(pipe PipeInfo) Representation {
+ var _u Representation
+ _u.SetPipe(pipe)
+ return _u
+}
+
+func (_m *Representation) SetDebuglog(debuglog DebuglogInfo) {
+ _m.reset()
+ _m.I_representationTag = RepresentationDebuglog
+ _m.Debuglog = debuglog
+}
+
+func RepresentationWithDebuglog(debuglog DebuglogInfo) Representation {
+ var _u Representation
+ _u.SetDebuglog(debuglog)
+ return _u
+}
+
+func (_m *Representation) SetDevice(device DeviceInfo) {
+ _m.reset()
+ _m.I_representationTag = RepresentationDevice
+ _m.Device = device
+}
+
+func RepresentationWithDevice(device DeviceInfo) Representation {
+ var _u Representation
+ _u.SetDevice(device)
+ return _u
+}
+
+func (_m *Representation) SetTty(tty TtyInfo) {
+ _m.reset()
+ _m.I_representationTag = RepresentationTty
+ _m.Tty = tty
+}
+
+func RepresentationWithTty(tty TtyInfo) Representation {
+ var _u Representation
+ _u.SetTty(tty)
+ return _u
+}
+func (_m *Representation) GetUnknownData() _bindings.UnknownData {
+ return _m.I_unknownData.(_bindings.UnknownData)
+}
+
+type I_directoryUnlinkResultTag uint64
+
+const (
+ DirectoryUnlinkResultResponse = 1 // 0x00000001
+ DirectoryUnlinkResultErr = 2 // 0x00000002
+)
+
+type DirectoryUnlinkResult struct {
+ I_directoryUnlinkResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response DirectoryUnlinkResponse `fidl_ordinal:"1"`
+ Err int32 `fidl_ordinal:"2"`
+}
+
+func (_m *DirectoryUnlinkResult) reset() {
+ switch _m.I_directoryUnlinkResultTag {
+ case 1:
+ var _zeroed DirectoryUnlinkResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed int32
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *DirectoryUnlinkResult) Which() I_directoryUnlinkResultTag {
+ return _m.I_directoryUnlinkResultTag
+}
+
+func (_m *DirectoryUnlinkResult) Ordinal() uint64 {
+ return uint64(_m.I_directoryUnlinkResultTag)
+}
+
+func (_m *DirectoryUnlinkResult) SetResponse(response DirectoryUnlinkResponse) {
+ _m.reset()
+ _m.I_directoryUnlinkResultTag = DirectoryUnlinkResultResponse
+ _m.Response = response
+}
+
+func DirectoryUnlinkResultWithResponse(response DirectoryUnlinkResponse) DirectoryUnlinkResult {
+ var _u DirectoryUnlinkResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *DirectoryUnlinkResult) SetErr(err int32) {
+ _m.reset()
+ _m.I_directoryUnlinkResultTag = DirectoryUnlinkResultErr
+ _m.Err = err
+}
+
+func DirectoryUnlinkResultWithErr(err int32) DirectoryUnlinkResult {
+ var _u DirectoryUnlinkResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_directoryUnlink2ResultTag uint64
+
+const (
+ DirectoryUnlink2ResultResponse = 1 // 0x00000001
+ DirectoryUnlink2ResultErr = 2 // 0x00000002
+)
+
+type DirectoryUnlink2Result struct {
+ I_directoryUnlink2ResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response DirectoryUnlink2Response `fidl_ordinal:"1"`
+ Err int32 `fidl_ordinal:"2"`
+}
+
+func (_m *DirectoryUnlink2Result) reset() {
+ switch _m.I_directoryUnlink2ResultTag {
+ case 1:
+ var _zeroed DirectoryUnlink2Response
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed int32
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *DirectoryUnlink2Result) Which() I_directoryUnlink2ResultTag {
+ return _m.I_directoryUnlink2ResultTag
+}
+
+func (_m *DirectoryUnlink2Result) Ordinal() uint64 {
+ return uint64(_m.I_directoryUnlink2ResultTag)
+}
+
+func (_m *DirectoryUnlink2Result) SetResponse(response DirectoryUnlink2Response) {
+ _m.reset()
+ _m.I_directoryUnlink2ResultTag = DirectoryUnlink2ResultResponse
+ _m.Response = response
+}
+
+func DirectoryUnlink2ResultWithResponse(response DirectoryUnlink2Response) DirectoryUnlink2Result {
+ var _u DirectoryUnlink2Result
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *DirectoryUnlink2Result) SetErr(err int32) {
+ _m.reset()
+ _m.I_directoryUnlink2ResultTag = DirectoryUnlink2ResultErr
+ _m.Err = err
+}
+
+func DirectoryUnlink2ResultWithErr(err int32) DirectoryUnlink2Result {
+ var _u DirectoryUnlink2Result
+ _u.SetErr(err)
+ return _u
+}
+
+type I_directoryRenameResultTag uint64
+
+const (
+ DirectoryRenameResultResponse = 1 // 0x00000001
+ DirectoryRenameResultErr = 2 // 0x00000002
+)
+
+type DirectoryRenameResult struct {
+ I_directoryRenameResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response DirectoryRenameResponse `fidl_ordinal:"1"`
+ Err int32 `fidl_ordinal:"2"`
+}
+
+func (_m *DirectoryRenameResult) reset() {
+ switch _m.I_directoryRenameResultTag {
+ case 1:
+ var _zeroed DirectoryRenameResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed int32
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *DirectoryRenameResult) Which() I_directoryRenameResultTag {
+ return _m.I_directoryRenameResultTag
+}
+
+func (_m *DirectoryRenameResult) Ordinal() uint64 {
+ return uint64(_m.I_directoryRenameResultTag)
+}
+
+func (_m *DirectoryRenameResult) SetResponse(response DirectoryRenameResponse) {
+ _m.reset()
+ _m.I_directoryRenameResultTag = DirectoryRenameResultResponse
+ _m.Response = response
+}
+
+func DirectoryRenameResultWithResponse(response DirectoryRenameResponse) DirectoryRenameResult {
+ var _u DirectoryRenameResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *DirectoryRenameResult) SetErr(err int32) {
+ _m.reset()
+ _m.I_directoryRenameResultTag = DirectoryRenameResultErr
+ _m.Err = err
+}
+
+func DirectoryRenameResultWithErr(err int32) DirectoryRenameResult {
+ var _u DirectoryRenameResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_directoryLinkResultTag uint64
+
+const (
+ DirectoryLinkResultResponse = 1 // 0x00000001
+ DirectoryLinkResultErr = 2 // 0x00000002
+)
+
+type DirectoryLinkResult struct {
+ I_directoryLinkResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response DirectoryLinkResponse `fidl_ordinal:"1"`
+ Err int32 `fidl_ordinal:"2"`
+}
+
+func (_m *DirectoryLinkResult) reset() {
+ switch _m.I_directoryLinkResultTag {
+ case 1:
+ var _zeroed DirectoryLinkResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed int32
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *DirectoryLinkResult) Which() I_directoryLinkResultTag {
+ return _m.I_directoryLinkResultTag
+}
+
+func (_m *DirectoryLinkResult) Ordinal() uint64 {
+ return uint64(_m.I_directoryLinkResultTag)
+}
+
+func (_m *DirectoryLinkResult) SetResponse(response DirectoryLinkResponse) {
+ _m.reset()
+ _m.I_directoryLinkResultTag = DirectoryLinkResultResponse
+ _m.Response = response
+}
+
+func DirectoryLinkResultWithResponse(response DirectoryLinkResponse) DirectoryLinkResult {
+ var _u DirectoryLinkResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *DirectoryLinkResult) SetErr(err int32) {
+ _m.reset()
+ _m.I_directoryLinkResultTag = DirectoryLinkResultErr
+ _m.Err = err
+}
+
+func DirectoryLinkResultWithErr(err int32) DirectoryLinkResult {
+ var _u DirectoryLinkResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_directoryIteratorGetNextResultTag uint64
+
+const (
+ DirectoryIteratorGetNextResultResponse = 1 // 0x00000001
+ DirectoryIteratorGetNextResultErr = 2 // 0x00000002
+)
+
+type DirectoryIteratorGetNextResult struct {
+ I_directoryIteratorGetNextResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response DirectoryIteratorGetNextResponse `fidl_ordinal:"1"`
+ Err int32 `fidl_ordinal:"2"`
+}
+
+func (_m *DirectoryIteratorGetNextResult) reset() {
+ switch _m.I_directoryIteratorGetNextResultTag {
+ case 1:
+ var _zeroed DirectoryIteratorGetNextResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed int32
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *DirectoryIteratorGetNextResult) Which() I_directoryIteratorGetNextResultTag {
+ return _m.I_directoryIteratorGetNextResultTag
+}
+
+func (_m *DirectoryIteratorGetNextResult) Ordinal() uint64 {
+ return uint64(_m.I_directoryIteratorGetNextResultTag)
+}
+
+func (_m *DirectoryIteratorGetNextResult) SetResponse(response DirectoryIteratorGetNextResponse) {
+ _m.reset()
+ _m.I_directoryIteratorGetNextResultTag = DirectoryIteratorGetNextResultResponse
+ _m.Response = response
+}
+
+func DirectoryIteratorGetNextResultWithResponse(response DirectoryIteratorGetNextResponse) DirectoryIteratorGetNextResult {
+ var _u DirectoryIteratorGetNextResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *DirectoryIteratorGetNextResult) SetErr(err int32) {
+ _m.reset()
+ _m.I_directoryIteratorGetNextResultTag = DirectoryIteratorGetNextResultErr
+ _m.Err = err
+}
+
+func DirectoryIteratorGetNextResultWithErr(err int32) DirectoryIteratorGetNextResult {
+ var _u DirectoryIteratorGetNextResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_directoryWatchedEventTag uint64
+
+const (
+ DirectoryWatchedEvent_unknownData = 0 // 0x00000000
+ DirectoryWatchedEventExisting = 1 // 0x00000001
+ DirectoryWatchedEventIdle = 2 // 0x00000002
+ DirectoryWatchedEventAdded = 3 // 0x00000003
+ DirectoryWatchedEventRemoved = 4 // 0x00000004
+)
+
+// Events returned from [`DirectoryWatcher.GetNext`].
+type DirectoryWatchedEvent struct {
+ I_directoryWatchedEventTag `fidl:"x" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ I_unknownData interface{}
+ // Indicates a node already existed in the directory when watching started.
+ Existing DirectoryEntry `fidl_ordinal:"1"`
+ // Indicates that no more `existing` events will be sent.
+ Idle IdleEvent `fidl_ordinal:"2"`
+ // Indicates a node has been created (either new or moved) into a
+ // directory.
+ Added DirectoryEntry `fidl_ordinal:"3"`
+ // Indicates a node has been removed (either deleted or moved) from the
+ // directory.
+ Removed string `fidl_bounds:"255" fidl_ordinal:"4"`
+}
+
+func (_m *DirectoryWatchedEvent) reset() {
+ switch _m.I_directoryWatchedEventTag {
+ case 1:
+ var _zeroed DirectoryEntry
+ _m.Existing = _zeroed
+ case 2:
+ var _zeroed IdleEvent
+ _m.Idle = _zeroed
+ case 3:
+ var _zeroed DirectoryEntry
+ _m.Added = _zeroed
+ case 4:
+ var _zeroed string
+ _m.Removed = _zeroed
+ default:
+ var _zeroed interface{}
+ _m.I_unknownData = _zeroed
+ }
+}
+
+func (_m *DirectoryWatchedEvent) Which() I_directoryWatchedEventTag {
+ switch _m.I_directoryWatchedEventTag {
+ case 1:
+ return DirectoryWatchedEventExisting
+ case 2:
+ return DirectoryWatchedEventIdle
+ case 3:
+ return DirectoryWatchedEventAdded
+ case 4:
+ return DirectoryWatchedEventRemoved
+ default:
+ return DirectoryWatchedEvent_unknownData
+ }
+}
+
+func (_m *DirectoryWatchedEvent) Ordinal() uint64 {
+ return uint64(_m.I_directoryWatchedEventTag)
+}
+
+func (_m *DirectoryWatchedEvent) SetExisting(existing DirectoryEntry) {
+ _m.reset()
+ _m.I_directoryWatchedEventTag = DirectoryWatchedEventExisting
+ _m.Existing = existing
+}
+
+func DirectoryWatchedEventWithExisting(existing DirectoryEntry) DirectoryWatchedEvent {
+ var _u DirectoryWatchedEvent
+ _u.SetExisting(existing)
+ return _u
+}
+
+func (_m *DirectoryWatchedEvent) SetIdle(idle IdleEvent) {
+ _m.reset()
+ _m.I_directoryWatchedEventTag = DirectoryWatchedEventIdle
+ _m.Idle = idle
+}
+
+func DirectoryWatchedEventWithIdle(idle IdleEvent) DirectoryWatchedEvent {
+ var _u DirectoryWatchedEvent
+ _u.SetIdle(idle)
+ return _u
+}
+
+func (_m *DirectoryWatchedEvent) SetAdded(added DirectoryEntry) {
+ _m.reset()
+ _m.I_directoryWatchedEventTag = DirectoryWatchedEventAdded
+ _m.Added = added
+}
+
+func DirectoryWatchedEventWithAdded(added DirectoryEntry) DirectoryWatchedEvent {
+ var _u DirectoryWatchedEvent
+ _u.SetAdded(added)
+ return _u
+}
+
+func (_m *DirectoryWatchedEvent) SetRemoved(removed string) {
+ _m.reset()
+ _m.I_directoryWatchedEventTag = DirectoryWatchedEventRemoved
+ _m.Removed = removed
+}
+
+func DirectoryWatchedEventWithRemoved(removed string) DirectoryWatchedEvent {
+ var _u DirectoryWatchedEvent
+ _u.SetRemoved(removed)
+ return _u
+}
+func (_m *DirectoryWatchedEvent) GetUnknownData() _bindings.UnknownData {
+ return _m.I_unknownData.(_bindings.UnknownData)
+}
+
+type I_fileSeekResultTag uint64
+
+const (
+ FileSeekResultResponse = 1 // 0x00000001
+ FileSeekResultErr = 2 // 0x00000002
+)
+
+type FileSeekResult struct {
+ I_fileSeekResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response FileSeekResponse `fidl_ordinal:"1"`
+ Err int32 `fidl_ordinal:"2"`
+}
+
+func (_m *FileSeekResult) reset() {
+ switch _m.I_fileSeekResultTag {
+ case 1:
+ var _zeroed FileSeekResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed int32
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *FileSeekResult) Which() I_fileSeekResultTag {
+ return _m.I_fileSeekResultTag
+}
+
+func (_m *FileSeekResult) Ordinal() uint64 {
+ return uint64(_m.I_fileSeekResultTag)
+}
+
+func (_m *FileSeekResult) SetResponse(response FileSeekResponse) {
+ _m.reset()
+ _m.I_fileSeekResultTag = FileSeekResultResponse
+ _m.Response = response
+}
+
+func FileSeekResultWithResponse(response FileSeekResponse) FileSeekResult {
+ var _u FileSeekResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *FileSeekResult) SetErr(err int32) {
+ _m.reset()
+ _m.I_fileSeekResultTag = FileSeekResultErr
+ _m.Err = err
+}
+
+func FileSeekResultWithErr(err int32) FileSeekResult {
+ var _u FileSeekResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_fileReadResultTag uint64
+
+const (
+ FileReadResultResponse = 1 // 0x00000001
+ FileReadResultErr = 2 // 0x00000002
+)
+
+type FileReadResult struct {
+ I_fileReadResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response FileReadResponse `fidl_ordinal:"1"`
+ Err int32 `fidl_ordinal:"2"`
+}
+
+func (_m *FileReadResult) reset() {
+ switch _m.I_fileReadResultTag {
+ case 1:
+ var _zeroed FileReadResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed int32
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *FileReadResult) Which() I_fileReadResultTag {
+ return _m.I_fileReadResultTag
+}
+
+func (_m *FileReadResult) Ordinal() uint64 {
+ return uint64(_m.I_fileReadResultTag)
+}
+
+func (_m *FileReadResult) SetResponse(response FileReadResponse) {
+ _m.reset()
+ _m.I_fileReadResultTag = FileReadResultResponse
+ _m.Response = response
+}
+
+func FileReadResultWithResponse(response FileReadResponse) FileReadResult {
+ var _u FileReadResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *FileReadResult) SetErr(err int32) {
+ _m.reset()
+ _m.I_fileReadResultTag = FileReadResultErr
+ _m.Err = err
+}
+
+func FileReadResultWithErr(err int32) FileReadResult {
+ var _u FileReadResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_fileWriteResultTag uint64
+
+const (
+ FileWriteResultResponse = 1 // 0x00000001
+ FileWriteResultErr = 2 // 0x00000002
+)
+
+type FileWriteResult struct {
+ I_fileWriteResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response FileWriteResponse `fidl_ordinal:"1"`
+ Err int32 `fidl_ordinal:"2"`
+}
+
+func (_m *FileWriteResult) reset() {
+ switch _m.I_fileWriteResultTag {
+ case 1:
+ var _zeroed FileWriteResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed int32
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *FileWriteResult) Which() I_fileWriteResultTag {
+ return _m.I_fileWriteResultTag
+}
+
+func (_m *FileWriteResult) Ordinal() uint64 {
+ return uint64(_m.I_fileWriteResultTag)
+}
+
+func (_m *FileWriteResult) SetResponse(response FileWriteResponse) {
+ _m.reset()
+ _m.I_fileWriteResultTag = FileWriteResultResponse
+ _m.Response = response
+}
+
+func FileWriteResultWithResponse(response FileWriteResponse) FileWriteResult {
+ var _u FileWriteResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *FileWriteResult) SetErr(err int32) {
+ _m.reset()
+ _m.I_fileWriteResultTag = FileWriteResultErr
+ _m.Err = err
+}
+
+func FileWriteResultWithErr(err int32) FileWriteResult {
+ var _u FileWriteResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_fileReadAtResultTag uint64
+
+const (
+ FileReadAtResultResponse = 1 // 0x00000001
+ FileReadAtResultErr = 2 // 0x00000002
+)
+
+type FileReadAtResult struct {
+ I_fileReadAtResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response FileReadAtResponse `fidl_ordinal:"1"`
+ Err int32 `fidl_ordinal:"2"`
+}
+
+func (_m *FileReadAtResult) reset() {
+ switch _m.I_fileReadAtResultTag {
+ case 1:
+ var _zeroed FileReadAtResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed int32
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *FileReadAtResult) Which() I_fileReadAtResultTag {
+ return _m.I_fileReadAtResultTag
+}
+
+func (_m *FileReadAtResult) Ordinal() uint64 {
+ return uint64(_m.I_fileReadAtResultTag)
+}
+
+func (_m *FileReadAtResult) SetResponse(response FileReadAtResponse) {
+ _m.reset()
+ _m.I_fileReadAtResultTag = FileReadAtResultResponse
+ _m.Response = response
+}
+
+func FileReadAtResultWithResponse(response FileReadAtResponse) FileReadAtResult {
+ var _u FileReadAtResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *FileReadAtResult) SetErr(err int32) {
+ _m.reset()
+ _m.I_fileReadAtResultTag = FileReadAtResultErr
+ _m.Err = err
+}
+
+func FileReadAtResultWithErr(err int32) FileReadAtResult {
+ var _u FileReadAtResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_fileWriteAtResultTag uint64
+
+const (
+ FileWriteAtResultResponse = 1 // 0x00000001
+ FileWriteAtResultErr = 2 // 0x00000002
+)
+
+type FileWriteAtResult struct {
+ I_fileWriteAtResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response FileWriteAtResponse `fidl_ordinal:"1"`
+ Err int32 `fidl_ordinal:"2"`
+}
+
+func (_m *FileWriteAtResult) reset() {
+ switch _m.I_fileWriteAtResultTag {
+ case 1:
+ var _zeroed FileWriteAtResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed int32
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *FileWriteAtResult) Which() I_fileWriteAtResultTag {
+ return _m.I_fileWriteAtResultTag
+}
+
+func (_m *FileWriteAtResult) Ordinal() uint64 {
+ return uint64(_m.I_fileWriteAtResultTag)
+}
+
+func (_m *FileWriteAtResult) SetResponse(response FileWriteAtResponse) {
+ _m.reset()
+ _m.I_fileWriteAtResultTag = FileWriteAtResultResponse
+ _m.Response = response
+}
+
+func FileWriteAtResultWithResponse(response FileWriteAtResponse) FileWriteAtResult {
+ var _u FileWriteAtResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *FileWriteAtResult) SetErr(err int32) {
+ _m.reset()
+ _m.I_fileWriteAtResultTag = FileWriteAtResultErr
+ _m.Err = err
+}
+
+func FileWriteAtResultWithErr(err int32) FileWriteAtResult {
+ var _u FileWriteAtResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_fileResizeResultTag uint64
+
+const (
+ FileResizeResultResponse = 1 // 0x00000001
+ FileResizeResultErr = 2 // 0x00000002
+)
+
+type FileResizeResult struct {
+ I_fileResizeResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response FileResizeResponse `fidl_ordinal:"1"`
+ Err int32 `fidl_ordinal:"2"`
+}
+
+func (_m *FileResizeResult) reset() {
+ switch _m.I_fileResizeResultTag {
+ case 1:
+ var _zeroed FileResizeResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed int32
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *FileResizeResult) Which() I_fileResizeResultTag {
+ return _m.I_fileResizeResultTag
+}
+
+func (_m *FileResizeResult) Ordinal() uint64 {
+ return uint64(_m.I_fileResizeResultTag)
+}
+
+func (_m *FileResizeResult) SetResponse(response FileResizeResponse) {
+ _m.reset()
+ _m.I_fileResizeResultTag = FileResizeResultResponse
+ _m.Response = response
+}
+
+func FileResizeResultWithResponse(response FileResizeResponse) FileResizeResult {
+ var _u FileResizeResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *FileResizeResult) SetErr(err int32) {
+ _m.reset()
+ _m.I_fileResizeResultTag = FileResizeResultErr
+ _m.Err = err
+}
+
+func FileResizeResultWithErr(err int32) FileResizeResult {
+ var _u FileResizeResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_fileGetMemRangeResultTag uint64
+
+const (
+ FileGetMemRangeResultResponse = 1 // 0x00000001
+ FileGetMemRangeResultErr = 2 // 0x00000002
+)
+
+type FileGetMemRangeResult struct {
+ I_fileGetMemRangeResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"true"`
+ Response FileGetMemRangeResponse `fidl_ordinal:"1"`
+ Err int32 `fidl_ordinal:"2"`
+}
+
+func (_m *FileGetMemRangeResult) reset() {
+ switch _m.I_fileGetMemRangeResultTag {
+ case 1:
+ var _zeroed FileGetMemRangeResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed int32
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *FileGetMemRangeResult) Which() I_fileGetMemRangeResultTag {
+ return _m.I_fileGetMemRangeResultTag
+}
+
+func (_m *FileGetMemRangeResult) Ordinal() uint64 {
+ return uint64(_m.I_fileGetMemRangeResultTag)
+}
+
+func (_m *FileGetMemRangeResult) SetResponse(response FileGetMemRangeResponse) {
+ _m.reset()
+ _m.I_fileGetMemRangeResultTag = FileGetMemRangeResultResponse
+ _m.Response = response
+}
+
+func FileGetMemRangeResultWithResponse(response FileGetMemRangeResponse) FileGetMemRangeResult {
+ var _u FileGetMemRangeResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *FileGetMemRangeResult) SetErr(err int32) {
+ _m.reset()
+ _m.I_fileGetMemRangeResultTag = FileGetMemRangeResultErr
+ _m.Err = err
+}
+
+func FileGetMemRangeResultWithErr(err int32) FileGetMemRangeResult {
+ var _u FileGetMemRangeResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_advisoryLockingAdvisoryLockResultTag uint64
+
+const (
+ AdvisoryLockingAdvisoryLockResultResponse = 1 // 0x00000001
+ AdvisoryLockingAdvisoryLockResultErr = 2 // 0x00000002
+)
+
+type AdvisoryLockingAdvisoryLockResult struct {
+ I_advisoryLockingAdvisoryLockResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response AdvisoryLockingAdvisoryLockResponse `fidl_ordinal:"1"`
+ Err int32 `fidl_ordinal:"2"`
+}
+
+func (_m *AdvisoryLockingAdvisoryLockResult) reset() {
+ switch _m.I_advisoryLockingAdvisoryLockResultTag {
+ case 1:
+ var _zeroed AdvisoryLockingAdvisoryLockResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed int32
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *AdvisoryLockingAdvisoryLockResult) Which() I_advisoryLockingAdvisoryLockResultTag {
+ return _m.I_advisoryLockingAdvisoryLockResultTag
+}
+
+func (_m *AdvisoryLockingAdvisoryLockResult) Ordinal() uint64 {
+ return uint64(_m.I_advisoryLockingAdvisoryLockResultTag)
+}
+
+func (_m *AdvisoryLockingAdvisoryLockResult) SetResponse(response AdvisoryLockingAdvisoryLockResponse) {
+ _m.reset()
+ _m.I_advisoryLockingAdvisoryLockResultTag = AdvisoryLockingAdvisoryLockResultResponse
+ _m.Response = response
+}
+
+func AdvisoryLockingAdvisoryLockResultWithResponse(response AdvisoryLockingAdvisoryLockResponse) AdvisoryLockingAdvisoryLockResult {
+ var _u AdvisoryLockingAdvisoryLockResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *AdvisoryLockingAdvisoryLockResult) SetErr(err int32) {
+ _m.reset()
+ _m.I_advisoryLockingAdvisoryLockResultTag = AdvisoryLockingAdvisoryLockResultErr
+ _m.Err = err
+}
+
+func AdvisoryLockingAdvisoryLockResultWithErr(err int32) AdvisoryLockingAdvisoryLockResult {
+ var _u AdvisoryLockingAdvisoryLockResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_nodeGetTokenResultTag uint64
+
+const (
+ NodeGetTokenResultResponse = 1 // 0x00000001
+ NodeGetTokenResultErr = 2 // 0x00000002
+)
+
+type NodeGetTokenResult struct {
+ I_nodeGetTokenResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"true"`
+ Response NodeGetTokenResponse `fidl_ordinal:"1"`
+ Err int32 `fidl_ordinal:"2"`
+}
+
+func (_m *NodeGetTokenResult) reset() {
+ switch _m.I_nodeGetTokenResultTag {
+ case 1:
+ var _zeroed NodeGetTokenResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed int32
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *NodeGetTokenResult) Which() I_nodeGetTokenResultTag {
+ return _m.I_nodeGetTokenResultTag
+}
+
+func (_m *NodeGetTokenResult) Ordinal() uint64 {
+ return uint64(_m.I_nodeGetTokenResultTag)
+}
+
+func (_m *NodeGetTokenResult) SetResponse(response NodeGetTokenResponse) {
+ _m.reset()
+ _m.I_nodeGetTokenResultTag = NodeGetTokenResultResponse
+ _m.Response = response
+}
+
+func NodeGetTokenResultWithResponse(response NodeGetTokenResponse) NodeGetTokenResult {
+ var _u NodeGetTokenResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *NodeGetTokenResult) SetErr(err int32) {
+ _m.reset()
+ _m.I_nodeGetTokenResultTag = NodeGetTokenResultErr
+ _m.Err = err
+}
+
+func NodeGetTokenResultWithErr(err int32) NodeGetTokenResult {
+ var _u NodeGetTokenResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_nodeGetAttributesResultTag uint64
+
+const (
+ NodeGetAttributesResultResponse = 1 // 0x00000001
+ NodeGetAttributesResultErr = 2 // 0x00000002
+)
+
+type NodeGetAttributesResult struct {
+ I_nodeGetAttributesResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response NodeGetAttributesResponse `fidl_ordinal:"1"`
+ Err int32 `fidl_ordinal:"2"`
+}
+
+func (_m *NodeGetAttributesResult) reset() {
+ switch _m.I_nodeGetAttributesResultTag {
+ case 1:
+ var _zeroed NodeGetAttributesResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed int32
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *NodeGetAttributesResult) Which() I_nodeGetAttributesResultTag {
+ return _m.I_nodeGetAttributesResultTag
+}
+
+func (_m *NodeGetAttributesResult) Ordinal() uint64 {
+ return uint64(_m.I_nodeGetAttributesResultTag)
+}
+
+func (_m *NodeGetAttributesResult) SetResponse(response NodeGetAttributesResponse) {
+ _m.reset()
+ _m.I_nodeGetAttributesResultTag = NodeGetAttributesResultResponse
+ _m.Response = response
+}
+
+func NodeGetAttributesResultWithResponse(response NodeGetAttributesResponse) NodeGetAttributesResult {
+ var _u NodeGetAttributesResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *NodeGetAttributesResult) SetErr(err int32) {
+ _m.reset()
+ _m.I_nodeGetAttributesResultTag = NodeGetAttributesResultErr
+ _m.Err = err
+}
+
+func NodeGetAttributesResultWithErr(err int32) NodeGetAttributesResult {
+ var _u NodeGetAttributesResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_nodeUpdateAttributesResultTag uint64
+
+const (
+ NodeUpdateAttributesResultResponse = 1 // 0x00000001
+ NodeUpdateAttributesResultErr = 2 // 0x00000002
+)
+
+type NodeUpdateAttributesResult struct {
+ I_nodeUpdateAttributesResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response NodeUpdateAttributesResponse `fidl_ordinal:"1"`
+ Err int32 `fidl_ordinal:"2"`
+}
+
+func (_m *NodeUpdateAttributesResult) reset() {
+ switch _m.I_nodeUpdateAttributesResultTag {
+ case 1:
+ var _zeroed NodeUpdateAttributesResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed int32
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *NodeUpdateAttributesResult) Which() I_nodeUpdateAttributesResultTag {
+ return _m.I_nodeUpdateAttributesResultTag
+}
+
+func (_m *NodeUpdateAttributesResult) Ordinal() uint64 {
+ return uint64(_m.I_nodeUpdateAttributesResultTag)
+}
+
+func (_m *NodeUpdateAttributesResult) SetResponse(response NodeUpdateAttributesResponse) {
+ _m.reset()
+ _m.I_nodeUpdateAttributesResultTag = NodeUpdateAttributesResultResponse
+ _m.Response = response
+}
+
+func NodeUpdateAttributesResultWithResponse(response NodeUpdateAttributesResponse) NodeUpdateAttributesResult {
+ var _u NodeUpdateAttributesResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *NodeUpdateAttributesResult) SetErr(err int32) {
+ _m.reset()
+ _m.I_nodeUpdateAttributesResultTag = NodeUpdateAttributesResultErr
+ _m.Err = err
+}
+
+func NodeUpdateAttributesResultWithErr(err int32) NodeUpdateAttributesResult {
+ var _u NodeUpdateAttributesResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_nodeSyncResultTag uint64
+
+const (
+ NodeSyncResultResponse = 1 // 0x00000001
+ NodeSyncResultErr = 2 // 0x00000002
+)
+
+type NodeSyncResult struct {
+ I_nodeSyncResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response NodeSyncResponse `fidl_ordinal:"1"`
+ Err int32 `fidl_ordinal:"2"`
+}
+
+func (_m *NodeSyncResult) reset() {
+ switch _m.I_nodeSyncResultTag {
+ case 1:
+ var _zeroed NodeSyncResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed int32
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *NodeSyncResult) Which() I_nodeSyncResultTag {
+ return _m.I_nodeSyncResultTag
+}
+
+func (_m *NodeSyncResult) Ordinal() uint64 {
+ return uint64(_m.I_nodeSyncResultTag)
+}
+
+func (_m *NodeSyncResult) SetResponse(response NodeSyncResponse) {
+ _m.reset()
+ _m.I_nodeSyncResultTag = NodeSyncResultResponse
+ _m.Response = response
+}
+
+func NodeSyncResultWithResponse(response NodeSyncResponse) NodeSyncResult {
+ var _u NodeSyncResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *NodeSyncResult) SetErr(err int32) {
+ _m.reset()
+ _m.I_nodeSyncResultTag = NodeSyncResultErr
+ _m.Err = err
+}
+
+func NodeSyncResultWithErr(err int32) NodeSyncResult {
+ var _u NodeSyncResult
+ _u.SetErr(err)
+ return _u
+}
+
+// Returns run-time information about a node that is specific to the
+// current connection.
+type ConnectionInfo struct {
+ _ struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"true"`
+ I_unknownData interface{}
+ // The active variant corresponds to one of the supported protocols
+ // of the node, and represents the result of the connection-time
+ // negotiation. Provides auxiliary handles if applicable.
+ Representation Representation `fidl_ordinal:"1"`
+ RepresentationPresent bool
+ // Information about the rights possessed by the current connection.
+ // Note: `rights` limits the set of operations allowed on the connection,
+ // but does not guarantee their availability. For example, one may have
+ // the [`Rights.EXECUTE`] right on a file connection, but the file itself
+ // does not have the `EXECUTE` ability, and hence cannot be executed.
+ // See [`ConnectionOptions.rights`].
+ Rights Operations `fidl_ordinal:"2"`
+ RightsPresent bool
+ // The set of available operations on this channel. It is always the
+ // intersection between the rights possessed by this connection, and the
+ // abilities of the node. The value may be zero in the case of an empty
+ // intersection.
+ // See [`ConnectionOptions.rights`].
+ AvailableOperations Operations `fidl_ordinal:"3"`
+ AvailableOperationsPresent bool
+}
+
+func (u *ConnectionInfo) SetRepresentation(representation Representation) {
+ u.Representation = representation
+ u.RepresentationPresent = true
+}
+
+func (u *ConnectionInfo) GetRepresentation() Representation {
+ return u.Representation
+}
+
+func (u *ConnectionInfo) GetRepresentationWithDefault(_default Representation) Representation {
+ if !u.HasRepresentation() {
+ return _default
+ }
+ return u.Representation
+}
+
+func (u *ConnectionInfo) HasRepresentation() bool {
+ return u.RepresentationPresent
+}
+
+func (u *ConnectionInfo) ClearRepresentation() {
+ u.RepresentationPresent = false
+}
+
+func (u *ConnectionInfo) SetRights(rights Operations) {
+ u.Rights = rights
+ u.RightsPresent = true
+}
+
+func (u *ConnectionInfo) GetRights() Operations {
+ return u.Rights
+}
+
+func (u *ConnectionInfo) GetRightsWithDefault(_default Operations) Operations {
+ if !u.HasRights() {
+ return _default
+ }
+ return u.Rights
+}
+
+func (u *ConnectionInfo) HasRights() bool {
+ return u.RightsPresent
+}
+
+func (u *ConnectionInfo) ClearRights() {
+ u.RightsPresent = false
+}
+
+func (u *ConnectionInfo) SetAvailableOperations(availableOperations Operations) {
+ u.AvailableOperations = availableOperations
+ u.AvailableOperationsPresent = true
+}
+
+func (u *ConnectionInfo) GetAvailableOperations() Operations {
+ return u.AvailableOperations
+}
+
+func (u *ConnectionInfo) GetAvailableOperationsWithDefault(_default Operations) Operations {
+ if !u.HasAvailableOperations() {
+ return _default
+ }
+ return u.AvailableOperations
+}
+
+func (u *ConnectionInfo) HasAvailableOperations() bool {
+ return u.AvailableOperationsPresent
+}
+
+func (u *ConnectionInfo) ClearAvailableOperations() {
+ u.AvailableOperationsPresent = false
+}
+
+func (u *ConnectionInfo) HasUnknownData() bool {
+ return u.I_unknownData != nil
+}
+
+func (u *ConnectionInfo) GetUnknownData() map[uint64]_bindings.UnknownData {
+ return u.I_unknownData.(map[uint64]_bindings.UnknownData)
+}
+
+// Options for [`Directory.Open`] and [`Node.Reopen`].
+type ConnectionOptions struct {
+ _ struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ I_unknownData interface{}
+ // Flags which can affect the behavior when opening and reopening.
+ // If absent, assumes a default of zero.
+ Flags ConnectionFlags `fidl_ordinal:"1"`
+ FlagsPresent bool
+ // Specifies the set of representations accepted by the client, to support
+ // a form of protocol negotiation on the node being opened.
+ // Refer to the definition of [`NodeProtocols`] for more details.
+ // It cannot be zero.
+ //
+ // In addition, clients may assert the type of the object by setting
+ // the protocol corresponding to the expected type:
+ //
+ // * If the caller expected a directory but the node cannot be accessed
+ // as a directory, the error is `ZX_ERR_NOT_DIR`.
+ // * If the caller expected a file but the node cannot be accessed as a
+ // file, the error is `ZX_ERR_NOT_FILE`.
+ // * In other mismatched cases, the error is `ZX_ERR_WRONG_TYPE`.
+ //
+ // During [`Directory.Open`], if a new object is to be created, `protocols`
+ // determines the type of object to create; it must be present.
+ // If a valid object type cannot be unambiguously inferred e.g.
+ // both `DIRECTORY` and `FILE` were set, the request must fail.
+ //
+ // During [`Node.Reopen`], clients may specify a different but compatible
+ // `protocols` to do a "protocol upgrade".
+ //
+ // If more than one protocol is present in `protocols`, the resultant
+ // protocol may become any one of them. Clients should specify
+ // [`ConnectionFlags.GET_CONNECTION_INFO`] to receive a
+ // [`Node.OnConnectionInfo`] event, in order to ascertain the protocol.
+ //
+ // If absent, indicates that the caller accepts any type of node, and
+ // the resulting protocol is unspecified.
+ Protocols NodeProtocols `fidl_ordinal:"2"`
+ ProtocolsPresent bool
+ // Requests rights on the new connection according to the specified rules.
+ // See [`fuchsia.io2/RightsRequest`].
+ //
+ // ## Rights Hierarchy
+ //
+ // Respecting principles of least privileges, rights in general must meet
+ // the following restrictions:
+ //
+ // * A connection must have nonzero rights.
+ // * From the perspective of a client, rights must never increase in a
+ // derived connection.
+ // * From the perspective of a directory proxy, it must ensure that
+ // new connections opened through it cannot have more rights than
+ // the connection where the proxy received the `Open`/`Reopen` call.
+ //
+ // The proper enforcement of the rights hierarchy is a powerful refinement
+ // over the existing access control facilities offered by directory
+ // sandboxing.
+ //
+ // ## Rights Inheritance
+ //
+ // If `rights_request` is absent, inherits at most the rights on the source
+ // connection:
+ //
+ // * During [`Node.Reopen`], the new connection would have the same rights
+ // as the connection where the `Reopen` call is made.
+ // * During [`Directory.Open`], the rights on the connection would inherit
+ // from the connection where the `Open` call is made. If the path crosses
+ // intermediate proxies, a proxy may strip elements from the resulting
+ // rights if the intermediate connection does not have the corresponding
+ // rights.
+ //
+ // ## Rights vs Abilities
+ //
+ // The rights on a connection limits the set of operations allowed on that
+ // connection, but does not guarantee their availability, because the
+ // object may not support it. For convenience, clients may query the
+ // [`ConnectionInfo.available_operations`] field on a new connection,
+ // which is the intersection of the rights and abilities and indicates the
+ // guaranteed set of available operations.
+ //
+ // See [`fuchsia.io2/Rights`] and [`fuchsia.io2/Abilities`].
+ //
+ // ## Implementation Notes
+ //
+ // When a directory proxy encounters an absent `rights` field, let `r` be
+ // the rights on the connection where it received this request, the proxy
+ // should fill in this field with the following:
+ //
+ // ```
+ // RightsRequest {
+ // at_most: r,
+ // at_least: 0,
+ // resolution: RightsResolution.MAXIMIZE,
+ // }
+ // ```
+ //
+ // before forwarding the request to the remote party.
+ RightsRequest RightsRequest `fidl_ordinal:"3"`
+ RightsRequestPresent bool
+}
+
+func (u *ConnectionOptions) SetFlags(flags ConnectionFlags) {
+ u.Flags = flags
+ u.FlagsPresent = true
+}
+
+func (u *ConnectionOptions) GetFlags() ConnectionFlags {
+ return u.Flags
+}
+
+func (u *ConnectionOptions) GetFlagsWithDefault(_default ConnectionFlags) ConnectionFlags {
+ if !u.HasFlags() {
+ return _default
+ }
+ return u.Flags
+}
+
+func (u *ConnectionOptions) HasFlags() bool {
+ return u.FlagsPresent
+}
+
+func (u *ConnectionOptions) ClearFlags() {
+ u.FlagsPresent = false
+}
+
+func (u *ConnectionOptions) SetProtocols(protocols NodeProtocols) {
+ u.Protocols = protocols
+ u.ProtocolsPresent = true
+}
+
+func (u *ConnectionOptions) GetProtocols() NodeProtocols {
+ return u.Protocols
+}
+
+func (u *ConnectionOptions) GetProtocolsWithDefault(_default NodeProtocols) NodeProtocols {
+ if !u.HasProtocols() {
+ return _default
+ }
+ return u.Protocols
+}
+
+func (u *ConnectionOptions) HasProtocols() bool {
+ return u.ProtocolsPresent
+}
+
+func (u *ConnectionOptions) ClearProtocols() {
+ u.ProtocolsPresent = false
+}
+
+func (u *ConnectionOptions) SetRightsRequest(rightsRequest RightsRequest) {
+ u.RightsRequest = rightsRequest
+ u.RightsRequestPresent = true
+}
+
+func (u *ConnectionOptions) GetRightsRequest() RightsRequest {
+ return u.RightsRequest
+}
+
+func (u *ConnectionOptions) GetRightsRequestWithDefault(_default RightsRequest) RightsRequest {
+ if !u.HasRightsRequest() {
+ return _default
+ }
+ return u.RightsRequest
+}
+
+func (u *ConnectionOptions) HasRightsRequest() bool {
+ return u.RightsRequestPresent
+}
+
+func (u *ConnectionOptions) ClearRightsRequest() {
+ u.RightsRequestPresent = false
+}
+
+func (u *ConnectionOptions) HasUnknownData() bool {
+ return u.I_unknownData != nil
+}
+
+func (u *ConnectionOptions) GetUnknownData() map[uint64]_bindings.UnknownData {
+ return u.I_unknownData.(map[uint64]_bindings.UnknownData)
+}
+
+// Auxiliary data for the connector representation of a node, used for
+// protocol discovery and connection.
+//
+// It supports connecting to arbitrary protocols exported by the filesystem
+// server at a path, including ones that do not compose [`fuchsia.io2/Node`].
+type ConnectorInfo struct {
+ _ struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ I_unknownData interface{}
+}
+
+func (u *ConnectorInfo) HasUnknownData() bool {
+ return u.I_unknownData != nil
+}
+
+func (u *ConnectorInfo) GetUnknownData() map[uint64]_bindings.UnknownData {
+ return u.I_unknownData.(map[uint64]_bindings.UnknownData)
+}
+
+// The debuglog representation of a node.
+// The selection of this variant in [`Representation`] implies that the
+// connection speaks the [`fuchsia.io2/Debuglog`] protocol.
+type DebuglogInfo struct {
+ _ struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"true"`
+ I_unknownData interface{}
+ // The backing debuglog kernel object.
+ Debuglog _zx.Log `fidl_handle_subtype:"12" fidl_handle_rights:"2147483648" fidl_bounds:"0" fidl_ordinal:"1"`
+ DebuglogPresent bool
+}
+
+func (u *DebuglogInfo) SetDebuglog(debuglog _zx.Log) {
+ u.Debuglog = debuglog
+ u.DebuglogPresent = true
+}
+
+func (u *DebuglogInfo) GetDebuglog() _zx.Log {
+ return u.Debuglog
+}
+
+func (u *DebuglogInfo) GetDebuglogWithDefault(_default _zx.Log) _zx.Log {
+ if !u.HasDebuglog() {
+ return _default
+ }
+ return u.Debuglog
+}
+
+func (u *DebuglogInfo) HasDebuglog() bool {
+ return u.DebuglogPresent
+}
+
+func (u *DebuglogInfo) ClearDebuglog() {
+ u.DebuglogPresent = false
+}
+
+func (u *DebuglogInfo) HasUnknownData() bool {
+ return u.I_unknownData != nil
+}
+
+func (u *DebuglogInfo) GetUnknownData() map[uint64]_bindings.UnknownData {
+ return u.I_unknownData.(map[uint64]_bindings.UnknownData)
+}
+
+// The object may be cast to the shared interface of devices.
+type DeviceInfo struct {
+ _ struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"true"`
+ I_unknownData interface{}
+ // An optional event which transmits information about a device's state.
+ //
+ // The [`DeviceSignal`] values may be observed on this event.
+ Event _zx.Handle `fidl_handle_subtype:"16" fidl_handle_rights:"2147483648" fidl_bounds:"0" fidl_ordinal:"1"`
+ EventPresent bool
+}
+
+func (u *DeviceInfo) SetEvent(event _zx.Handle) {
+ u.Event = event
+ u.EventPresent = true
+}
+
+func (u *DeviceInfo) GetEvent() _zx.Handle {
+ return u.Event
+}
+
+func (u *DeviceInfo) GetEventWithDefault(_default _zx.Handle) _zx.Handle {
+ if !u.HasEvent() {
+ return _default
+ }
+ return u.Event
+}
+
+func (u *DeviceInfo) HasEvent() bool {
+ return u.EventPresent
+}
+
+func (u *DeviceInfo) ClearEvent() {
+ u.EventPresent = false
+}
+
+func (u *DeviceInfo) HasUnknownData() bool {
+ return u.I_unknownData != nil
+}
+
+func (u *DeviceInfo) GetUnknownData() map[uint64]_bindings.UnknownData {
+ return u.I_unknownData.(map[uint64]_bindings.UnknownData)
+}
+
+// The object may be cast to a Tty interface.
+type TtyInfo struct {
+ _ struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"true"`
+ I_unknownData interface{}
+ // An optional event which transmits information about a device's state.
+ //
+ // The [`DeviceSignal`] values may be observed on this event.
+ Event _zx.Handle `fidl_handle_subtype:"16" fidl_handle_rights:"2147483648" fidl_bounds:"0" fidl_ordinal:"1"`
+ EventPresent bool
+}
+
+func (u *TtyInfo) SetEvent(event _zx.Handle) {
+ u.Event = event
+ u.EventPresent = true
+}
+
+func (u *TtyInfo) GetEvent() _zx.Handle {
+ return u.Event
+}
+
+func (u *TtyInfo) GetEventWithDefault(_default _zx.Handle) _zx.Handle {
+ if !u.HasEvent() {
+ return _default
+ }
+ return u.Event
+}
+
+func (u *TtyInfo) HasEvent() bool {
+ return u.EventPresent
+}
+
+func (u *TtyInfo) ClearEvent() {
+ u.EventPresent = false
+}
+
+func (u *TtyInfo) HasUnknownData() bool {
+ return u.I_unknownData != nil
+}
+
+func (u *TtyInfo) GetUnknownData() map[uint64]_bindings.UnknownData {
+ return u.I_unknownData.(map[uint64]_bindings.UnknownData)
+}
+
+// Information about an immediate child node of a directory.
+//
+// If a particular attribute is not applicable or not supported,
+// implementations should leave the corresponding field absent.
+type DirectoryEntry struct {
+ _ struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ I_unknownData interface{}
+ // Name of the node. This field must be present.
+ Name string `fidl_bounds:"255" fidl_ordinal:"1"`
+ NamePresent bool
+ // Describes the kinds of representations supported by the node.
+ Protocols NodeProtocols `fidl_ordinal:"2"`
+ ProtocolsPresent bool
+ // Describes the kinds of operations supported by the node.
+ Abilities Operations `fidl_ordinal:"3"`
+ AbilitiesPresent bool
+ // An ID for the node. See [`fuchsia.io2/Id`].
+ // This `id` should be unique among all entries of a directory.
+ Id uint64 `fidl_ordinal:"4"`
+ IdPresent bool
+}
+
+func (u *DirectoryEntry) SetName(name string) {
+ u.Name = name
+ u.NamePresent = true
+}
+
+func (u *DirectoryEntry) GetName() string {
+ return u.Name
+}
+
+func (u *DirectoryEntry) GetNameWithDefault(_default string) string {
+ if !u.HasName() {
+ return _default
+ }
+ return u.Name
+}
+
+func (u *DirectoryEntry) HasName() bool {
+ return u.NamePresent
+}
+
+func (u *DirectoryEntry) ClearName() {
+ u.NamePresent = false
+}
+
+func (u *DirectoryEntry) SetProtocols(protocols NodeProtocols) {
+ u.Protocols = protocols
+ u.ProtocolsPresent = true
+}
+
+func (u *DirectoryEntry) GetProtocols() NodeProtocols {
+ return u.Protocols
+}
+
+func (u *DirectoryEntry) GetProtocolsWithDefault(_default NodeProtocols) NodeProtocols {
+ if !u.HasProtocols() {
+ return _default
+ }
+ return u.Protocols
+}
+
+func (u *DirectoryEntry) HasProtocols() bool {
+ return u.ProtocolsPresent
+}
+
+func (u *DirectoryEntry) ClearProtocols() {
+ u.ProtocolsPresent = false
+}
+
+func (u *DirectoryEntry) SetAbilities(abilities Operations) {
+ u.Abilities = abilities
+ u.AbilitiesPresent = true
+}
+
+func (u *DirectoryEntry) GetAbilities() Operations {
+ return u.Abilities
+}
+
+func (u *DirectoryEntry) GetAbilitiesWithDefault(_default Operations) Operations {
+ if !u.HasAbilities() {
+ return _default
+ }
+ return u.Abilities
+}
+
+func (u *DirectoryEntry) HasAbilities() bool {
+ return u.AbilitiesPresent
+}
+
+func (u *DirectoryEntry) ClearAbilities() {
+ u.AbilitiesPresent = false
+}
+
+func (u *DirectoryEntry) SetId(id uint64) {
+ u.Id = id
+ u.IdPresent = true
+}
+
+func (u *DirectoryEntry) GetId() uint64 {
+ return u.Id
+}
+
+func (u *DirectoryEntry) GetIdWithDefault(_default uint64) uint64 {
+ if !u.HasId() {
+ return _default
+ }
+ return u.Id
+}
+
+func (u *DirectoryEntry) HasId() bool {
+ return u.IdPresent
+}
+
+func (u *DirectoryEntry) ClearId() {
+ u.IdPresent = false
+}
+
+func (u *DirectoryEntry) HasUnknownData() bool {
+ return u.I_unknownData != nil
+}
+
+func (u *DirectoryEntry) GetUnknownData() map[uint64]_bindings.UnknownData {
+ return u.I_unknownData.(map[uint64]_bindings.UnknownData)
+}
+
+// Auxiliary data for the directory representation of a node.
+// The selection of this variant in [`Representation`] implies that the
+// connection speaks the [`fuchsia.io2/Directory`] protocol.
+type DirectoryInfo struct {
+ _ struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ I_unknownData interface{}
+}
+
+func (u *DirectoryInfo) HasUnknownData() bool {
+ return u.I_unknownData != nil
+}
+
+func (u *DirectoryInfo) GetUnknownData() map[uint64]_bindings.UnknownData {
+ return u.I_unknownData.(map[uint64]_bindings.UnknownData)
+}
+
+// Options for [`Directory.Unlink`].
+type UnlinkOptions struct {
+ _ struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ I_unknownData interface{}
+ Flags UnlinkFlags `fidl_ordinal:"1"`
+ FlagsPresent bool
+}
+
+func (u *UnlinkOptions) SetFlags(flags UnlinkFlags) {
+ u.Flags = flags
+ u.FlagsPresent = true
+}
+
+func (u *UnlinkOptions) GetFlags() UnlinkFlags {
+ return u.Flags
+}
+
+func (u *UnlinkOptions) GetFlagsWithDefault(_default UnlinkFlags) UnlinkFlags {
+ if !u.HasFlags() {
+ return _default
+ }
+ return u.Flags
+}
+
+func (u *UnlinkOptions) HasFlags() bool {
+ return u.FlagsPresent
+}
+
+func (u *UnlinkOptions) ClearFlags() {
+ u.FlagsPresent = false
+}
+
+func (u *UnlinkOptions) HasUnknownData() bool {
+ return u.I_unknownData != nil
+}
+
+func (u *UnlinkOptions) GetUnknownData() map[uint64]_bindings.UnknownData {
+ return u.I_unknownData.(map[uint64]_bindings.UnknownData)
+}
+
+// Options to pass to [`fuchsia.io2/Directory.Enumerate`].
+type DirectoryEnumerateOptions struct {
+ _ struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ I_unknownData interface{}
+}
+
+func (u *DirectoryEnumerateOptions) HasUnknownData() bool {
+ return u.I_unknownData != nil
+}
+
+func (u *DirectoryEnumerateOptions) GetUnknownData() map[uint64]_bindings.UnknownData {
+ return u.I_unknownData.(map[uint64]_bindings.UnknownData)
+}
+
+type DirectoryWatchOptions struct {
+ _ struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ I_unknownData interface{}
+}
+
+func (u *DirectoryWatchOptions) HasUnknownData() bool {
+ return u.I_unknownData != nil
+}
+
+func (u *DirectoryWatchOptions) GetUnknownData() map[uint64]_bindings.UnknownData {
+ return u.I_unknownData.(map[uint64]_bindings.UnknownData)
+}
+
+// Auxiliary data for the file representation of a node.
+// The selection of this variant in [`Representation`] implies that the
+// connection speaks the [`fuchsia.io2/File`] protocol.
+type FileInfo struct {
+ _ struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"true"`
+ I_unknownData interface{}
+ // An optional event which transmits information about an object's
+ // readability or writability. This event relays information about the
+ // underlying object, not the capability granted to client: this event
+ // may be signalled "readable" on a connection that does not have
+ // the capability to read.
+ //
+ // This event will be present if the following conditions are met:
+ //
+ // - The `available_operations` on the file connection is not empty.
+ // - The filesystem supports signalling readability/writability events.
+ //
+ // The [`FileSignal`] values may be observed on this event.
+ Observer _zx.Event `fidl_handle_subtype:"5" fidl_handle_rights:"2147483648" fidl_bounds:"0" fidl_ordinal:"1"`
+ ObserverPresent bool
+ // Returns if the file is opened in append mode.
+ // In append mode, the seek offset is moved to the end before every
+ // write, the two steps performed in an atomic manner.
+ IsAppend bool `fidl_ordinal:"2"`
+ IsAppendPresent bool
+ // An optional stream object, which can be used to read to and write from
+ // the file.
+ //
+ // Reading and writing the file using the stream object can be up to 20x
+ // faster than reading and writing the file using the Read and Write
+ // operations in the [`fuchsia.io2/File`] protocol.
+ Stream _zx.Handle `fidl_handle_subtype:"31" fidl_handle_rights:"2147483648" fidl_bounds:"0" fidl_ordinal:"3"`
+ StreamPresent bool
+}
+
+func (u *FileInfo) SetObserver(observer _zx.Event) {
+ u.Observer = observer
+ u.ObserverPresent = true
+}
+
+func (u *FileInfo) GetObserver() _zx.Event {
+ return u.Observer
+}
+
+func (u *FileInfo) GetObserverWithDefault(_default _zx.Event) _zx.Event {
+ if !u.HasObserver() {
+ return _default
+ }
+ return u.Observer
+}
+
+func (u *FileInfo) HasObserver() bool {
+ return u.ObserverPresent
+}
+
+func (u *FileInfo) ClearObserver() {
+ u.ObserverPresent = false
+}
+
+func (u *FileInfo) SetIsAppend(isAppend bool) {
+ u.IsAppend = isAppend
+ u.IsAppendPresent = true
+}
+
+func (u *FileInfo) GetIsAppend() bool {
+ return u.IsAppend
+}
+
+func (u *FileInfo) GetIsAppendWithDefault(_default bool) bool {
+ if !u.HasIsAppend() {
+ return _default
+ }
+ return u.IsAppend
+}
+
+func (u *FileInfo) HasIsAppend() bool {
+ return u.IsAppendPresent
+}
+
+func (u *FileInfo) ClearIsAppend() {
+ u.IsAppendPresent = false
+}
+
+func (u *FileInfo) SetStream(stream _zx.Handle) {
+ u.Stream = stream
+ u.StreamPresent = true
+}
+
+func (u *FileInfo) GetStream() _zx.Handle {
+ return u.Stream
+}
+
+func (u *FileInfo) GetStreamWithDefault(_default _zx.Handle) _zx.Handle {
+ if !u.HasStream() {
+ return _default
+ }
+ return u.Stream
+}
+
+func (u *FileInfo) HasStream() bool {
+ return u.StreamPresent
+}
+
+func (u *FileInfo) ClearStream() {
+ u.StreamPresent = false
+}
+
+func (u *FileInfo) HasUnknownData() bool {
+ return u.I_unknownData != nil
+}
+
+func (u *FileInfo) GetUnknownData() map[uint64]_bindings.UnknownData {
+ return u.I_unknownData.(map[uint64]_bindings.UnknownData)
+}
+
+type AdvisoryLockRequest struct {
+ _ struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ I_unknownData interface{}
+ // The type of lock to be acquired.
+ //
+ // If this field is absent, the [`AdvisoryLock`] method will fail
+ // with ZX_ERR_INVALID_ARGS.
+ Type AdvisoryLockType `fidl_ordinal:"1"`
+ TypePresent bool
+ // The byte range within the file to be locked. See [`AdvisoryLockRange`]
+ // for semantics.
+ //
+ // If this field is absent, the range defaults to the entire file.
+ Range AdvisoryLockRange `fidl_ordinal:"2"`
+ RangePresent bool
+ // Whether the file should wait reply to the [`AdvisoryLock`]
+ // method until the requested lock can be acquired.
+ //
+ // If this field is absent, the file will not wait.
+ Wait bool `fidl_ordinal:"3"`
+ WaitPresent bool
+}
+
+func (u *AdvisoryLockRequest) SetType(type_ AdvisoryLockType) {
+ u.Type = type_
+ u.TypePresent = true
+}
+
+func (u *AdvisoryLockRequest) GetType() AdvisoryLockType {
+ return u.Type
+}
+
+func (u *AdvisoryLockRequest) GetTypeWithDefault(_default AdvisoryLockType) AdvisoryLockType {
+ if !u.HasType() {
+ return _default
+ }
+ return u.Type
+}
+
+func (u *AdvisoryLockRequest) HasType() bool {
+ return u.TypePresent
+}
+
+func (u *AdvisoryLockRequest) ClearType() {
+ u.TypePresent = false
+}
+
+func (u *AdvisoryLockRequest) SetRange(range_ AdvisoryLockRange) {
+ u.Range = range_
+ u.RangePresent = true
+}
+
+func (u *AdvisoryLockRequest) GetRange() AdvisoryLockRange {
+ return u.Range
+}
+
+func (u *AdvisoryLockRequest) GetRangeWithDefault(_default AdvisoryLockRange) AdvisoryLockRange {
+ if !u.HasRange() {
+ return _default
+ }
+ return u.Range
+}
+
+func (u *AdvisoryLockRequest) HasRange() bool {
+ return u.RangePresent
+}
+
+func (u *AdvisoryLockRequest) ClearRange() {
+ u.RangePresent = false
+}
+
+func (u *AdvisoryLockRequest) SetWait(wait bool) {
+ u.Wait = wait
+ u.WaitPresent = true
+}
+
+func (u *AdvisoryLockRequest) GetWait() bool {
+ return u.Wait
+}
+
+func (u *AdvisoryLockRequest) GetWaitWithDefault(_default bool) bool {
+ if !u.HasWait() {
+ return _default
+ }
+ return u.Wait
+}
+
+func (u *AdvisoryLockRequest) HasWait() bool {
+ return u.WaitPresent
+}
+
+func (u *AdvisoryLockRequest) ClearWait() {
+ u.WaitPresent = false
+}
+
+func (u *AdvisoryLockRequest) HasUnknownData() bool {
+ return u.I_unknownData != nil
+}
+
+func (u *AdvisoryLockRequest) GetUnknownData() map[uint64]_bindings.UnknownData {
+ return u.I_unknownData.(map[uint64]_bindings.UnknownData)
+}
+
+// Auxiliary data for the memory object representation of a node.
+// The node is a file which is represented as a VMO.
+// The selection of this variant in [`Representation`] implies that the
+// connection speaks the [`fuchsia.io2/Memory`] protocol.
+type MemoryInfo struct {
+ _ struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"true"`
+ I_unknownData interface{}
+ // Although a VMO is returned as a part of this structure, that VMO may
+ // back multiple files. To identify the logical portion of the VMO that
+ // represents the single file, offset and size are also supplied.
+ //
+ // If the range covers the entire VMO (i.e. the offset is zero and the
+ // length matches the size of the VMO), then all clients must receive a
+ // VMO with the same koid. This can be a duplicate of the same underlying
+ // page-aligned VMO.
+ //
+ // The rights on this VMO should correspond to the rights on the
+ // node connection.
+ Buffer fuchsiamem.Range `fidl_ordinal:"1"`
+ BufferPresent bool
+}
+
+func (u *MemoryInfo) SetBuffer(buffer fuchsiamem.Range) {
+ u.Buffer = buffer
+ u.BufferPresent = true
+}
+
+func (u *MemoryInfo) GetBuffer() fuchsiamem.Range {
+ return u.Buffer
+}
+
+func (u *MemoryInfo) GetBufferWithDefault(_default fuchsiamem.Range) fuchsiamem.Range {
+ if !u.HasBuffer() {
+ return _default
+ }
+ return u.Buffer
+}
+
+func (u *MemoryInfo) HasBuffer() bool {
+ return u.BufferPresent
+}
+
+func (u *MemoryInfo) ClearBuffer() {
+ u.BufferPresent = false
+}
+
+func (u *MemoryInfo) HasUnknownData() bool {
+ return u.I_unknownData != nil
+}
+
+func (u *MemoryInfo) GetUnknownData() map[uint64]_bindings.UnknownData {
+ return u.I_unknownData.(map[uint64]_bindings.UnknownData)
+}
+
+// Objective information about a filesystem node.
+// See [`Node.GetAttributes`] and [`Node.UpdateAttributes`].
+//
+// The attributes of a node should be stable, independent of the
+// specific protocol used to access it.
+//
+// If a particular attribute is not applicable or not supported,
+// filesystems should leave the corresponding field absent.
+type NodeAttributes struct {
+ _ struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ I_unknownData interface{}
+ // Describes the kinds of representations supported by the node.
+ // Note: This is not the result of the connection-time negotiation,
+ // which is conveyed via `representation`.
+ //
+ // This attribute is read-only.
+ Protocols NodeProtocols `fidl_ordinal:"1"`
+ ProtocolsPresent bool
+ // Describes the kinds of operations supported by the node.
+ // Note: This is distinct from the rights used at connection time.
+ //
+ // This attribute is read-only.
+ Abilities Operations `fidl_ordinal:"2"`
+ AbilitiesPresent bool
+ // Node size, in bytes.
+ //
+ // This attribute is read-only.
+ ContentSize uint64 `fidl_ordinal:"3"`
+ ContentSizePresent bool
+ // Space needed to store the node (possibly larger than size), in bytes.
+ //
+ // This attribute is read-only.
+ StorageSize uint64 `fidl_ordinal:"4"`
+ StorageSizePresent bool
+ // Number of hard links to the node. It must be at least one.
+ //
+ // This attribute is read-only.
+ LinkCount uint64 `fidl_ordinal:"5"`
+ LinkCountPresent bool
+ // Time of creation in nanoseconds since the Unix epoch, UTC.
+ // It may be updated manually after creation.
+ CreationTime uint64 `fidl_ordinal:"6"`
+ CreationTimePresent bool
+ // Time of last modification in nanoseconds since the Unix epoch, UTC.
+ ModificationTime uint64 `fidl_ordinal:"7"`
+ ModificationTimePresent bool
+ // An ID for the node. See [`fuchsia.io2/Id`].
+ // This `id` should be unique among all entries of a directory.
+ //
+ // This attribute is read-only.
+ Id uint64 `fidl_ordinal:"8"`
+ IdPresent bool
+}
+
+func (u *NodeAttributes) SetProtocols(protocols NodeProtocols) {
+ u.Protocols = protocols
+ u.ProtocolsPresent = true
+}
+
+func (u *NodeAttributes) GetProtocols() NodeProtocols {
+ return u.Protocols
+}
+
+func (u *NodeAttributes) GetProtocolsWithDefault(_default NodeProtocols) NodeProtocols {
+ if !u.HasProtocols() {
+ return _default
+ }
+ return u.Protocols
+}
+
+func (u *NodeAttributes) HasProtocols() bool {
+ return u.ProtocolsPresent
+}
+
+func (u *NodeAttributes) ClearProtocols() {
+ u.ProtocolsPresent = false
+}
+
+func (u *NodeAttributes) SetAbilities(abilities Operations) {
+ u.Abilities = abilities
+ u.AbilitiesPresent = true
+}
+
+func (u *NodeAttributes) GetAbilities() Operations {
+ return u.Abilities
+}
+
+func (u *NodeAttributes) GetAbilitiesWithDefault(_default Operations) Operations {
+ if !u.HasAbilities() {
+ return _default
+ }
+ return u.Abilities
+}
+
+func (u *NodeAttributes) HasAbilities() bool {
+ return u.AbilitiesPresent
+}
+
+func (u *NodeAttributes) ClearAbilities() {
+ u.AbilitiesPresent = false
+}
+
+func (u *NodeAttributes) SetContentSize(contentSize uint64) {
+ u.ContentSize = contentSize
+ u.ContentSizePresent = true
+}
+
+func (u *NodeAttributes) GetContentSize() uint64 {
+ return u.ContentSize
+}
+
+func (u *NodeAttributes) GetContentSizeWithDefault(_default uint64) uint64 {
+ if !u.HasContentSize() {
+ return _default
+ }
+ return u.ContentSize
+}
+
+func (u *NodeAttributes) HasContentSize() bool {
+ return u.ContentSizePresent
+}
+
+func (u *NodeAttributes) ClearContentSize() {
+ u.ContentSizePresent = false
+}
+
+func (u *NodeAttributes) SetStorageSize(storageSize uint64) {
+ u.StorageSize = storageSize
+ u.StorageSizePresent = true
+}
+
+func (u *NodeAttributes) GetStorageSize() uint64 {
+ return u.StorageSize
+}
+
+func (u *NodeAttributes) GetStorageSizeWithDefault(_default uint64) uint64 {
+ if !u.HasStorageSize() {
+ return _default
+ }
+ return u.StorageSize
+}
+
+func (u *NodeAttributes) HasStorageSize() bool {
+ return u.StorageSizePresent
+}
+
+func (u *NodeAttributes) ClearStorageSize() {
+ u.StorageSizePresent = false
+}
+
+func (u *NodeAttributes) SetLinkCount(linkCount uint64) {
+ u.LinkCount = linkCount
+ u.LinkCountPresent = true
+}
+
+func (u *NodeAttributes) GetLinkCount() uint64 {
+ return u.LinkCount
+}
+
+func (u *NodeAttributes) GetLinkCountWithDefault(_default uint64) uint64 {
+ if !u.HasLinkCount() {
+ return _default
+ }
+ return u.LinkCount
+}
+
+func (u *NodeAttributes) HasLinkCount() bool {
+ return u.LinkCountPresent
+}
+
+func (u *NodeAttributes) ClearLinkCount() {
+ u.LinkCountPresent = false
+}
+
+func (u *NodeAttributes) SetCreationTime(creationTime uint64) {
+ u.CreationTime = creationTime
+ u.CreationTimePresent = true
+}
+
+func (u *NodeAttributes) GetCreationTime() uint64 {
+ return u.CreationTime
+}
+
+func (u *NodeAttributes) GetCreationTimeWithDefault(_default uint64) uint64 {
+ if !u.HasCreationTime() {
+ return _default
+ }
+ return u.CreationTime
+}
+
+func (u *NodeAttributes) HasCreationTime() bool {
+ return u.CreationTimePresent
+}
+
+func (u *NodeAttributes) ClearCreationTime() {
+ u.CreationTimePresent = false
+}
+
+func (u *NodeAttributes) SetModificationTime(modificationTime uint64) {
+ u.ModificationTime = modificationTime
+ u.ModificationTimePresent = true
+}
+
+func (u *NodeAttributes) GetModificationTime() uint64 {
+ return u.ModificationTime
+}
+
+func (u *NodeAttributes) GetModificationTimeWithDefault(_default uint64) uint64 {
+ if !u.HasModificationTime() {
+ return _default
+ }
+ return u.ModificationTime
+}
+
+func (u *NodeAttributes) HasModificationTime() bool {
+ return u.ModificationTimePresent
+}
+
+func (u *NodeAttributes) ClearModificationTime() {
+ u.ModificationTimePresent = false
+}
+
+func (u *NodeAttributes) SetId(id uint64) {
+ u.Id = id
+ u.IdPresent = true
+}
+
+func (u *NodeAttributes) GetId() uint64 {
+ return u.Id
+}
+
+func (u *NodeAttributes) GetIdWithDefault(_default uint64) uint64 {
+ if !u.HasId() {
+ return _default
+ }
+ return u.Id
+}
+
+func (u *NodeAttributes) HasId() bool {
+ return u.IdPresent
+}
+
+func (u *NodeAttributes) ClearId() {
+ u.IdPresent = false
+}
+
+func (u *NodeAttributes) HasUnknownData() bool {
+ return u.I_unknownData != nil
+}
+
+func (u *NodeAttributes) GetUnknownData() map[uint64]_bindings.UnknownData {
+ return u.I_unknownData.(map[uint64]_bindings.UnknownData)
+}
+
+// The pipe representation of a node.
+// A pipe is a data streaming interface, commonly used for standard in/out.
+// There is no universal requirement as to if it is uni- or bi-directional.
+// The selection of this variant in [`Representation`] implies that the
+// connection speaks the [`fuchsia.io2/Pipe`] protocol.
+type PipeInfo struct {
+ _ struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"true"`
+ I_unknownData interface{}
+ // The backing socket transport for the pipe.
+ // The rights on this socket should correspond to the rights on the
+ // node connection.
+ Socket _zx.Socket `fidl_handle_subtype:"14" fidl_handle_rights:"2147483648" fidl_bounds:"0" fidl_ordinal:"1"`
+ SocketPresent bool
+}
+
+func (u *PipeInfo) SetSocket(socket _zx.Socket) {
+ u.Socket = socket
+ u.SocketPresent = true
+}
+
+func (u *PipeInfo) GetSocket() _zx.Socket {
+ return u.Socket
+}
+
+func (u *PipeInfo) GetSocketWithDefault(_default _zx.Socket) _zx.Socket {
+ if !u.HasSocket() {
+ return _default
+ }
+ return u.Socket
+}
+
+func (u *PipeInfo) HasSocket() bool {
+ return u.SocketPresent
+}
+
+func (u *PipeInfo) ClearSocket() {
+ u.SocketPresent = false
+}
+
+func (u *PipeInfo) HasUnknownData() bool {
+ return u.I_unknownData != nil
+}
+
+func (u *PipeInfo) GetUnknownData() map[uint64]_bindings.UnknownData {
+ return u.I_unknownData.(map[uint64]_bindings.UnknownData)
+}
+
+// Auxiliary data for the POSIX socket representation of a node.
+// The selection of this variant in [`Representation`] implies that the
+// connection speaks the [`fuchsia.posix.socket/Control`] protocol.
+type PosixSocketInfo struct {
+ _ struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"true"`
+ I_unknownData interface{}
+ // The backing transport for the socket.
+ // The rights on this socket should correspond to the rights on the
+ // node connection.
+ Socket _zx.Socket `fidl_handle_subtype:"14" fidl_handle_rights:"2147483648" fidl_bounds:"0" fidl_ordinal:"1"`
+ SocketPresent bool
+}
+
+func (u *PosixSocketInfo) SetSocket(socket _zx.Socket) {
+ u.Socket = socket
+ u.SocketPresent = true
+}
+
+func (u *PosixSocketInfo) GetSocket() _zx.Socket {
+ return u.Socket
+}
+
+func (u *PosixSocketInfo) GetSocketWithDefault(_default _zx.Socket) _zx.Socket {
+ if !u.HasSocket() {
+ return _default
+ }
+ return u.Socket
+}
+
+func (u *PosixSocketInfo) HasSocket() bool {
+ return u.SocketPresent
+}
+
+func (u *PosixSocketInfo) ClearSocket() {
+ u.SocketPresent = false
+}
+
+func (u *PosixSocketInfo) HasUnknownData() bool {
+ return u.I_unknownData != nil
+}
+
+func (u *PosixSocketInfo) GetUnknownData() map[uint64]_bindings.UnknownData {
+ return u.I_unknownData.(map[uint64]_bindings.UnknownData)
+}
+
+const (
+ DebuglogReopenOrdinal uint64 = 0x74170eb73121c69f
+ DebuglogCloseOrdinal uint64 = 0x2dec2818386e5d68
+ DebuglogDescribeOrdinal uint64 = 0x4aac591060c65c2f
+ DebuglogOnConnectionInfoOrdinal uint64 = 0x6637fc43ceeaa437
+ DebuglogGetTokenOrdinal uint64 = 0x4f2b25c934c5d8e4
+ DebuglogGetAttributesOrdinal uint64 = 0x675e1e73d076d1e4
+ DebuglogUpdateAttributesOrdinal uint64 = 0x7d59d73f59ba21b5
+ DebuglogSyncOrdinal uint64 = 0xac3a8c1a2e063ad
+)
+
+type DebuglogWithCtxInterface _bindings.ChannelProxy
+
+// Creates another connection to the same node.
+//
+// + `options` options applicable to both `Open` and `Reopen`,
+// including negotiating protocol and restricting rights.
+// See [`fuchsia.io2/ConnectionOptions`].
+// + `object_request` is the server end of a channel created for the new
+// connection. The caller may proceed to send messages on the
+// corresponding client end right away.
+//
+// For files, the cloned connection and the original connection have
+// independent seek offsets.
+func (p *DebuglogWithCtxInterface) Reopen(ctx_ _bindings.Context, options ConnectionOptions, objectRequest _zx.Channel) error {
+ req_ := &debuglogWithCtxReopenRequest{
+ Options: options,
+ ObjectRequest: objectRequest,
+ }
+ err_ := ((*_bindings.ChannelProxy)(p)).Send(DebuglogReopenOrdinal, req_)
+ return err_
+}
+
+// Terminates the connection to the node.
+//
+// After calling `Close`, the client must not send any other requests.
+// The result of `Close` arrives as an epitaph, where the channel is closed
+// by the server upon processing this operation.
+//
+// Closing the client end of the channel should be semantically equivalent
+// to calling `Close` without monitoring the status epitaph.
+//
+// This method does not require any rights.
+func (p *DebuglogWithCtxInterface) Close(ctx_ _bindings.Context) error {
+ var req_ _bindings.Message
+ err_ := ((*_bindings.ChannelProxy)(p)).Send(DebuglogCloseOrdinal, req_)
+ return err_
+}
+
+// Returns extra connection information and auxiliary handles.
+//
+// + `query` specifies the fields in `ConnectionInfo` that the caller is
+// interested in.
+// - `info` see [`fuchsia.io2/ConnectionInfo`] for details on the fields.
+//
+// When all known bits in `query` are set, the return value matches
+// the one from [`OnConnectionInfo`], as if the caller requested that event
+// using [`ConnectionFlags.GET_CONNECTION_INFO`].
+//
+// If the `Describe` operation fails, the connection is closed with the
+// associated error.
+//
+// This method does not require any rights.
+func (p *DebuglogWithCtxInterface) Describe(ctx_ _bindings.Context, query ConnectionInfoQuery) (ConnectionInfo, error) {
+ req_ := &debuglogWithCtxDescribeRequest{
+ Query: query,
+ }
+ resp_ := &debuglogWithCtxDescribeResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DebuglogDescribeOrdinal, req_, resp_)
+ return resp_.Info, err_
+}
+
+// An event produced eagerly by the server if requested by
+// [`ConnectionFlags.GET_CONNECTION_INFO`]. This event will be the
+// first message from the server, and is sent exactly once.
+//
+// - `info` See [`fuchsia.io2/ConnectionInfo`] for details on the fields.
+// All members should be present.
+//
+// Different from [`fuchsia.io/OnOpen`], an error during open/reopen is
+// always manifested as an epitaph.
+func (p *DebuglogWithCtxInterface) ExpectOnConnectionInfo(ctx_ _bindings.Context) (ConnectionInfo, error) {
+ resp_ := &debuglogWithCtxOnConnectionInfoResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Recv(DebuglogOnConnectionInfoOrdinal, resp_)
+ return resp_.Info, err_
+}
+
+// Acquires a token which can be used to identify this connection at
+// a later point in time.
+//
+// This method does not require any rights. Note that the token identifies
+// the connection, hence carries the rights information on this connection.
+func (p *DebuglogWithCtxInterface) GetToken(ctx_ _bindings.Context) (NodeGetTokenResult, error) {
+ var req_ _bindings.Message
+ resp_ := &debuglogWithCtxGetTokenResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DebuglogGetTokenOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Acquires information about the node.
+//
+// The attributes of a node should be stable, independent of the
+// specific protocol used to access it.
+//
+// + `query` a bit-mask specifying which attributes to fetch. The server
+// should not return more than necessary.
+// - `attributes` the returned attributes.
+//
+// This method requires the [`Rights.GET_ATTRIBUTES`] right.
+func (p *DebuglogWithCtxInterface) GetAttributes(ctx_ _bindings.Context, query NodeAttributesQuery) (NodeGetAttributesResult, error) {
+ req_ := &debuglogWithCtxGetAttributesRequest{
+ Query: query,
+ }
+ resp_ := &debuglogWithCtxGetAttributesResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DebuglogGetAttributesOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Updates information about the node.
+//
+// + `attributes` the presence of a table field in `attributes` indicates
+// the intent to update the corresponding attribute.
+//
+// This method requires the [`Rights.UPDATE_ATTRIBUTES`] right.
+func (p *DebuglogWithCtxInterface) UpdateAttributes(ctx_ _bindings.Context, attributes NodeAttributes) (NodeUpdateAttributesResult, error) {
+ req_ := &debuglogWithCtxUpdateAttributesRequest{
+ Attributes: attributes,
+ }
+ resp_ := &debuglogWithCtxUpdateAttributesResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DebuglogUpdateAttributesOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Synchronizes updates to the node to the underlying media, if it exists.
+//
+// This method will return when the filesystem server has flushed the
+// relevant updates to the underlying media, but does not guarantee the
+// underlying media has persisted the information, nor that any information
+// is committed to hardware. Clients may use `Sync` to ensure ordering
+// between operations.
+//
+// This method does not require any rights.
+func (p *DebuglogWithCtxInterface) Sync(ctx_ _bindings.Context) (NodeSyncResult, error) {
+ var req_ _bindings.Message
+ resp_ := &debuglogWithCtxSyncResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DebuglogSyncOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// A node for interacting with the kernel debug log.
+// It may be manipulated via the debuglog object returned from
+// the `DebuglogInfo` member in [`fuchsia.io2/Representation`].
+type DebuglogWithCtx interface {
+ // Creates another connection to the same node.
+ //
+ // + `options` options applicable to both `Open` and `Reopen`,
+ // including negotiating protocol and restricting rights.
+ // See [`fuchsia.io2/ConnectionOptions`].
+ // + `object_request` is the server end of a channel created for the new
+ // connection. The caller may proceed to send messages on the
+ // corresponding client end right away.
+ //
+ // For files, the cloned connection and the original connection have
+ // independent seek offsets.
+ Reopen(ctx_ _bindings.Context, options ConnectionOptions, objectRequest _zx.Channel) error
+ // Terminates the connection to the node.
+ //
+ // After calling `Close`, the client must not send any other requests.
+ // The result of `Close` arrives as an epitaph, where the channel is closed
+ // by the server upon processing this operation.
+ //
+ // Closing the client end of the channel should be semantically equivalent
+ // to calling `Close` without monitoring the status epitaph.
+ //
+ // This method does not require any rights.
+ Close(ctx_ _bindings.Context) error
+ // Returns extra connection information and auxiliary handles.
+ //
+ // + `query` specifies the fields in `ConnectionInfo` that the caller is
+ // interested in.
+ // - `info` see [`fuchsia.io2/ConnectionInfo`] for details on the fields.
+ //
+ // When all known bits in `query` are set, the return value matches
+ // the one from [`OnConnectionInfo`], as if the caller requested that event
+ // using [`ConnectionFlags.GET_CONNECTION_INFO`].
+ //
+ // If the `Describe` operation fails, the connection is closed with the
+ // associated error.
+ //
+ // This method does not require any rights.
+ Describe(ctx_ _bindings.Context, query ConnectionInfoQuery) (ConnectionInfo, error)
+ // An event produced eagerly by the server if requested by
+ // [`ConnectionFlags.GET_CONNECTION_INFO`]. This event will be the
+ // first message from the server, and is sent exactly once.
+ //
+ // - `info` See [`fuchsia.io2/ConnectionInfo`] for details on the fields.
+ // All members should be present.
+ //
+ // Different from [`fuchsia.io/OnOpen`], an error during open/reopen is
+ // always manifested as an epitaph.
+ // Acquires a token which can be used to identify this connection at
+ // a later point in time.
+ //
+ // This method does not require any rights. Note that the token identifies
+ // the connection, hence carries the rights information on this connection.
+ GetToken(ctx_ _bindings.Context) (NodeGetTokenResult, error)
+ // Acquires information about the node.
+ //
+ // The attributes of a node should be stable, independent of the
+ // specific protocol used to access it.
+ //
+ // + `query` a bit-mask specifying which attributes to fetch. The server
+ // should not return more than necessary.
+ // - `attributes` the returned attributes.
+ //
+ // This method requires the [`Rights.GET_ATTRIBUTES`] right.
+ GetAttributes(ctx_ _bindings.Context, query NodeAttributesQuery) (NodeGetAttributesResult, error)
+ // Updates information about the node.
+ //
+ // + `attributes` the presence of a table field in `attributes` indicates
+ // the intent to update the corresponding attribute.
+ //
+ // This method requires the [`Rights.UPDATE_ATTRIBUTES`] right.
+ UpdateAttributes(ctx_ _bindings.Context, attributes NodeAttributes) (NodeUpdateAttributesResult, error)
+ // Synchronizes updates to the node to the underlying media, if it exists.
+ //
+ // This method will return when the filesystem server has flushed the
+ // relevant updates to the underlying media, but does not guarantee the
+ // underlying media has persisted the information, nor that any information
+ // is committed to hardware. Clients may use `Sync` to ensure ordering
+ // between operations.
+ //
+ // This method does not require any rights.
+ Sync(ctx_ _bindings.Context) (NodeSyncResult, error)
+}
+
+type DebuglogWithCtxTransitionalBase struct{}
+
+type DebuglogWithCtxInterfaceRequest _bindings.InterfaceRequest
+
+func NewDebuglogWithCtxInterfaceRequest() (DebuglogWithCtxInterfaceRequest, *DebuglogWithCtxInterface, error) {
+ req, cli, err := _bindings.NewInterfaceRequest()
+ return DebuglogWithCtxInterfaceRequest(req), (*DebuglogWithCtxInterface)(cli), err
+}
+
+type DebuglogWithCtxStub struct {
+ Impl DebuglogWithCtx
+}
+
+func (s_ *DebuglogWithCtxStub) Dispatch(args_ _bindings.DispatchArgs) (_bindings.Message, bool, error) {
+ switch args_.Ordinal {
+ case DebuglogReopenOrdinal:
+ in_ := debuglogWithCtxReopenRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ err_ := s_.Impl.Reopen(args_.Ctx, in_.Options, in_.ObjectRequest)
+ return nil, false, err_
+ case DebuglogCloseOrdinal:
+ err_ := s_.Impl.Close(args_.Ctx)
+ return nil, false, err_
+ case DebuglogDescribeOrdinal:
+ in_ := debuglogWithCtxDescribeRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ info, err_ := s_.Impl.Describe(args_.Ctx, in_.Query)
+ out_ := debuglogWithCtxDescribeResponse{}
+ out_.Info = info
+ return &out_, true, err_
+ case DebuglogGetTokenOrdinal:
+ result, err_ := s_.Impl.GetToken(args_.Ctx)
+ out_ := debuglogWithCtxGetTokenResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DebuglogGetAttributesOrdinal:
+ in_ := debuglogWithCtxGetAttributesRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.GetAttributes(args_.Ctx, in_.Query)
+ out_ := debuglogWithCtxGetAttributesResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DebuglogUpdateAttributesOrdinal:
+ in_ := debuglogWithCtxUpdateAttributesRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.UpdateAttributes(args_.Ctx, in_.Attributes)
+ out_ := debuglogWithCtxUpdateAttributesResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DebuglogSyncOrdinal:
+ result, err_ := s_.Impl.Sync(args_.Ctx)
+ out_ := debuglogWithCtxSyncResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ }
+ return nil, false, _bindings.ErrUnknownOrdinal
+}
+
+type DebuglogEventProxy _bindings.ChannelProxy
+
+func (p *DebuglogEventProxy) OnConnectionInfo(info ConnectionInfo) error {
+ event_ := &debuglogWithCtxOnConnectionInfoResponse{
+ Info: info,
+ }
+ return ((*_bindings.ChannelProxy)(p)).Send(DebuglogOnConnectionInfoOrdinal, event_)
+}
+
+const (
+ DirectoryReopenOrdinal uint64 = 0x74170eb73121c69f
+ DirectoryCloseOrdinal uint64 = 0x2dec2818386e5d68
+ DirectoryDescribeOrdinal uint64 = 0x4aac591060c65c2f
+ DirectoryOnConnectionInfoOrdinal uint64 = 0x6637fc43ceeaa437
+ DirectoryGetTokenOrdinal uint64 = 0x4f2b25c934c5d8e4
+ DirectoryGetAttributesOrdinal uint64 = 0x675e1e73d076d1e4
+ DirectoryUpdateAttributesOrdinal uint64 = 0x7d59d73f59ba21b5
+ DirectorySyncOrdinal uint64 = 0xac3a8c1a2e063ad
+ DirectoryOpenOrdinal uint64 = 0x38473cc20ba23253
+ DirectoryAddInotifyFilterOrdinal uint64 = 0x7c422dcf191384db
+ DirectoryUnlinkOrdinal uint64 = 0x6c6dd97d65572cdb
+ DirectoryUnlink2Ordinal uint64 = 0x570d476d3f1b82b
+ DirectoryEnumerateOrdinal uint64 = 0xbe14c8b05a90a63
+ DirectoryRenameOrdinal uint64 = 0x1fe02df8f70742b7
+ DirectoryLinkOrdinal uint64 = 0x42634f09df52fdcc
+ DirectoryWatchOrdinal uint64 = 0x7f88ab8c3f500618
+)
+
+type DirectoryWithCtxInterface _bindings.ChannelProxy
+
+// Creates another connection to the same node.
+//
+// + `options` options applicable to both `Open` and `Reopen`,
+// including negotiating protocol and restricting rights.
+// See [`fuchsia.io2/ConnectionOptions`].
+// + `object_request` is the server end of a channel created for the new
+// connection. The caller may proceed to send messages on the
+// corresponding client end right away.
+//
+// For files, the cloned connection and the original connection have
+// independent seek offsets.
+func (p *DirectoryWithCtxInterface) Reopen(ctx_ _bindings.Context, options ConnectionOptions, objectRequest _zx.Channel) error {
+ req_ := &directoryWithCtxReopenRequest{
+ Options: options,
+ ObjectRequest: objectRequest,
+ }
+ err_ := ((*_bindings.ChannelProxy)(p)).Send(DirectoryReopenOrdinal, req_)
+ return err_
+}
+
+// Terminates the connection to the node.
+//
+// After calling `Close`, the client must not send any other requests.
+// The result of `Close` arrives as an epitaph, where the channel is closed
+// by the server upon processing this operation.
+//
+// Closing the client end of the channel should be semantically equivalent
+// to calling `Close` without monitoring the status epitaph.
+//
+// This method does not require any rights.
+func (p *DirectoryWithCtxInterface) Close(ctx_ _bindings.Context) error {
+ var req_ _bindings.Message
+ err_ := ((*_bindings.ChannelProxy)(p)).Send(DirectoryCloseOrdinal, req_)
+ return err_
+}
+
+// Returns extra connection information and auxiliary handles.
+//
+// + `query` specifies the fields in `ConnectionInfo` that the caller is
+// interested in.
+// - `info` see [`fuchsia.io2/ConnectionInfo`] for details on the fields.
+//
+// When all known bits in `query` are set, the return value matches
+// the one from [`OnConnectionInfo`], as if the caller requested that event
+// using [`ConnectionFlags.GET_CONNECTION_INFO`].
+//
+// If the `Describe` operation fails, the connection is closed with the
+// associated error.
+//
+// This method does not require any rights.
+func (p *DirectoryWithCtxInterface) Describe(ctx_ _bindings.Context, query ConnectionInfoQuery) (ConnectionInfo, error) {
+ req_ := &directoryWithCtxDescribeRequest{
+ Query: query,
+ }
+ resp_ := &directoryWithCtxDescribeResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryDescribeOrdinal, req_, resp_)
+ return resp_.Info, err_
+}
+
+// An event produced eagerly by the server if requested by
+// [`ConnectionFlags.GET_CONNECTION_INFO`]. This event will be the
+// first message from the server, and is sent exactly once.
+//
+// - `info` See [`fuchsia.io2/ConnectionInfo`] for details on the fields.
+// All members should be present.
+//
+// Different from [`fuchsia.io/OnOpen`], an error during open/reopen is
+// always manifested as an epitaph.
+func (p *DirectoryWithCtxInterface) ExpectOnConnectionInfo(ctx_ _bindings.Context) (ConnectionInfo, error) {
+ resp_ := &directoryWithCtxOnConnectionInfoResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Recv(DirectoryOnConnectionInfoOrdinal, resp_)
+ return resp_.Info, err_
+}
+
+// Acquires a token which can be used to identify this connection at
+// a later point in time.
+//
+// This method does not require any rights. Note that the token identifies
+// the connection, hence carries the rights information on this connection.
+func (p *DirectoryWithCtxInterface) GetToken(ctx_ _bindings.Context) (NodeGetTokenResult, error) {
+ var req_ _bindings.Message
+ resp_ := &directoryWithCtxGetTokenResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryGetTokenOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Acquires information about the node.
+//
+// The attributes of a node should be stable, independent of the
+// specific protocol used to access it.
+//
+// + `query` a bit-mask specifying which attributes to fetch. The server
+// should not return more than necessary.
+// - `attributes` the returned attributes.
+//
+// This method requires the [`Rights.GET_ATTRIBUTES`] right.
+func (p *DirectoryWithCtxInterface) GetAttributes(ctx_ _bindings.Context, query NodeAttributesQuery) (NodeGetAttributesResult, error) {
+ req_ := &directoryWithCtxGetAttributesRequest{
+ Query: query,
+ }
+ resp_ := &directoryWithCtxGetAttributesResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryGetAttributesOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Updates information about the node.
+//
+// + `attributes` the presence of a table field in `attributes` indicates
+// the intent to update the corresponding attribute.
+//
+// This method requires the [`Rights.UPDATE_ATTRIBUTES`] right.
+func (p *DirectoryWithCtxInterface) UpdateAttributes(ctx_ _bindings.Context, attributes NodeAttributes) (NodeUpdateAttributesResult, error) {
+ req_ := &directoryWithCtxUpdateAttributesRequest{
+ Attributes: attributes,
+ }
+ resp_ := &directoryWithCtxUpdateAttributesResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryUpdateAttributesOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Synchronizes updates to the node to the underlying media, if it exists.
+//
+// This method will return when the filesystem server has flushed the
+// relevant updates to the underlying media, but does not guarantee the
+// underlying media has persisted the information, nor that any information
+// is committed to hardware. Clients may use `Sync` to ensure ordering
+// between operations.
+//
+// This method does not require any rights.
+func (p *DirectoryWithCtxInterface) Sync(ctx_ _bindings.Context) (NodeSyncResult, error) {
+ var req_ _bindings.Message
+ resp_ := &directoryWithCtxSyncResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectorySyncOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Opens or creates a new node relative to this directory node.
+//
+// + `path` identifies the node to open.
+// If `path` contains multiple segments, then the directory is traversed,
+// one segment at a time, relative to the directory represented by this
+// connection.
+// See [`fuchsia.io2/Path`] for what constitutes a valid path.
+// To open another connection to the current directory, use
+// [`fuchsia.io2/Node.Reopen`] instead.
+// + `mode` controls whether to open existing/create new etc.
+// + `options` additional options applicable to both `Open` and `Reopen`,
+// including negotiating protocol and restricting rights.
+// See [`fuchsia.io2/ConnectionOptions`].
+// + `object_request` is the server end of a channel created for the new
+// connection. The caller may proceed to send messages on the
+// corresponding client end right away.
+//
+// This method requires the following rights on the current connection:
+//
+// * [`Rights.ENUMERATE`]
+// * [`Rights.TRAVERSE`]
+//
+// Errors are presented as an epitaph on the `object_request` channel.
+//
+// * error `ZX_ERR_ACCESS_DENIED` if the requested rights exceeds
+// what is allowed.
+// * error `ZX_ERR_BAD_PATH` if `path` is invalid.
+func (p *DirectoryWithCtxInterface) Open(ctx_ _bindings.Context, path string, mode OpenMode, options ConnectionOptions, objectRequest _zx.Channel) error {
+ req_ := &directoryWithCtxOpenRequest{
+ Path: path,
+ Mode: mode,
+ Options: options,
+ ObjectRequest: objectRequest,
+ }
+ err_ := ((*_bindings.ChannelProxy)(p)).Send(DirectoryOpenOrdinal, req_)
+ return err_
+}
+
+// Adds a new inotify filter for an object relative to this directory object.
+//
+// + 'filter` is a mask of different inotify events that need to be watched by the server
+// for a specific file/directory.
+//
+// + `path` may contain multiple segments, separated by "/" characters,
+// and should never be empty; i.e., "" is an invalid path. Paths should not contain
+// a leading "/".
+//
+// +`watch_descriptor` is client assigned value to identify a filter.
+// Server shouldn't trust the client-assigned watch_descriptor. They should just send it
+// back to the client in the socket.
+// This value is not used by server, but it is returned back as part of InotifyEvent,
+// to help the client correlate filter with events on this filter.
+//
+// + `socket` is shared between different filter objects i.e every new filter will
+// have a different server end of the socket and there will be a single client end per
+// inotify instance on inotify init.
+//
+// + `controller` is the server end of a channel and is per filter in the vnode so that
+// we can remove the specific inotify filter when the controller is closed by the server
+// or the client.
+//
+// Errors are presented as an epitaph on the `controller` channel.
+// * error `ZX_ERR_ACCESS_DENIED` if the requested rights exceeds
+// what is allowed.
+// * error `ZX_ERR_BAD_PATH` if `path` is invalid.
+func (p *DirectoryWithCtxInterface) AddInotifyFilter(ctx_ _bindings.Context, path string, filter InotifyWatchMask, watchDescriptor uint32, socket _zx.Socket) error {
+ req_ := &directoryWithCtxAddInotifyFilterRequest{
+ Path: path,
+ Filter: filter,
+ WatchDescriptor: watchDescriptor,
+ Socket: socket,
+ }
+ var resp_ _bindings.Message
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryAddInotifyFilterOrdinal, req_, resp_)
+ return err_
+}
+
+// Removes a child node from the this directory's list of entries.
+//
+// Note: this does not guarantee that the underlying object is destroyed.
+// Although the link will be removed from the containing directory,
+// objects with multiple references (such as files which are still open)
+// will not actually be destroyed until all references are closed.
+//
+// * error `ZX_ERR_ACCESS_DENIED` if the connection does not have
+// [`Rights.WRITE_BYTES`].
+// * error `ZX_ERR_NOT_SUPPORTED` if the underlying filesystem does not
+// support writing.
+// * error `ZX_ERR_BAD_PATH` if `name` is invalid.
+// * error `ZX_ERR_NOT_EMPTY` if `name` refers to a non-empty directory.
+// * error `ZX_ERR_UNAVAILABLE` if `name` refers to a mount point,
+// containing a remote channel.
+// * error `ZX_ERR_NOT_DIR` if the options requested a directory but something other than a
+// directory was found.
+//
+// Other errors may be returned for filesystem-specific reasons.
+//
+// This method requires the following rights:
+//
+// * [`Rights.ENUMERATE`]
+// * [`Rights.MODIFY_DIRECTORY`]
+func (p *DirectoryWithCtxInterface) Unlink(ctx_ _bindings.Context, path string) (DirectoryUnlinkResult, error) {
+ req_ := &directoryWithCtxUnlinkRequest{
+ Path: path,
+ }
+ resp_ := &directoryWithCtxUnlinkResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryUnlinkOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+func (p *DirectoryWithCtxInterface) Unlink2(ctx_ _bindings.Context, name string, options UnlinkOptions) (DirectoryUnlink2Result, error) {
+ req_ := &directoryWithCtxUnlink2Request{
+ Name: name,
+ Options: options,
+ }
+ resp_ := &directoryWithCtxUnlink2Response{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryUnlink2Ordinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Initiates a directory listing operation over the input channel,
+// starting at seek offset 0.
+//
+// This method requires the [`Rights.ENUMERATE`] right. If this right is
+// absent, `iterator` will be closed with a `ZX_ERR_ACCESS_DENIED` epitaph.
+func (p *DirectoryWithCtxInterface) Enumerate(ctx_ _bindings.Context, options DirectoryEnumerateOptions, iterator DirectoryIteratorWithCtxInterfaceRequest) error {
+ req_ := &directoryWithCtxEnumerateRequest{
+ Options: options,
+ Iterator: iterator,
+ }
+ err_ := ((*_bindings.ChannelProxy)(p)).Send(DirectoryEnumerateOrdinal, req_)
+ return err_
+}
+
+// Renames a node named `src` to the name `dst`, in a directory represented
+// by `dst_parent_token`.
+//
+// `src` and `dst` must be valid node names.
+// See [`fuchsia.io2/Name`] for what constitutes a valid name.
+//
+// This method requires the following rights on both the current
+// connection, and the connection identified by `dst_parent_token`:
+//
+// * [`Rights.ENUMERATE`]
+// * [`Rights.MODIFY_DIRECTORY`]
+//
+// * error `ZX_ERR_INVALID_ARGS` if `src` or `dst` is invalid.
+func (p *DirectoryWithCtxInterface) Rename(ctx_ _bindings.Context, src string, dstParentToken _zx.Event, dst string) (DirectoryRenameResult, error) {
+ req_ := &directoryWithCtxRenameRequest{
+ Src: src,
+ DstParentToken: dstParentToken,
+ Dst: dst,
+ }
+ resp_ := &directoryWithCtxRenameResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryRenameOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Creates a link to a node named `src` by the name `dst`,
+// in a directory represented by `dst_parent_token`.
+//
+// Directories cannot be linked, to prevent reference cycles.
+//
+// `src` and `dst` must be valid node names.
+// See [`fuchsia.io2/Name`] for what constitutes a valid name.
+//
+// This method requires the following rights on both the current
+// connection, and the connection identified by `dst_parent_token`:
+//
+// * [`Rights.ENUMERATE`]
+// * [`Rights.MODIFY_DIRECTORY`]
+//
+// * error `ZX_ERR_INVALID_ARGS` if `src` or `dst` is invalid.
+// * error `ZX_ERR_INVALID_ARGS` if `src` is a directory.
+func (p *DirectoryWithCtxInterface) Link(ctx_ _bindings.Context, src string, dstParentToken _zx.Event, dst string) (DirectoryLinkResult, error) {
+ req_ := &directoryWithCtxLinkRequest{
+ Src: src,
+ DstParentToken: dstParentToken,
+ Dst: dst,
+ }
+ resp_ := &directoryWithCtxLinkResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryLinkOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Watches a directory, monitoring events for children being added or
+// removed on the server end of the `watcher` channel.
+//
+// Mask specifies a bit mask of events to observe.
+//
+// This method requires the [`Rights.ENUMERATE`] right. If this right is
+// absent, `watcher` will be closed with a `ZX_ERR_ACCESS_DENIED` epitaph.
+func (p *DirectoryWithCtxInterface) Watch(ctx_ _bindings.Context, mask DirectoryWatchMask, options DirectoryWatchOptions, watcher DirectoryWatcherWithCtxInterfaceRequest) error {
+ req_ := &directoryWithCtxWatchRequest{
+ Mask: mask,
+ Options: options,
+ Watcher: watcher,
+ }
+ err_ := ((*_bindings.ChannelProxy)(p)).Send(DirectoryWatchOrdinal, req_)
+ return err_
+}
+
+// A [`fuchsia.io2/Node`] that is capable of containing other nodes.
+type DirectoryWithCtx interface {
+ // Creates another connection to the same node.
+ //
+ // + `options` options applicable to both `Open` and `Reopen`,
+ // including negotiating protocol and restricting rights.
+ // See [`fuchsia.io2/ConnectionOptions`].
+ // + `object_request` is the server end of a channel created for the new
+ // connection. The caller may proceed to send messages on the
+ // corresponding client end right away.
+ //
+ // For files, the cloned connection and the original connection have
+ // independent seek offsets.
+ Reopen(ctx_ _bindings.Context, options ConnectionOptions, objectRequest _zx.Channel) error
+ // Terminates the connection to the node.
+ //
+ // After calling `Close`, the client must not send any other requests.
+ // The result of `Close` arrives as an epitaph, where the channel is closed
+ // by the server upon processing this operation.
+ //
+ // Closing the client end of the channel should be semantically equivalent
+ // to calling `Close` without monitoring the status epitaph.
+ //
+ // This method does not require any rights.
+ Close(ctx_ _bindings.Context) error
+ // Returns extra connection information and auxiliary handles.
+ //
+ // + `query` specifies the fields in `ConnectionInfo` that the caller is
+ // interested in.
+ // - `info` see [`fuchsia.io2/ConnectionInfo`] for details on the fields.
+ //
+ // When all known bits in `query` are set, the return value matches
+ // the one from [`OnConnectionInfo`], as if the caller requested that event
+ // using [`ConnectionFlags.GET_CONNECTION_INFO`].
+ //
+ // If the `Describe` operation fails, the connection is closed with the
+ // associated error.
+ //
+ // This method does not require any rights.
+ Describe(ctx_ _bindings.Context, query ConnectionInfoQuery) (ConnectionInfo, error)
+ // An event produced eagerly by the server if requested by
+ // [`ConnectionFlags.GET_CONNECTION_INFO`]. This event will be the
+ // first message from the server, and is sent exactly once.
+ //
+ // - `info` See [`fuchsia.io2/ConnectionInfo`] for details on the fields.
+ // All members should be present.
+ //
+ // Different from [`fuchsia.io/OnOpen`], an error during open/reopen is
+ // always manifested as an epitaph.
+ // Acquires a token which can be used to identify this connection at
+ // a later point in time.
+ //
+ // This method does not require any rights. Note that the token identifies
+ // the connection, hence carries the rights information on this connection.
+ GetToken(ctx_ _bindings.Context) (NodeGetTokenResult, error)
+ // Acquires information about the node.
+ //
+ // The attributes of a node should be stable, independent of the
+ // specific protocol used to access it.
+ //
+ // + `query` a bit-mask specifying which attributes to fetch. The server
+ // should not return more than necessary.
+ // - `attributes` the returned attributes.
+ //
+ // This method requires the [`Rights.GET_ATTRIBUTES`] right.
+ GetAttributes(ctx_ _bindings.Context, query NodeAttributesQuery) (NodeGetAttributesResult, error)
+ // Updates information about the node.
+ //
+ // + `attributes` the presence of a table field in `attributes` indicates
+ // the intent to update the corresponding attribute.
+ //
+ // This method requires the [`Rights.UPDATE_ATTRIBUTES`] right.
+ UpdateAttributes(ctx_ _bindings.Context, attributes NodeAttributes) (NodeUpdateAttributesResult, error)
+ // Synchronizes updates to the node to the underlying media, if it exists.
+ //
+ // This method will return when the filesystem server has flushed the
+ // relevant updates to the underlying media, but does not guarantee the
+ // underlying media has persisted the information, nor that any information
+ // is committed to hardware. Clients may use `Sync` to ensure ordering
+ // between operations.
+ //
+ // This method does not require any rights.
+ Sync(ctx_ _bindings.Context) (NodeSyncResult, error)
+ // Opens or creates a new node relative to this directory node.
+ //
+ // + `path` identifies the node to open.
+ // If `path` contains multiple segments, then the directory is traversed,
+ // one segment at a time, relative to the directory represented by this
+ // connection.
+ // See [`fuchsia.io2/Path`] for what constitutes a valid path.
+ // To open another connection to the current directory, use
+ // [`fuchsia.io2/Node.Reopen`] instead.
+ // + `mode` controls whether to open existing/create new etc.
+ // + `options` additional options applicable to both `Open` and `Reopen`,
+ // including negotiating protocol and restricting rights.
+ // See [`fuchsia.io2/ConnectionOptions`].
+ // + `object_request` is the server end of a channel created for the new
+ // connection. The caller may proceed to send messages on the
+ // corresponding client end right away.
+ //
+ // This method requires the following rights on the current connection:
+ //
+ // * [`Rights.ENUMERATE`]
+ // * [`Rights.TRAVERSE`]
+ //
+ // Errors are presented as an epitaph on the `object_request` channel.
+ //
+ // * error `ZX_ERR_ACCESS_DENIED` if the requested rights exceeds
+ // what is allowed.
+ // * error `ZX_ERR_BAD_PATH` if `path` is invalid.
+ Open(ctx_ _bindings.Context, path string, mode OpenMode, options ConnectionOptions, objectRequest _zx.Channel) error
+ // Adds a new inotify filter for an object relative to this directory object.
+ //
+ // + 'filter` is a mask of different inotify events that need to be watched by the server
+ // for a specific file/directory.
+ //
+ // + `path` may contain multiple segments, separated by "/" characters,
+ // and should never be empty; i.e., "" is an invalid path. Paths should not contain
+ // a leading "/".
+ //
+ // +`watch_descriptor` is client assigned value to identify a filter.
+ // Server shouldn't trust the client-assigned watch_descriptor. They should just send it
+ // back to the client in the socket.
+ // This value is not used by server, but it is returned back as part of InotifyEvent,
+ // to help the client correlate filter with events on this filter.
+ //
+ // + `socket` is shared between different filter objects i.e every new filter will
+ // have a different server end of the socket and there will be a single client end per
+ // inotify instance on inotify init.
+ //
+ // + `controller` is the server end of a channel and is per filter in the vnode so that
+ // we can remove the specific inotify filter when the controller is closed by the server
+ // or the client.
+ //
+ // Errors are presented as an epitaph on the `controller` channel.
+ // * error `ZX_ERR_ACCESS_DENIED` if the requested rights exceeds
+ // what is allowed.
+ // * error `ZX_ERR_BAD_PATH` if `path` is invalid.
+ AddInotifyFilter(ctx_ _bindings.Context, path string, filter InotifyWatchMask, watchDescriptor uint32, socket _zx.Socket) error
+ // Removes a child node from the this directory's list of entries.
+ //
+ // Note: this does not guarantee that the underlying object is destroyed.
+ // Although the link will be removed from the containing directory,
+ // objects with multiple references (such as files which are still open)
+ // will not actually be destroyed until all references are closed.
+ //
+ // * error `ZX_ERR_ACCESS_DENIED` if the connection does not have
+ // [`Rights.WRITE_BYTES`].
+ // * error `ZX_ERR_NOT_SUPPORTED` if the underlying filesystem does not
+ // support writing.
+ // * error `ZX_ERR_BAD_PATH` if `name` is invalid.
+ // * error `ZX_ERR_NOT_EMPTY` if `name` refers to a non-empty directory.
+ // * error `ZX_ERR_UNAVAILABLE` if `name` refers to a mount point,
+ // containing a remote channel.
+ // * error `ZX_ERR_NOT_DIR` if the options requested a directory but something other than a
+ // directory was found.
+ //
+ // Other errors may be returned for filesystem-specific reasons.
+ //
+ // This method requires the following rights:
+ //
+ // * [`Rights.ENUMERATE`]
+ // * [`Rights.MODIFY_DIRECTORY`]
+ Unlink(ctx_ _bindings.Context, path string) (DirectoryUnlinkResult, error)
+ Unlink2(ctx_ _bindings.Context, name string, options UnlinkOptions) (DirectoryUnlink2Result, error)
+ // Initiates a directory listing operation over the input channel,
+ // starting at seek offset 0.
+ //
+ // This method requires the [`Rights.ENUMERATE`] right. If this right is
+ // absent, `iterator` will be closed with a `ZX_ERR_ACCESS_DENIED` epitaph.
+ Enumerate(ctx_ _bindings.Context, options DirectoryEnumerateOptions, iterator DirectoryIteratorWithCtxInterfaceRequest) error
+ // Renames a node named `src` to the name `dst`, in a directory represented
+ // by `dst_parent_token`.
+ //
+ // `src` and `dst` must be valid node names.
+ // See [`fuchsia.io2/Name`] for what constitutes a valid name.
+ //
+ // This method requires the following rights on both the current
+ // connection, and the connection identified by `dst_parent_token`:
+ //
+ // * [`Rights.ENUMERATE`]
+ // * [`Rights.MODIFY_DIRECTORY`]
+ //
+ // * error `ZX_ERR_INVALID_ARGS` if `src` or `dst` is invalid.
+ Rename(ctx_ _bindings.Context, src string, dstParentToken _zx.Event, dst string) (DirectoryRenameResult, error)
+ // Creates a link to a node named `src` by the name `dst`,
+ // in a directory represented by `dst_parent_token`.
+ //
+ // Directories cannot be linked, to prevent reference cycles.
+ //
+ // `src` and `dst` must be valid node names.
+ // See [`fuchsia.io2/Name`] for what constitutes a valid name.
+ //
+ // This method requires the following rights on both the current
+ // connection, and the connection identified by `dst_parent_token`:
+ //
+ // * [`Rights.ENUMERATE`]
+ // * [`Rights.MODIFY_DIRECTORY`]
+ //
+ // * error `ZX_ERR_INVALID_ARGS` if `src` or `dst` is invalid.
+ // * error `ZX_ERR_INVALID_ARGS` if `src` is a directory.
+ Link(ctx_ _bindings.Context, src string, dstParentToken _zx.Event, dst string) (DirectoryLinkResult, error)
+ // Watches a directory, monitoring events for children being added or
+ // removed on the server end of the `watcher` channel.
+ //
+ // Mask specifies a bit mask of events to observe.
+ //
+ // This method requires the [`Rights.ENUMERATE`] right. If this right is
+ // absent, `watcher` will be closed with a `ZX_ERR_ACCESS_DENIED` epitaph.
+ Watch(ctx_ _bindings.Context, mask DirectoryWatchMask, options DirectoryWatchOptions, watcher DirectoryWatcherWithCtxInterfaceRequest) error
+}
+
+type DirectoryWithCtxTransitionalBase struct{}
+
+func (_ *DirectoryWithCtxTransitionalBase) Unlink2(ctx_ _bindings.Context, name string, options UnlinkOptions) (DirectoryUnlink2Result, error) {
+ panic("Not Implemented")
+}
+
+type DirectoryWithCtxInterfaceRequest _bindings.InterfaceRequest
+
+func NewDirectoryWithCtxInterfaceRequest() (DirectoryWithCtxInterfaceRequest, *DirectoryWithCtxInterface, error) {
+ req, cli, err := _bindings.NewInterfaceRequest()
+ return DirectoryWithCtxInterfaceRequest(req), (*DirectoryWithCtxInterface)(cli), err
+}
+
+type DirectoryWithCtxStub struct {
+ Impl DirectoryWithCtx
+}
+
+func (s_ *DirectoryWithCtxStub) Dispatch(args_ _bindings.DispatchArgs) (_bindings.Message, bool, error) {
+ switch args_.Ordinal {
+ case DirectoryReopenOrdinal:
+ in_ := directoryWithCtxReopenRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ err_ := s_.Impl.Reopen(args_.Ctx, in_.Options, in_.ObjectRequest)
+ return nil, false, err_
+ case DirectoryCloseOrdinal:
+ err_ := s_.Impl.Close(args_.Ctx)
+ return nil, false, err_
+ case DirectoryDescribeOrdinal:
+ in_ := directoryWithCtxDescribeRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ info, err_ := s_.Impl.Describe(args_.Ctx, in_.Query)
+ out_ := directoryWithCtxDescribeResponse{}
+ out_.Info = info
+ return &out_, true, err_
+ case DirectoryGetTokenOrdinal:
+ result, err_ := s_.Impl.GetToken(args_.Ctx)
+ out_ := directoryWithCtxGetTokenResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DirectoryGetAttributesOrdinal:
+ in_ := directoryWithCtxGetAttributesRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.GetAttributes(args_.Ctx, in_.Query)
+ out_ := directoryWithCtxGetAttributesResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DirectoryUpdateAttributesOrdinal:
+ in_ := directoryWithCtxUpdateAttributesRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.UpdateAttributes(args_.Ctx, in_.Attributes)
+ out_ := directoryWithCtxUpdateAttributesResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DirectorySyncOrdinal:
+ result, err_ := s_.Impl.Sync(args_.Ctx)
+ out_ := directoryWithCtxSyncResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DirectoryOpenOrdinal:
+ in_ := directoryWithCtxOpenRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ err_ := s_.Impl.Open(args_.Ctx, in_.Path, in_.Mode, in_.Options, in_.ObjectRequest)
+ return nil, false, err_
+ case DirectoryAddInotifyFilterOrdinal:
+ in_ := directoryWithCtxAddInotifyFilterRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ err_ := s_.Impl.AddInotifyFilter(args_.Ctx, in_.Path, in_.Filter, in_.WatchDescriptor, in_.Socket)
+ return nil, true, err_
+ case DirectoryUnlinkOrdinal:
+ in_ := directoryWithCtxUnlinkRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.Unlink(args_.Ctx, in_.Path)
+ out_ := directoryWithCtxUnlinkResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DirectoryUnlink2Ordinal:
+ in_ := directoryWithCtxUnlink2Request{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.Unlink2(args_.Ctx, in_.Name, in_.Options)
+ out_ := directoryWithCtxUnlink2Response{}
+ out_.Result = result
+ return &out_, true, err_
+ case DirectoryEnumerateOrdinal:
+ in_ := directoryWithCtxEnumerateRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ err_ := s_.Impl.Enumerate(args_.Ctx, in_.Options, in_.Iterator)
+ return nil, false, err_
+ case DirectoryRenameOrdinal:
+ in_ := directoryWithCtxRenameRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.Rename(args_.Ctx, in_.Src, in_.DstParentToken, in_.Dst)
+ out_ := directoryWithCtxRenameResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DirectoryLinkOrdinal:
+ in_ := directoryWithCtxLinkRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.Link(args_.Ctx, in_.Src, in_.DstParentToken, in_.Dst)
+ out_ := directoryWithCtxLinkResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DirectoryWatchOrdinal:
+ in_ := directoryWithCtxWatchRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ err_ := s_.Impl.Watch(args_.Ctx, in_.Mask, in_.Options, in_.Watcher)
+ return nil, false, err_
+ }
+ return nil, false, _bindings.ErrUnknownOrdinal
+}
+
+type DirectoryEventProxy _bindings.ChannelProxy
+
+func (p *DirectoryEventProxy) OnConnectionInfo(info ConnectionInfo) error {
+ event_ := &directoryWithCtxOnConnectionInfoResponse{
+ Info: info,
+ }
+ return ((*_bindings.ChannelProxy)(p)).Send(DirectoryOnConnectionInfoOrdinal, event_)
+}
+
+const (
+ DirectoryIteratorGetNextOrdinal uint64 = 0x5d2068db7393845c
+)
+
+type DirectoryIteratorWithCtxInterface _bindings.ChannelProxy
+
+// Reads a collection of variably sized directory entries into a buffer.
+//
+// The number of entries in a directory may be very large: akin to
+// calling read multiple times on a file, directories have a seek
+// offset which is updated on subsequent calls to `Enumerate`.
+// The caller should always use a receiving buffer size as large as the
+// maximum channel limit.
+//
+// When the end of iteration is reached, the returned `entries` vector
+// will be empty.
+//
+// This method does not require any rights, as the rights are checked
+// in the [`Directory.Enumerate`] call.
+func (p *DirectoryIteratorWithCtxInterface) GetNext(ctx_ _bindings.Context) (DirectoryIteratorGetNextResult, error) {
+ var req_ _bindings.Message
+ resp_ := &directoryIteratorWithCtxGetNextResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryIteratorGetNextOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+type DirectoryIteratorWithCtx interface {
+ // Reads a collection of variably sized directory entries into a buffer.
+ //
+ // The number of entries in a directory may be very large: akin to
+ // calling read multiple times on a file, directories have a seek
+ // offset which is updated on subsequent calls to `Enumerate`.
+ // The caller should always use a receiving buffer size as large as the
+ // maximum channel limit.
+ //
+ // When the end of iteration is reached, the returned `entries` vector
+ // will be empty.
+ //
+ // This method does not require any rights, as the rights are checked
+ // in the [`Directory.Enumerate`] call.
+ GetNext(ctx_ _bindings.Context) (DirectoryIteratorGetNextResult, error)
+}
+
+type DirectoryIteratorWithCtxTransitionalBase struct{}
+
+type DirectoryIteratorWithCtxInterfaceRequest _bindings.InterfaceRequest
+
+func NewDirectoryIteratorWithCtxInterfaceRequest() (DirectoryIteratorWithCtxInterfaceRequest, *DirectoryIteratorWithCtxInterface, error) {
+ req, cli, err := _bindings.NewInterfaceRequest()
+ return DirectoryIteratorWithCtxInterfaceRequest(req), (*DirectoryIteratorWithCtxInterface)(cli), err
+}
+
+type DirectoryIteratorWithCtxStub struct {
+ Impl DirectoryIteratorWithCtx
+}
+
+func (s_ *DirectoryIteratorWithCtxStub) Dispatch(args_ _bindings.DispatchArgs) (_bindings.Message, bool, error) {
+ switch args_.Ordinal {
+ case DirectoryIteratorGetNextOrdinal:
+ result, err_ := s_.Impl.GetNext(args_.Ctx)
+ out_ := directoryIteratorWithCtxGetNextResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ }
+ return nil, false, _bindings.ErrUnknownOrdinal
+}
+
+type DirectoryIteratorEventProxy _bindings.ChannelProxy
+
+const (
+ DirectoryWatcherGetNextOrdinal uint64 = 0x74de3b9a6548cb77
+)
+
+type DirectoryWatcherWithCtxInterface _bindings.ChannelProxy
+
+// A hanging get to obtain the next batch of events.
+//
+// The caller should always use a receiving buffer size as large as the
+// maximum channel limit.
+//
+// Clients should attempt to maintain one in-flight `GetNext` call as much
+// as possible. If `GetNext` is not constantly polled, the filesystem
+// server might hit an upper limit on the number of buffered events,
+// resulting in dropping. Should this happen, the connection will be closed
+// with a `ZX_ERR_IO_OVERRUN` epitaph.
+//
+// When the watched directory is deleted, this connection will be closed
+// with a `ZX_ERR_UNAVAILABLE` epitaph.
+// When the filesystem server is dying, this connection will be closed
+// with a `ZX_ERR_PEER_CLOSED` epitaph.
+func (p *DirectoryWatcherWithCtxInterface) GetNext(ctx_ _bindings.Context) ([]DirectoryWatchedEvent, error) {
+ var req_ _bindings.Message
+ resp_ := &directoryWatcherWithCtxGetNextResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DirectoryWatcherGetNextOrdinal, req_, resp_)
+ return resp_.Events, err_
+}
+
+// DirectoryWatcher transmits messages from a filesystem server about
+// events happening in the filesystem. Clients can register new watchers
+// using the [`fuchsia.io2/Directory.Watch`] method, where they can
+// filter which events they want to receive notifications for.
+type DirectoryWatcherWithCtx interface {
+ // A hanging get to obtain the next batch of events.
+ //
+ // The caller should always use a receiving buffer size as large as the
+ // maximum channel limit.
+ //
+ // Clients should attempt to maintain one in-flight `GetNext` call as much
+ // as possible. If `GetNext` is not constantly polled, the filesystem
+ // server might hit an upper limit on the number of buffered events,
+ // resulting in dropping. Should this happen, the connection will be closed
+ // with a `ZX_ERR_IO_OVERRUN` epitaph.
+ //
+ // When the watched directory is deleted, this connection will be closed
+ // with a `ZX_ERR_UNAVAILABLE` epitaph.
+ // When the filesystem server is dying, this connection will be closed
+ // with a `ZX_ERR_PEER_CLOSED` epitaph.
+ GetNext(ctx_ _bindings.Context) ([]DirectoryWatchedEvent, error)
+}
+
+type DirectoryWatcherWithCtxTransitionalBase struct{}
+
+type DirectoryWatcherWithCtxInterfaceRequest _bindings.InterfaceRequest
+
+func NewDirectoryWatcherWithCtxInterfaceRequest() (DirectoryWatcherWithCtxInterfaceRequest, *DirectoryWatcherWithCtxInterface, error) {
+ req, cli, err := _bindings.NewInterfaceRequest()
+ return DirectoryWatcherWithCtxInterfaceRequest(req), (*DirectoryWatcherWithCtxInterface)(cli), err
+}
+
+type DirectoryWatcherWithCtxStub struct {
+ Impl DirectoryWatcherWithCtx
+}
+
+func (s_ *DirectoryWatcherWithCtxStub) Dispatch(args_ _bindings.DispatchArgs) (_bindings.Message, bool, error) {
+ switch args_.Ordinal {
+ case DirectoryWatcherGetNextOrdinal:
+ events, err_ := s_.Impl.GetNext(args_.Ctx)
+ out_ := directoryWatcherWithCtxGetNextResponse{}
+ out_.Events = events
+ return &out_, true, err_
+ }
+ return nil, false, _bindings.ErrUnknownOrdinal
+}
+
+type DirectoryWatcherEventProxy _bindings.ChannelProxy
+
+const (
+ FileReopenOrdinal uint64 = 0x74170eb73121c69f
+ FileCloseOrdinal uint64 = 0x2dec2818386e5d68
+ FileDescribeOrdinal uint64 = 0x4aac591060c65c2f
+ FileOnConnectionInfoOrdinal uint64 = 0x6637fc43ceeaa437
+ FileGetTokenOrdinal uint64 = 0x4f2b25c934c5d8e4
+ FileGetAttributesOrdinal uint64 = 0x675e1e73d076d1e4
+ FileUpdateAttributesOrdinal uint64 = 0x7d59d73f59ba21b5
+ FileSyncOrdinal uint64 = 0xac3a8c1a2e063ad
+ FileAdvisoryLockOrdinal uint64 = 0x6358e94c468026fa
+ FileSeekOrdinal uint64 = 0x6cd7bdfcc294f64e
+ FileReadOrdinal uint64 = 0x6ab0b2e9f1e01f70
+ FileWriteOrdinal uint64 = 0x17872fc3d6725e01
+ FileReadAtOrdinal uint64 = 0x774898cce31c78aa
+ FileWriteAtOrdinal uint64 = 0x7b2af74fa0191292
+ FileResizeOrdinal uint64 = 0x57e9585fedaeaa1c
+ FileGetMemRangeOrdinal uint64 = 0x53842973559bd6ab
+)
+
+type FileWithCtxInterface _bindings.ChannelProxy
+
+// Creates another connection to the same node.
+//
+// + `options` options applicable to both `Open` and `Reopen`,
+// including negotiating protocol and restricting rights.
+// See [`fuchsia.io2/ConnectionOptions`].
+// + `object_request` is the server end of a channel created for the new
+// connection. The caller may proceed to send messages on the
+// corresponding client end right away.
+//
+// For files, the cloned connection and the original connection have
+// independent seek offsets.
+func (p *FileWithCtxInterface) Reopen(ctx_ _bindings.Context, options ConnectionOptions, objectRequest _zx.Channel) error {
+ req_ := &fileWithCtxReopenRequest{
+ Options: options,
+ ObjectRequest: objectRequest,
+ }
+ err_ := ((*_bindings.ChannelProxy)(p)).Send(FileReopenOrdinal, req_)
+ return err_
+}
+
+// Terminates the connection to the node.
+//
+// After calling `Close`, the client must not send any other requests.
+// The result of `Close` arrives as an epitaph, where the channel is closed
+// by the server upon processing this operation.
+//
+// Closing the client end of the channel should be semantically equivalent
+// to calling `Close` without monitoring the status epitaph.
+//
+// This method does not require any rights.
+func (p *FileWithCtxInterface) Close(ctx_ _bindings.Context) error {
+ var req_ _bindings.Message
+ err_ := ((*_bindings.ChannelProxy)(p)).Send(FileCloseOrdinal, req_)
+ return err_
+}
+
+// Returns extra connection information and auxiliary handles.
+//
+// + `query` specifies the fields in `ConnectionInfo` that the caller is
+// interested in.
+// - `info` see [`fuchsia.io2/ConnectionInfo`] for details on the fields.
+//
+// When all known bits in `query` are set, the return value matches
+// the one from [`OnConnectionInfo`], as if the caller requested that event
+// using [`ConnectionFlags.GET_CONNECTION_INFO`].
+//
+// If the `Describe` operation fails, the connection is closed with the
+// associated error.
+//
+// This method does not require any rights.
+func (p *FileWithCtxInterface) Describe(ctx_ _bindings.Context, query ConnectionInfoQuery) (ConnectionInfo, error) {
+ req_ := &fileWithCtxDescribeRequest{
+ Query: query,
+ }
+ resp_ := &fileWithCtxDescribeResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(FileDescribeOrdinal, req_, resp_)
+ return resp_.Info, err_
+}
+
+// An event produced eagerly by the server if requested by
+// [`ConnectionFlags.GET_CONNECTION_INFO`]. This event will be the
+// first message from the server, and is sent exactly once.
+//
+// - `info` See [`fuchsia.io2/ConnectionInfo`] for details on the fields.
+// All members should be present.
+//
+// Different from [`fuchsia.io/OnOpen`], an error during open/reopen is
+// always manifested as an epitaph.
+func (p *FileWithCtxInterface) ExpectOnConnectionInfo(ctx_ _bindings.Context) (ConnectionInfo, error) {
+ resp_ := &fileWithCtxOnConnectionInfoResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Recv(FileOnConnectionInfoOrdinal, resp_)
+ return resp_.Info, err_
+}
+
+// Acquires a token which can be used to identify this connection at
+// a later point in time.
+//
+// This method does not require any rights. Note that the token identifies
+// the connection, hence carries the rights information on this connection.
+func (p *FileWithCtxInterface) GetToken(ctx_ _bindings.Context) (NodeGetTokenResult, error) {
+ var req_ _bindings.Message
+ resp_ := &fileWithCtxGetTokenResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(FileGetTokenOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Acquires information about the node.
+//
+// The attributes of a node should be stable, independent of the
+// specific protocol used to access it.
+//
+// + `query` a bit-mask specifying which attributes to fetch. The server
+// should not return more than necessary.
+// - `attributes` the returned attributes.
+//
+// This method requires the [`Rights.GET_ATTRIBUTES`] right.
+func (p *FileWithCtxInterface) GetAttributes(ctx_ _bindings.Context, query NodeAttributesQuery) (NodeGetAttributesResult, error) {
+ req_ := &fileWithCtxGetAttributesRequest{
+ Query: query,
+ }
+ resp_ := &fileWithCtxGetAttributesResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(FileGetAttributesOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Updates information about the node.
+//
+// + `attributes` the presence of a table field in `attributes` indicates
+// the intent to update the corresponding attribute.
+//
+// This method requires the [`Rights.UPDATE_ATTRIBUTES`] right.
+func (p *FileWithCtxInterface) UpdateAttributes(ctx_ _bindings.Context, attributes NodeAttributes) (NodeUpdateAttributesResult, error) {
+ req_ := &fileWithCtxUpdateAttributesRequest{
+ Attributes: attributes,
+ }
+ resp_ := &fileWithCtxUpdateAttributesResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(FileUpdateAttributesOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Synchronizes updates to the node to the underlying media, if it exists.
+//
+// This method will return when the filesystem server has flushed the
+// relevant updates to the underlying media, but does not guarantee the
+// underlying media has persisted the information, nor that any information
+// is committed to hardware. Clients may use `Sync` to ensure ordering
+// between operations.
+//
+// This method does not require any rights.
+func (p *FileWithCtxInterface) Sync(ctx_ _bindings.Context) (NodeSyncResult, error) {
+ var req_ _bindings.Message
+ resp_ := &fileWithCtxSyncResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(FileSyncOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Acquires an advisory lock on the underlying file.
+//
+// The lock lasts until either this connection is closed or
+// this method is called with |AdvisoryLockType.UNLOCK| to release the lock
+// explicitly.
+//
+// Advisory locks are purely advisory. They do not prevent actual read or
+// write operations from occurring on the file, either through this
+// connection or through other connections.
+//
+// This method requires the following rights:
+//
+// * [`Rights.READ_BYTES`] if `request.type` is [`AdvisoryLockType.READ`].
+// * [`Rights.WRITE_BYTES`] if `request.type` is
+// [`AdvisoryLockType.WRITE`].
+//
+// # Errors
+//
+// * `ZX_ERR_BAD_STATE` The specified type of lock cannot be acquired. For
+// example, another connection might hold a conflicting lock type.
+// * `ZX_ERR_NOT_SUPPORTED` This file does not support advisory locking.
+// * `ZX_ERR_ACCESS_DENIED` This connection does not have sufficient rights
+// to acquire the given type of lock.
+func (p *FileWithCtxInterface) AdvisoryLock(ctx_ _bindings.Context, request AdvisoryLockRequest) (AdvisoryLockingAdvisoryLockResult, error) {
+ req_ := &fileWithCtxAdvisoryLockRequest{
+ Request: request,
+ }
+ resp_ := &fileWithCtxAdvisoryLockResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(FileAdvisoryLockOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Moves the offset at which the next invocation of [`Read`] or [`Write`]
+// will occur. The seek offset is specific to each file connection.
+//
+// + request `origin` the reference point where `offset` will be based on.
+// + request `offset` the number of bytes to seek.
+// - response `offset_from_start` the adjusted seek offset, from the start
+// of the file.
+//
+// This method does not require any rights.
+func (p *FileWithCtxInterface) Seek(ctx_ _bindings.Context, origin SeekOrigin, offset int64) (FileSeekResult, error) {
+ req_ := &fileWithCtxSeekRequest{
+ Origin: origin,
+ Offset: offset,
+ }
+ resp_ := &fileWithCtxSeekResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(FileSeekOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Reads up to 'count' bytes at the seek offset.
+// The seek offset is moved forward by the number of bytes read.
+//
+// ## Invariants
+//
+// * The returned `data.length` will never be greater than `count`.
+// * If `data.length` is less than `count`, it means that the seek offset
+// has reached the end of file as part of this operation.
+// * If `data.length` is zero while `count` is not, it means that the
+// seek offset is already at or beyond the end of file, and no data could
+// be read.
+// * If `count` is zero, the server should perform all the checks ensuring
+// read access without actually read anything, and return an empty
+// `data` vector.
+//
+// This method requires the [`Rights.READ_BYTES`] right.
+func (p *FileWithCtxInterface) Read(ctx_ _bindings.Context, count uint64) (FileReadResult, error) {
+ req_ := &fileWithCtxReadRequest{
+ Count: count,
+ }
+ resp_ := &fileWithCtxReadResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(FileReadOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Writes data at the seek offset.
+// The seek offset is moved forward by the number of bytes written.
+// If the file is in append mode, the seek offset is first set to the end
+// of the file, followed by the write, in one atomic step.
+//
+// The file size may grow if the seek offset plus `data.length` is beyond
+// the current end of file.
+//
+// + request `data` the byte buffer to write to the file.
+// - response `actual_count` the number of bytes written.
+//
+// ## Invariants
+//
+// * The returned `actual_count` will never be greater than `data.length`.
+// * If the server is unable to write all the data due to e.g. not enough
+// space, `actual_count` may be less than `data.length`.
+// * If `data.length` is zero, the server should perform all the checks
+// ensuring write access without mutating the file. The seek offset
+// is still updated if in append mode.
+//
+// This method requires the [`Rights.WRITE_BYTES`] right.
+func (p *FileWithCtxInterface) Write(ctx_ _bindings.Context, data []uint8) (FileWriteResult, error) {
+ req_ := &fileWithCtxWriteRequest{
+ Data: data,
+ }
+ resp_ := &fileWithCtxWriteResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(FileWriteOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Reads up to 'count' bytes at the provided offset.
+// Does not affect the seek offset.
+//
+// ## Invariants
+//
+// * The returned `data.length` will never be greater than `count`.
+// * If `data.length` is less than `count`, it means that `ReadAt` has hit
+// the end of file as part of this operation.
+// * If `data.length` is zero while `count` is not, it means that `offset`
+// is at or past the end of file, and no data can be read.
+// * If `count` is zero, the server should perform all the checks ensuring
+// read access without actually reading anything, and return an empty
+// `data` vector.
+//
+// This method requires the [`Rights.READ_BYTES`] right.
+func (p *FileWithCtxInterface) ReadAt(ctx_ _bindings.Context, count uint64, offset uint64) (FileReadAtResult, error) {
+ req_ := &fileWithCtxReadAtRequest{
+ Count: count,
+ Offset: offset,
+ }
+ resp_ := &fileWithCtxReadAtResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(FileReadAtOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Writes data at the provided offset.
+// Does not affect the seek offset.
+//
+// The file size may grow if `offset` plus `data.length` is past the
+// current end of file.
+//
+// + request `data` the byte buffer to write to the file.
+// + request `offset` the offset from start of the file to begin writing.
+// - response `actual_count` the number of bytes written.
+//
+// ## Invariants
+//
+// * The returned `actual_count` will never be greater than `data.length`.
+// * If the server is unable to write all the data due to e.g. not enough
+// space, `actual_count` may be less than `data.length`.
+// * If `data.length` is zero, the server should perform all the checks
+// ensuring write access without mutating the file.
+//
+// This method requires the [`Rights.WRITE_BYTES`] right.
+func (p *FileWithCtxInterface) WriteAt(ctx_ _bindings.Context, data []uint8, offset uint64) (FileWriteAtResult, error) {
+ req_ := &fileWithCtxWriteAtRequest{
+ Data: data,
+ Offset: offset,
+ }
+ resp_ := &fileWithCtxWriteAtResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(FileWriteAtOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Shrinks or grows the file size to 'length' bytes.
+//
+// If file size is reduced by this operation, the extra trailing data'
+// is discarded.
+// If file size is increased by this operation, the extended area appears
+// as if it was zeroed.
+//
+// This method requires the [`Rights.WRITE_BYTES`] right.
+func (p *FileWithCtxInterface) Resize(ctx_ _bindings.Context, length uint64) (FileResizeResult, error) {
+ req_ := &fileWithCtxResizeRequest{
+ Length: length,
+ }
+ resp_ := &fileWithCtxResizeResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(FileResizeOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Acquires a [`fuchsia.mem/Range`] representing this file, if
+// there is one, with the requested access rights.
+//
+// + request `flags` a [`VmoFlags`] indicating the desired mode of access.
+// - response `buffer` the requested [`fuchsia.mem/Range`].
+// * error a [`zx.status`] value indicating the failure.
+//
+// This method requires the following rights:
+//
+// * [`Rights.READ_BYTES`] if `flags` includes [`VmoFlags.READ`].
+// * [`Rights.WRITE_BYTES`] if `flags` includes [`VmoFlags.WRITE`].
+// * [`Rights.EXECUTE`] if `flags` includes [`VmoFlags.EXECUTE`].
+func (p *FileWithCtxInterface) GetMemRange(ctx_ _bindings.Context, flags VmoFlags) (FileGetMemRangeResult, error) {
+ req_ := &fileWithCtxGetMemRangeRequest{
+ Flags: flags,
+ }
+ resp_ := &fileWithCtxGetMemRangeResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(FileGetMemRangeOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// A [`fuchsia.io2/Node`] which contains a sequence of bytes of definite
+// length.
+type FileWithCtx interface {
+ // Creates another connection to the same node.
+ //
+ // + `options` options applicable to both `Open` and `Reopen`,
+ // including negotiating protocol and restricting rights.
+ // See [`fuchsia.io2/ConnectionOptions`].
+ // + `object_request` is the server end of a channel created for the new
+ // connection. The caller may proceed to send messages on the
+ // corresponding client end right away.
+ //
+ // For files, the cloned connection and the original connection have
+ // independent seek offsets.
+ Reopen(ctx_ _bindings.Context, options ConnectionOptions, objectRequest _zx.Channel) error
+ // Terminates the connection to the node.
+ //
+ // After calling `Close`, the client must not send any other requests.
+ // The result of `Close` arrives as an epitaph, where the channel is closed
+ // by the server upon processing this operation.
+ //
+ // Closing the client end of the channel should be semantically equivalent
+ // to calling `Close` without monitoring the status epitaph.
+ //
+ // This method does not require any rights.
+ Close(ctx_ _bindings.Context) error
+ // Returns extra connection information and auxiliary handles.
+ //
+ // + `query` specifies the fields in `ConnectionInfo` that the caller is
+ // interested in.
+ // - `info` see [`fuchsia.io2/ConnectionInfo`] for details on the fields.
+ //
+ // When all known bits in `query` are set, the return value matches
+ // the one from [`OnConnectionInfo`], as if the caller requested that event
+ // using [`ConnectionFlags.GET_CONNECTION_INFO`].
+ //
+ // If the `Describe` operation fails, the connection is closed with the
+ // associated error.
+ //
+ // This method does not require any rights.
+ Describe(ctx_ _bindings.Context, query ConnectionInfoQuery) (ConnectionInfo, error)
+ // An event produced eagerly by the server if requested by
+ // [`ConnectionFlags.GET_CONNECTION_INFO`]. This event will be the
+ // first message from the server, and is sent exactly once.
+ //
+ // - `info` See [`fuchsia.io2/ConnectionInfo`] for details on the fields.
+ // All members should be present.
+ //
+ // Different from [`fuchsia.io/OnOpen`], an error during open/reopen is
+ // always manifested as an epitaph.
+ // Acquires a token which can be used to identify this connection at
+ // a later point in time.
+ //
+ // This method does not require any rights. Note that the token identifies
+ // the connection, hence carries the rights information on this connection.
+ GetToken(ctx_ _bindings.Context) (NodeGetTokenResult, error)
+ // Acquires information about the node.
+ //
+ // The attributes of a node should be stable, independent of the
+ // specific protocol used to access it.
+ //
+ // + `query` a bit-mask specifying which attributes to fetch. The server
+ // should not return more than necessary.
+ // - `attributes` the returned attributes.
+ //
+ // This method requires the [`Rights.GET_ATTRIBUTES`] right.
+ GetAttributes(ctx_ _bindings.Context, query NodeAttributesQuery) (NodeGetAttributesResult, error)
+ // Updates information about the node.
+ //
+ // + `attributes` the presence of a table field in `attributes` indicates
+ // the intent to update the corresponding attribute.
+ //
+ // This method requires the [`Rights.UPDATE_ATTRIBUTES`] right.
+ UpdateAttributes(ctx_ _bindings.Context, attributes NodeAttributes) (NodeUpdateAttributesResult, error)
+ // Synchronizes updates to the node to the underlying media, if it exists.
+ //
+ // This method will return when the filesystem server has flushed the
+ // relevant updates to the underlying media, but does not guarantee the
+ // underlying media has persisted the information, nor that any information
+ // is committed to hardware. Clients may use `Sync` to ensure ordering
+ // between operations.
+ //
+ // This method does not require any rights.
+ Sync(ctx_ _bindings.Context) (NodeSyncResult, error)
+ // Acquires an advisory lock on the underlying file.
+ //
+ // The lock lasts until either this connection is closed or
+ // this method is called with |AdvisoryLockType.UNLOCK| to release the lock
+ // explicitly.
+ //
+ // Advisory locks are purely advisory. They do not prevent actual read or
+ // write operations from occurring on the file, either through this
+ // connection or through other connections.
+ //
+ // This method requires the following rights:
+ //
+ // * [`Rights.READ_BYTES`] if `request.type` is [`AdvisoryLockType.READ`].
+ // * [`Rights.WRITE_BYTES`] if `request.type` is
+ // [`AdvisoryLockType.WRITE`].
+ //
+ // # Errors
+ //
+ // * `ZX_ERR_BAD_STATE` The specified type of lock cannot be acquired. For
+ // example, another connection might hold a conflicting lock type.
+ // * `ZX_ERR_NOT_SUPPORTED` This file does not support advisory locking.
+ // * `ZX_ERR_ACCESS_DENIED` This connection does not have sufficient rights
+ // to acquire the given type of lock.
+ AdvisoryLock(ctx_ _bindings.Context, request AdvisoryLockRequest) (AdvisoryLockingAdvisoryLockResult, error)
+ // Moves the offset at which the next invocation of [`Read`] or [`Write`]
+ // will occur. The seek offset is specific to each file connection.
+ //
+ // + request `origin` the reference point where `offset` will be based on.
+ // + request `offset` the number of bytes to seek.
+ // - response `offset_from_start` the adjusted seek offset, from the start
+ // of the file.
+ //
+ // This method does not require any rights.
+ Seek(ctx_ _bindings.Context, origin SeekOrigin, offset int64) (FileSeekResult, error)
+ // Reads up to 'count' bytes at the seek offset.
+ // The seek offset is moved forward by the number of bytes read.
+ //
+ // ## Invariants
+ //
+ // * The returned `data.length` will never be greater than `count`.
+ // * If `data.length` is less than `count`, it means that the seek offset
+ // has reached the end of file as part of this operation.
+ // * If `data.length` is zero while `count` is not, it means that the
+ // seek offset is already at or beyond the end of file, and no data could
+ // be read.
+ // * If `count` is zero, the server should perform all the checks ensuring
+ // read access without actually read anything, and return an empty
+ // `data` vector.
+ //
+ // This method requires the [`Rights.READ_BYTES`] right.
+ Read(ctx_ _bindings.Context, count uint64) (FileReadResult, error)
+ // Writes data at the seek offset.
+ // The seek offset is moved forward by the number of bytes written.
+ // If the file is in append mode, the seek offset is first set to the end
+ // of the file, followed by the write, in one atomic step.
+ //
+ // The file size may grow if the seek offset plus `data.length` is beyond
+ // the current end of file.
+ //
+ // + request `data` the byte buffer to write to the file.
+ // - response `actual_count` the number of bytes written.
+ //
+ // ## Invariants
+ //
+ // * The returned `actual_count` will never be greater than `data.length`.
+ // * If the server is unable to write all the data due to e.g. not enough
+ // space, `actual_count` may be less than `data.length`.
+ // * If `data.length` is zero, the server should perform all the checks
+ // ensuring write access without mutating the file. The seek offset
+ // is still updated if in append mode.
+ //
+ // This method requires the [`Rights.WRITE_BYTES`] right.
+ Write(ctx_ _bindings.Context, data []uint8) (FileWriteResult, error)
+ // Reads up to 'count' bytes at the provided offset.
+ // Does not affect the seek offset.
+ //
+ // ## Invariants
+ //
+ // * The returned `data.length` will never be greater than `count`.
+ // * If `data.length` is less than `count`, it means that `ReadAt` has hit
+ // the end of file as part of this operation.
+ // * If `data.length` is zero while `count` is not, it means that `offset`
+ // is at or past the end of file, and no data can be read.
+ // * If `count` is zero, the server should perform all the checks ensuring
+ // read access without actually reading anything, and return an empty
+ // `data` vector.
+ //
+ // This method requires the [`Rights.READ_BYTES`] right.
+ ReadAt(ctx_ _bindings.Context, count uint64, offset uint64) (FileReadAtResult, error)
+ // Writes data at the provided offset.
+ // Does not affect the seek offset.
+ //
+ // The file size may grow if `offset` plus `data.length` is past the
+ // current end of file.
+ //
+ // + request `data` the byte buffer to write to the file.
+ // + request `offset` the offset from start of the file to begin writing.
+ // - response `actual_count` the number of bytes written.
+ //
+ // ## Invariants
+ //
+ // * The returned `actual_count` will never be greater than `data.length`.
+ // * If the server is unable to write all the data due to e.g. not enough
+ // space, `actual_count` may be less than `data.length`.
+ // * If `data.length` is zero, the server should perform all the checks
+ // ensuring write access without mutating the file.
+ //
+ // This method requires the [`Rights.WRITE_BYTES`] right.
+ WriteAt(ctx_ _bindings.Context, data []uint8, offset uint64) (FileWriteAtResult, error)
+ // Shrinks or grows the file size to 'length' bytes.
+ //
+ // If file size is reduced by this operation, the extra trailing data'
+ // is discarded.
+ // If file size is increased by this operation, the extended area appears
+ // as if it was zeroed.
+ //
+ // This method requires the [`Rights.WRITE_BYTES`] right.
+ Resize(ctx_ _bindings.Context, length uint64) (FileResizeResult, error)
+ // Acquires a [`fuchsia.mem/Range`] representing this file, if
+ // there is one, with the requested access rights.
+ //
+ // + request `flags` a [`VmoFlags`] indicating the desired mode of access.
+ // - response `buffer` the requested [`fuchsia.mem/Range`].
+ // * error a [`zx.status`] value indicating the failure.
+ //
+ // This method requires the following rights:
+ //
+ // * [`Rights.READ_BYTES`] if `flags` includes [`VmoFlags.READ`].
+ // * [`Rights.WRITE_BYTES`] if `flags` includes [`VmoFlags.WRITE`].
+ // * [`Rights.EXECUTE`] if `flags` includes [`VmoFlags.EXECUTE`].
+ GetMemRange(ctx_ _bindings.Context, flags VmoFlags) (FileGetMemRangeResult, error)
+}
+
+type FileWithCtxTransitionalBase struct{}
+
+func (_ *FileWithCtxTransitionalBase) AdvisoryLock(ctx_ _bindings.Context, request AdvisoryLockRequest) (AdvisoryLockingAdvisoryLockResult, error) {
+ panic("Not Implemented")
+}
+
+type FileWithCtxInterfaceRequest _bindings.InterfaceRequest
+
+func NewFileWithCtxInterfaceRequest() (FileWithCtxInterfaceRequest, *FileWithCtxInterface, error) {
+ req, cli, err := _bindings.NewInterfaceRequest()
+ return FileWithCtxInterfaceRequest(req), (*FileWithCtxInterface)(cli), err
+}
+
+type FileWithCtxStub struct {
+ Impl FileWithCtx
+}
+
+func (s_ *FileWithCtxStub) Dispatch(args_ _bindings.DispatchArgs) (_bindings.Message, bool, error) {
+ switch args_.Ordinal {
+ case FileReopenOrdinal:
+ in_ := fileWithCtxReopenRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ err_ := s_.Impl.Reopen(args_.Ctx, in_.Options, in_.ObjectRequest)
+ return nil, false, err_
+ case FileCloseOrdinal:
+ err_ := s_.Impl.Close(args_.Ctx)
+ return nil, false, err_
+ case FileDescribeOrdinal:
+ in_ := fileWithCtxDescribeRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ info, err_ := s_.Impl.Describe(args_.Ctx, in_.Query)
+ out_ := fileWithCtxDescribeResponse{}
+ out_.Info = info
+ return &out_, true, err_
+ case FileGetTokenOrdinal:
+ result, err_ := s_.Impl.GetToken(args_.Ctx)
+ out_ := fileWithCtxGetTokenResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case FileGetAttributesOrdinal:
+ in_ := fileWithCtxGetAttributesRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.GetAttributes(args_.Ctx, in_.Query)
+ out_ := fileWithCtxGetAttributesResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case FileUpdateAttributesOrdinal:
+ in_ := fileWithCtxUpdateAttributesRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.UpdateAttributes(args_.Ctx, in_.Attributes)
+ out_ := fileWithCtxUpdateAttributesResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case FileSyncOrdinal:
+ result, err_ := s_.Impl.Sync(args_.Ctx)
+ out_ := fileWithCtxSyncResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case FileAdvisoryLockOrdinal:
+ in_ := fileWithCtxAdvisoryLockRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.AdvisoryLock(args_.Ctx, in_.Request)
+ out_ := fileWithCtxAdvisoryLockResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case FileSeekOrdinal:
+ in_ := fileWithCtxSeekRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.Seek(args_.Ctx, in_.Origin, in_.Offset)
+ out_ := fileWithCtxSeekResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case FileReadOrdinal:
+ in_ := fileWithCtxReadRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.Read(args_.Ctx, in_.Count)
+ out_ := fileWithCtxReadResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case FileWriteOrdinal:
+ in_ := fileWithCtxWriteRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.Write(args_.Ctx, in_.Data)
+ out_ := fileWithCtxWriteResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case FileReadAtOrdinal:
+ in_ := fileWithCtxReadAtRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.ReadAt(args_.Ctx, in_.Count, in_.Offset)
+ out_ := fileWithCtxReadAtResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case FileWriteAtOrdinal:
+ in_ := fileWithCtxWriteAtRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.WriteAt(args_.Ctx, in_.Data, in_.Offset)
+ out_ := fileWithCtxWriteAtResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case FileResizeOrdinal:
+ in_ := fileWithCtxResizeRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.Resize(args_.Ctx, in_.Length)
+ out_ := fileWithCtxResizeResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case FileGetMemRangeOrdinal:
+ in_ := fileWithCtxGetMemRangeRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.GetMemRange(args_.Ctx, in_.Flags)
+ out_ := fileWithCtxGetMemRangeResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ }
+ return nil, false, _bindings.ErrUnknownOrdinal
+}
+
+type FileEventProxy _bindings.ChannelProxy
+
+func (p *FileEventProxy) OnConnectionInfo(info ConnectionInfo) error {
+ event_ := &fileWithCtxOnConnectionInfoResponse{
+ Info: info,
+ }
+ return ((*_bindings.ChannelProxy)(p)).Send(FileOnConnectionInfoOrdinal, event_)
+}
+
+type InotifierWithCtxInterface _bindings.ChannelProxy
+
+// Inotifier implements the linux Inotify functionality.
+// It provides a mechanism for monitoring filesystem
+// events. Inotify can be used to monitor individual files, or to
+// monitor directories. When a directory is monitored, inotify will
+// return events for the directory itself, and for files inside the
+// directory.
+type InotifierWithCtx interface {
+}
+
+type InotifierWithCtxTransitionalBase struct{}
+
+type InotifierWithCtxInterfaceRequest _bindings.InterfaceRequest
+
+func NewInotifierWithCtxInterfaceRequest() (InotifierWithCtxInterfaceRequest, *InotifierWithCtxInterface, error) {
+ req, cli, err := _bindings.NewInterfaceRequest()
+ return InotifierWithCtxInterfaceRequest(req), (*InotifierWithCtxInterface)(cli), err
+}
+
+type InotifierWithCtxStub struct {
+ Impl InotifierWithCtx
+}
+
+func (s_ *InotifierWithCtxStub) Dispatch(args_ _bindings.DispatchArgs) (_bindings.Message, bool, error) {
+ switch args_.Ordinal {
+ }
+ return nil, false, _bindings.ErrUnknownOrdinal
+}
+
+type InotifierEventProxy _bindings.ChannelProxy
+
+const (
+ AdvisoryLockingAdvisoryLockOrdinal uint64 = 0x6358e94c468026fa
+)
+
+type AdvisoryLockingWithCtxInterface _bindings.ChannelProxy
+
+// Acquires an advisory lock on the underlying file.
+//
+// The lock lasts until either this connection is closed or
+// this method is called with |AdvisoryLockType.UNLOCK| to release the lock
+// explicitly.
+//
+// Advisory locks are purely advisory. They do not prevent actual read or
+// write operations from occurring on the file, either through this
+// connection or through other connections.
+//
+// This method requires the following rights:
+//
+// * [`Rights.READ_BYTES`] if `request.type` is [`AdvisoryLockType.READ`].
+// * [`Rights.WRITE_BYTES`] if `request.type` is
+// [`AdvisoryLockType.WRITE`].
+//
+// # Errors
+//
+// * `ZX_ERR_BAD_STATE` The specified type of lock cannot be acquired. For
+// example, another connection might hold a conflicting lock type.
+// * `ZX_ERR_NOT_SUPPORTED` This file does not support advisory locking.
+// * `ZX_ERR_ACCESS_DENIED` This connection does not have sufficient rights
+// to acquire the given type of lock.
+func (p *AdvisoryLockingWithCtxInterface) AdvisoryLock(ctx_ _bindings.Context, request AdvisoryLockRequest) (AdvisoryLockingAdvisoryLockResult, error) {
+ req_ := &advisoryLockingWithCtxAdvisoryLockRequest{
+ Request: request,
+ }
+ resp_ := &advisoryLockingWithCtxAdvisoryLockResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(AdvisoryLockingAdvisoryLockOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Advisory locking protocol.
+//
+// This protocol is intended to be composed into the |File| protocol to
+// provide support for advisory locking.
+//
+// Advisory locks are purely advisory. They do not prevent actual read or
+// write operations from occurring on the file, either through this
+// connection or through other connections.
+//
+// These primitives are designed to support the flock() and fcntl(),
+// specifically F_SETLK, F_SETLKW, and F_GETLK, functionality that code
+// running on Fuchsia expects from other operating systems.
+type AdvisoryLockingWithCtx interface {
+ // Acquires an advisory lock on the underlying file.
+ //
+ // The lock lasts until either this connection is closed or
+ // this method is called with |AdvisoryLockType.UNLOCK| to release the lock
+ // explicitly.
+ //
+ // Advisory locks are purely advisory. They do not prevent actual read or
+ // write operations from occurring on the file, either through this
+ // connection or through other connections.
+ //
+ // This method requires the following rights:
+ //
+ // * [`Rights.READ_BYTES`] if `request.type` is [`AdvisoryLockType.READ`].
+ // * [`Rights.WRITE_BYTES`] if `request.type` is
+ // [`AdvisoryLockType.WRITE`].
+ //
+ // # Errors
+ //
+ // * `ZX_ERR_BAD_STATE` The specified type of lock cannot be acquired. For
+ // example, another connection might hold a conflicting lock type.
+ // * `ZX_ERR_NOT_SUPPORTED` This file does not support advisory locking.
+ // * `ZX_ERR_ACCESS_DENIED` This connection does not have sufficient rights
+ // to acquire the given type of lock.
+ AdvisoryLock(ctx_ _bindings.Context, request AdvisoryLockRequest) (AdvisoryLockingAdvisoryLockResult, error)
+}
+
+type AdvisoryLockingWithCtxTransitionalBase struct{}
+
+func (_ *AdvisoryLockingWithCtxTransitionalBase) AdvisoryLock(ctx_ _bindings.Context, request AdvisoryLockRequest) (AdvisoryLockingAdvisoryLockResult, error) {
+ panic("Not Implemented")
+}
+
+type AdvisoryLockingWithCtxInterfaceRequest _bindings.InterfaceRequest
+
+func NewAdvisoryLockingWithCtxInterfaceRequest() (AdvisoryLockingWithCtxInterfaceRequest, *AdvisoryLockingWithCtxInterface, error) {
+ req, cli, err := _bindings.NewInterfaceRequest()
+ return AdvisoryLockingWithCtxInterfaceRequest(req), (*AdvisoryLockingWithCtxInterface)(cli), err
+}
+
+type AdvisoryLockingWithCtxStub struct {
+ Impl AdvisoryLockingWithCtx
+}
+
+func (s_ *AdvisoryLockingWithCtxStub) Dispatch(args_ _bindings.DispatchArgs) (_bindings.Message, bool, error) {
+ switch args_.Ordinal {
+ case AdvisoryLockingAdvisoryLockOrdinal:
+ in_ := advisoryLockingWithCtxAdvisoryLockRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.AdvisoryLock(args_.Ctx, in_.Request)
+ out_ := advisoryLockingWithCtxAdvisoryLockResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ }
+ return nil, false, _bindings.ErrUnknownOrdinal
+}
+
+type AdvisoryLockingEventProxy _bindings.ChannelProxy
+
+const (
+ MemoryReopenOrdinal uint64 = 0x74170eb73121c69f
+ MemoryCloseOrdinal uint64 = 0x2dec2818386e5d68
+ MemoryDescribeOrdinal uint64 = 0x4aac591060c65c2f
+ MemoryOnConnectionInfoOrdinal uint64 = 0x6637fc43ceeaa437
+ MemoryGetTokenOrdinal uint64 = 0x4f2b25c934c5d8e4
+ MemoryGetAttributesOrdinal uint64 = 0x675e1e73d076d1e4
+ MemoryUpdateAttributesOrdinal uint64 = 0x7d59d73f59ba21b5
+ MemorySyncOrdinal uint64 = 0xac3a8c1a2e063ad
+)
+
+type MemoryWithCtxInterface _bindings.ChannelProxy
+
+// Creates another connection to the same node.
+//
+// + `options` options applicable to both `Open` and `Reopen`,
+// including negotiating protocol and restricting rights.
+// See [`fuchsia.io2/ConnectionOptions`].
+// + `object_request` is the server end of a channel created for the new
+// connection. The caller may proceed to send messages on the
+// corresponding client end right away.
+//
+// For files, the cloned connection and the original connection have
+// independent seek offsets.
+func (p *MemoryWithCtxInterface) Reopen(ctx_ _bindings.Context, options ConnectionOptions, objectRequest _zx.Channel) error {
+ req_ := &memoryWithCtxReopenRequest{
+ Options: options,
+ ObjectRequest: objectRequest,
+ }
+ err_ := ((*_bindings.ChannelProxy)(p)).Send(MemoryReopenOrdinal, req_)
+ return err_
+}
+
+// Terminates the connection to the node.
+//
+// After calling `Close`, the client must not send any other requests.
+// The result of `Close` arrives as an epitaph, where the channel is closed
+// by the server upon processing this operation.
+//
+// Closing the client end of the channel should be semantically equivalent
+// to calling `Close` without monitoring the status epitaph.
+//
+// This method does not require any rights.
+func (p *MemoryWithCtxInterface) Close(ctx_ _bindings.Context) error {
+ var req_ _bindings.Message
+ err_ := ((*_bindings.ChannelProxy)(p)).Send(MemoryCloseOrdinal, req_)
+ return err_
+}
+
+// Returns extra connection information and auxiliary handles.
+//
+// + `query` specifies the fields in `ConnectionInfo` that the caller is
+// interested in.
+// - `info` see [`fuchsia.io2/ConnectionInfo`] for details on the fields.
+//
+// When all known bits in `query` are set, the return value matches
+// the one from [`OnConnectionInfo`], as if the caller requested that event
+// using [`ConnectionFlags.GET_CONNECTION_INFO`].
+//
+// If the `Describe` operation fails, the connection is closed with the
+// associated error.
+//
+// This method does not require any rights.
+func (p *MemoryWithCtxInterface) Describe(ctx_ _bindings.Context, query ConnectionInfoQuery) (ConnectionInfo, error) {
+ req_ := &memoryWithCtxDescribeRequest{
+ Query: query,
+ }
+ resp_ := &memoryWithCtxDescribeResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(MemoryDescribeOrdinal, req_, resp_)
+ return resp_.Info, err_
+}
+
+// An event produced eagerly by the server if requested by
+// [`ConnectionFlags.GET_CONNECTION_INFO`]. This event will be the
+// first message from the server, and is sent exactly once.
+//
+// - `info` See [`fuchsia.io2/ConnectionInfo`] for details on the fields.
+// All members should be present.
+//
+// Different from [`fuchsia.io/OnOpen`], an error during open/reopen is
+// always manifested as an epitaph.
+func (p *MemoryWithCtxInterface) ExpectOnConnectionInfo(ctx_ _bindings.Context) (ConnectionInfo, error) {
+ resp_ := &memoryWithCtxOnConnectionInfoResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Recv(MemoryOnConnectionInfoOrdinal, resp_)
+ return resp_.Info, err_
+}
+
+// Acquires a token which can be used to identify this connection at
+// a later point in time.
+//
+// This method does not require any rights. Note that the token identifies
+// the connection, hence carries the rights information on this connection.
+func (p *MemoryWithCtxInterface) GetToken(ctx_ _bindings.Context) (NodeGetTokenResult, error) {
+ var req_ _bindings.Message
+ resp_ := &memoryWithCtxGetTokenResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(MemoryGetTokenOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Acquires information about the node.
+//
+// The attributes of a node should be stable, independent of the
+// specific protocol used to access it.
+//
+// + `query` a bit-mask specifying which attributes to fetch. The server
+// should not return more than necessary.
+// - `attributes` the returned attributes.
+//
+// This method requires the [`Rights.GET_ATTRIBUTES`] right.
+func (p *MemoryWithCtxInterface) GetAttributes(ctx_ _bindings.Context, query NodeAttributesQuery) (NodeGetAttributesResult, error) {
+ req_ := &memoryWithCtxGetAttributesRequest{
+ Query: query,
+ }
+ resp_ := &memoryWithCtxGetAttributesResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(MemoryGetAttributesOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Updates information about the node.
+//
+// + `attributes` the presence of a table field in `attributes` indicates
+// the intent to update the corresponding attribute.
+//
+// This method requires the [`Rights.UPDATE_ATTRIBUTES`] right.
+func (p *MemoryWithCtxInterface) UpdateAttributes(ctx_ _bindings.Context, attributes NodeAttributes) (NodeUpdateAttributesResult, error) {
+ req_ := &memoryWithCtxUpdateAttributesRequest{
+ Attributes: attributes,
+ }
+ resp_ := &memoryWithCtxUpdateAttributesResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(MemoryUpdateAttributesOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Synchronizes updates to the node to the underlying media, if it exists.
+//
+// This method will return when the filesystem server has flushed the
+// relevant updates to the underlying media, but does not guarantee the
+// underlying media has persisted the information, nor that any information
+// is committed to hardware. Clients may use `Sync` to ensure ordering
+// between operations.
+//
+// This method does not require any rights.
+func (p *MemoryWithCtxInterface) Sync(ctx_ _bindings.Context) (NodeSyncResult, error) {
+ var req_ _bindings.Message
+ resp_ := &memoryWithCtxSyncResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(MemorySyncOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// A file-like node backed by a VMO.
+// No memory-specific methods are provided by this protocol.
+// The client should access it via the the [`MemoryInfo.buffer`] object in
+// [`fuchsia.io2/Representation`].
+type MemoryWithCtx interface {
+ // Creates another connection to the same node.
+ //
+ // + `options` options applicable to both `Open` and `Reopen`,
+ // including negotiating protocol and restricting rights.
+ // See [`fuchsia.io2/ConnectionOptions`].
+ // + `object_request` is the server end of a channel created for the new
+ // connection. The caller may proceed to send messages on the
+ // corresponding client end right away.
+ //
+ // For files, the cloned connection and the original connection have
+ // independent seek offsets.
+ Reopen(ctx_ _bindings.Context, options ConnectionOptions, objectRequest _zx.Channel) error
+ // Terminates the connection to the node.
+ //
+ // After calling `Close`, the client must not send any other requests.
+ // The result of `Close` arrives as an epitaph, where the channel is closed
+ // by the server upon processing this operation.
+ //
+ // Closing the client end of the channel should be semantically equivalent
+ // to calling `Close` without monitoring the status epitaph.
+ //
+ // This method does not require any rights.
+ Close(ctx_ _bindings.Context) error
+ // Returns extra connection information and auxiliary handles.
+ //
+ // + `query` specifies the fields in `ConnectionInfo` that the caller is
+ // interested in.
+ // - `info` see [`fuchsia.io2/ConnectionInfo`] for details on the fields.
+ //
+ // When all known bits in `query` are set, the return value matches
+ // the one from [`OnConnectionInfo`], as if the caller requested that event
+ // using [`ConnectionFlags.GET_CONNECTION_INFO`].
+ //
+ // If the `Describe` operation fails, the connection is closed with the
+ // associated error.
+ //
+ // This method does not require any rights.
+ Describe(ctx_ _bindings.Context, query ConnectionInfoQuery) (ConnectionInfo, error)
+ // An event produced eagerly by the server if requested by
+ // [`ConnectionFlags.GET_CONNECTION_INFO`]. This event will be the
+ // first message from the server, and is sent exactly once.
+ //
+ // - `info` See [`fuchsia.io2/ConnectionInfo`] for details on the fields.
+ // All members should be present.
+ //
+ // Different from [`fuchsia.io/OnOpen`], an error during open/reopen is
+ // always manifested as an epitaph.
+ // Acquires a token which can be used to identify this connection at
+ // a later point in time.
+ //
+ // This method does not require any rights. Note that the token identifies
+ // the connection, hence carries the rights information on this connection.
+ GetToken(ctx_ _bindings.Context) (NodeGetTokenResult, error)
+ // Acquires information about the node.
+ //
+ // The attributes of a node should be stable, independent of the
+ // specific protocol used to access it.
+ //
+ // + `query` a bit-mask specifying which attributes to fetch. The server
+ // should not return more than necessary.
+ // - `attributes` the returned attributes.
+ //
+ // This method requires the [`Rights.GET_ATTRIBUTES`] right.
+ GetAttributes(ctx_ _bindings.Context, query NodeAttributesQuery) (NodeGetAttributesResult, error)
+ // Updates information about the node.
+ //
+ // + `attributes` the presence of a table field in `attributes` indicates
+ // the intent to update the corresponding attribute.
+ //
+ // This method requires the [`Rights.UPDATE_ATTRIBUTES`] right.
+ UpdateAttributes(ctx_ _bindings.Context, attributes NodeAttributes) (NodeUpdateAttributesResult, error)
+ // Synchronizes updates to the node to the underlying media, if it exists.
+ //
+ // This method will return when the filesystem server has flushed the
+ // relevant updates to the underlying media, but does not guarantee the
+ // underlying media has persisted the information, nor that any information
+ // is committed to hardware. Clients may use `Sync` to ensure ordering
+ // between operations.
+ //
+ // This method does not require any rights.
+ Sync(ctx_ _bindings.Context) (NodeSyncResult, error)
+}
+
+type MemoryWithCtxTransitionalBase struct{}
+
+type MemoryWithCtxInterfaceRequest _bindings.InterfaceRequest
+
+func NewMemoryWithCtxInterfaceRequest() (MemoryWithCtxInterfaceRequest, *MemoryWithCtxInterface, error) {
+ req, cli, err := _bindings.NewInterfaceRequest()
+ return MemoryWithCtxInterfaceRequest(req), (*MemoryWithCtxInterface)(cli), err
+}
+
+type MemoryWithCtxStub struct {
+ Impl MemoryWithCtx
+}
+
+func (s_ *MemoryWithCtxStub) Dispatch(args_ _bindings.DispatchArgs) (_bindings.Message, bool, error) {
+ switch args_.Ordinal {
+ case MemoryReopenOrdinal:
+ in_ := memoryWithCtxReopenRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ err_ := s_.Impl.Reopen(args_.Ctx, in_.Options, in_.ObjectRequest)
+ return nil, false, err_
+ case MemoryCloseOrdinal:
+ err_ := s_.Impl.Close(args_.Ctx)
+ return nil, false, err_
+ case MemoryDescribeOrdinal:
+ in_ := memoryWithCtxDescribeRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ info, err_ := s_.Impl.Describe(args_.Ctx, in_.Query)
+ out_ := memoryWithCtxDescribeResponse{}
+ out_.Info = info
+ return &out_, true, err_
+ case MemoryGetTokenOrdinal:
+ result, err_ := s_.Impl.GetToken(args_.Ctx)
+ out_ := memoryWithCtxGetTokenResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case MemoryGetAttributesOrdinal:
+ in_ := memoryWithCtxGetAttributesRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.GetAttributes(args_.Ctx, in_.Query)
+ out_ := memoryWithCtxGetAttributesResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case MemoryUpdateAttributesOrdinal:
+ in_ := memoryWithCtxUpdateAttributesRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.UpdateAttributes(args_.Ctx, in_.Attributes)
+ out_ := memoryWithCtxUpdateAttributesResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case MemorySyncOrdinal:
+ result, err_ := s_.Impl.Sync(args_.Ctx)
+ out_ := memoryWithCtxSyncResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ }
+ return nil, false, _bindings.ErrUnknownOrdinal
+}
+
+type MemoryEventProxy _bindings.ChannelProxy
+
+func (p *MemoryEventProxy) OnConnectionInfo(info ConnectionInfo) error {
+ event_ := &memoryWithCtxOnConnectionInfoResponse{
+ Info: info,
+ }
+ return ((*_bindings.ChannelProxy)(p)).Send(MemoryOnConnectionInfoOrdinal, event_)
+}
+
+const (
+ NodeReopenOrdinal uint64 = 0x74170eb73121c69f
+ NodeCloseOrdinal uint64 = 0x2dec2818386e5d68
+ NodeDescribeOrdinal uint64 = 0x4aac591060c65c2f
+ NodeOnConnectionInfoOrdinal uint64 = 0x6637fc43ceeaa437
+ NodeGetTokenOrdinal uint64 = 0x4f2b25c934c5d8e4
+ NodeGetAttributesOrdinal uint64 = 0x675e1e73d076d1e4
+ NodeUpdateAttributesOrdinal uint64 = 0x7d59d73f59ba21b5
+ NodeSyncOrdinal uint64 = 0xac3a8c1a2e063ad
+)
+
+type NodeWithCtxInterface _bindings.ChannelProxy
+
+// Creates another connection to the same node.
+//
+// + `options` options applicable to both `Open` and `Reopen`,
+// including negotiating protocol and restricting rights.
+// See [`fuchsia.io2/ConnectionOptions`].
+// + `object_request` is the server end of a channel created for the new
+// connection. The caller may proceed to send messages on the
+// corresponding client end right away.
+//
+// For files, the cloned connection and the original connection have
+// independent seek offsets.
+func (p *NodeWithCtxInterface) Reopen(ctx_ _bindings.Context, options ConnectionOptions, objectRequest _zx.Channel) error {
+ req_ := &nodeWithCtxReopenRequest{
+ Options: options,
+ ObjectRequest: objectRequest,
+ }
+ err_ := ((*_bindings.ChannelProxy)(p)).Send(NodeReopenOrdinal, req_)
+ return err_
+}
+
+// Terminates the connection to the node.
+//
+// After calling `Close`, the client must not send any other requests.
+// The result of `Close` arrives as an epitaph, where the channel is closed
+// by the server upon processing this operation.
+//
+// Closing the client end of the channel should be semantically equivalent
+// to calling `Close` without monitoring the status epitaph.
+//
+// This method does not require any rights.
+func (p *NodeWithCtxInterface) Close(ctx_ _bindings.Context) error {
+ var req_ _bindings.Message
+ err_ := ((*_bindings.ChannelProxy)(p)).Send(NodeCloseOrdinal, req_)
+ return err_
+}
+
+// Returns extra connection information and auxiliary handles.
+//
+// + `query` specifies the fields in `ConnectionInfo` that the caller is
+// interested in.
+// - `info` see [`fuchsia.io2/ConnectionInfo`] for details on the fields.
+//
+// When all known bits in `query` are set, the return value matches
+// the one from [`OnConnectionInfo`], as if the caller requested that event
+// using [`ConnectionFlags.GET_CONNECTION_INFO`].
+//
+// If the `Describe` operation fails, the connection is closed with the
+// associated error.
+//
+// This method does not require any rights.
+func (p *NodeWithCtxInterface) Describe(ctx_ _bindings.Context, query ConnectionInfoQuery) (ConnectionInfo, error) {
+ req_ := &nodeWithCtxDescribeRequest{
+ Query: query,
+ }
+ resp_ := &nodeWithCtxDescribeResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(NodeDescribeOrdinal, req_, resp_)
+ return resp_.Info, err_
+}
+
+// An event produced eagerly by the server if requested by
+// [`ConnectionFlags.GET_CONNECTION_INFO`]. This event will be the
+// first message from the server, and is sent exactly once.
+//
+// - `info` See [`fuchsia.io2/ConnectionInfo`] for details on the fields.
+// All members should be present.
+//
+// Different from [`fuchsia.io/OnOpen`], an error during open/reopen is
+// always manifested as an epitaph.
+func (p *NodeWithCtxInterface) ExpectOnConnectionInfo(ctx_ _bindings.Context) (ConnectionInfo, error) {
+ resp_ := &nodeWithCtxOnConnectionInfoResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Recv(NodeOnConnectionInfoOrdinal, resp_)
+ return resp_.Info, err_
+}
+
+// Acquires a token which can be used to identify this connection at
+// a later point in time.
+//
+// This method does not require any rights. Note that the token identifies
+// the connection, hence carries the rights information on this connection.
+func (p *NodeWithCtxInterface) GetToken(ctx_ _bindings.Context) (NodeGetTokenResult, error) {
+ var req_ _bindings.Message
+ resp_ := &nodeWithCtxGetTokenResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(NodeGetTokenOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Acquires information about the node.
+//
+// The attributes of a node should be stable, independent of the
+// specific protocol used to access it.
+//
+// + `query` a bit-mask specifying which attributes to fetch. The server
+// should not return more than necessary.
+// - `attributes` the returned attributes.
+//
+// This method requires the [`Rights.GET_ATTRIBUTES`] right.
+func (p *NodeWithCtxInterface) GetAttributes(ctx_ _bindings.Context, query NodeAttributesQuery) (NodeGetAttributesResult, error) {
+ req_ := &nodeWithCtxGetAttributesRequest{
+ Query: query,
+ }
+ resp_ := &nodeWithCtxGetAttributesResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(NodeGetAttributesOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Updates information about the node.
+//
+// + `attributes` the presence of a table field in `attributes` indicates
+// the intent to update the corresponding attribute.
+//
+// This method requires the [`Rights.UPDATE_ATTRIBUTES`] right.
+func (p *NodeWithCtxInterface) UpdateAttributes(ctx_ _bindings.Context, attributes NodeAttributes) (NodeUpdateAttributesResult, error) {
+ req_ := &nodeWithCtxUpdateAttributesRequest{
+ Attributes: attributes,
+ }
+ resp_ := &nodeWithCtxUpdateAttributesResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(NodeUpdateAttributesOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Synchronizes updates to the node to the underlying media, if it exists.
+//
+// This method will return when the filesystem server has flushed the
+// relevant updates to the underlying media, but does not guarantee the
+// underlying media has persisted the information, nor that any information
+// is committed to hardware. Clients may use `Sync` to ensure ordering
+// between operations.
+//
+// This method does not require any rights.
+func (p *NodeWithCtxInterface) Sync(ctx_ _bindings.Context) (NodeSyncResult, error) {
+ var req_ _bindings.Message
+ resp_ := &nodeWithCtxSyncResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(NodeSyncOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Node defines the minimal protocol for entities which can be accessed
+// in a filesystem.
+type NodeWithCtx interface {
+ // Creates another connection to the same node.
+ //
+ // + `options` options applicable to both `Open` and `Reopen`,
+ // including negotiating protocol and restricting rights.
+ // See [`fuchsia.io2/ConnectionOptions`].
+ // + `object_request` is the server end of a channel created for the new
+ // connection. The caller may proceed to send messages on the
+ // corresponding client end right away.
+ //
+ // For files, the cloned connection and the original connection have
+ // independent seek offsets.
+ Reopen(ctx_ _bindings.Context, options ConnectionOptions, objectRequest _zx.Channel) error
+ // Terminates the connection to the node.
+ //
+ // After calling `Close`, the client must not send any other requests.
+ // The result of `Close` arrives as an epitaph, where the channel is closed
+ // by the server upon processing this operation.
+ //
+ // Closing the client end of the channel should be semantically equivalent
+ // to calling `Close` without monitoring the status epitaph.
+ //
+ // This method does not require any rights.
+ Close(ctx_ _bindings.Context) error
+ // Returns extra connection information and auxiliary handles.
+ //
+ // + `query` specifies the fields in `ConnectionInfo` that the caller is
+ // interested in.
+ // - `info` see [`fuchsia.io2/ConnectionInfo`] for details on the fields.
+ //
+ // When all known bits in `query` are set, the return value matches
+ // the one from [`OnConnectionInfo`], as if the caller requested that event
+ // using [`ConnectionFlags.GET_CONNECTION_INFO`].
+ //
+ // If the `Describe` operation fails, the connection is closed with the
+ // associated error.
+ //
+ // This method does not require any rights.
+ Describe(ctx_ _bindings.Context, query ConnectionInfoQuery) (ConnectionInfo, error)
+ // An event produced eagerly by the server if requested by
+ // [`ConnectionFlags.GET_CONNECTION_INFO`]. This event will be the
+ // first message from the server, and is sent exactly once.
+ //
+ // - `info` See [`fuchsia.io2/ConnectionInfo`] for details on the fields.
+ // All members should be present.
+ //
+ // Different from [`fuchsia.io/OnOpen`], an error during open/reopen is
+ // always manifested as an epitaph.
+ // Acquires a token which can be used to identify this connection at
+ // a later point in time.
+ //
+ // This method does not require any rights. Note that the token identifies
+ // the connection, hence carries the rights information on this connection.
+ GetToken(ctx_ _bindings.Context) (NodeGetTokenResult, error)
+ // Acquires information about the node.
+ //
+ // The attributes of a node should be stable, independent of the
+ // specific protocol used to access it.
+ //
+ // + `query` a bit-mask specifying which attributes to fetch. The server
+ // should not return more than necessary.
+ // - `attributes` the returned attributes.
+ //
+ // This method requires the [`Rights.GET_ATTRIBUTES`] right.
+ GetAttributes(ctx_ _bindings.Context, query NodeAttributesQuery) (NodeGetAttributesResult, error)
+ // Updates information about the node.
+ //
+ // + `attributes` the presence of a table field in `attributes` indicates
+ // the intent to update the corresponding attribute.
+ //
+ // This method requires the [`Rights.UPDATE_ATTRIBUTES`] right.
+ UpdateAttributes(ctx_ _bindings.Context, attributes NodeAttributes) (NodeUpdateAttributesResult, error)
+ // Synchronizes updates to the node to the underlying media, if it exists.
+ //
+ // This method will return when the filesystem server has flushed the
+ // relevant updates to the underlying media, but does not guarantee the
+ // underlying media has persisted the information, nor that any information
+ // is committed to hardware. Clients may use `Sync` to ensure ordering
+ // between operations.
+ //
+ // This method does not require any rights.
+ Sync(ctx_ _bindings.Context) (NodeSyncResult, error)
+}
+
+type NodeWithCtxTransitionalBase struct{}
+
+type NodeWithCtxInterfaceRequest _bindings.InterfaceRequest
+
+func NewNodeWithCtxInterfaceRequest() (NodeWithCtxInterfaceRequest, *NodeWithCtxInterface, error) {
+ req, cli, err := _bindings.NewInterfaceRequest()
+ return NodeWithCtxInterfaceRequest(req), (*NodeWithCtxInterface)(cli), err
+}
+
+type NodeWithCtxStub struct {
+ Impl NodeWithCtx
+}
+
+func (s_ *NodeWithCtxStub) Dispatch(args_ _bindings.DispatchArgs) (_bindings.Message, bool, error) {
+ switch args_.Ordinal {
+ case NodeReopenOrdinal:
+ in_ := nodeWithCtxReopenRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ err_ := s_.Impl.Reopen(args_.Ctx, in_.Options, in_.ObjectRequest)
+ return nil, false, err_
+ case NodeCloseOrdinal:
+ err_ := s_.Impl.Close(args_.Ctx)
+ return nil, false, err_
+ case NodeDescribeOrdinal:
+ in_ := nodeWithCtxDescribeRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ info, err_ := s_.Impl.Describe(args_.Ctx, in_.Query)
+ out_ := nodeWithCtxDescribeResponse{}
+ out_.Info = info
+ return &out_, true, err_
+ case NodeGetTokenOrdinal:
+ result, err_ := s_.Impl.GetToken(args_.Ctx)
+ out_ := nodeWithCtxGetTokenResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case NodeGetAttributesOrdinal:
+ in_ := nodeWithCtxGetAttributesRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.GetAttributes(args_.Ctx, in_.Query)
+ out_ := nodeWithCtxGetAttributesResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case NodeUpdateAttributesOrdinal:
+ in_ := nodeWithCtxUpdateAttributesRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.UpdateAttributes(args_.Ctx, in_.Attributes)
+ out_ := nodeWithCtxUpdateAttributesResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case NodeSyncOrdinal:
+ result, err_ := s_.Impl.Sync(args_.Ctx)
+ out_ := nodeWithCtxSyncResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ }
+ return nil, false, _bindings.ErrUnknownOrdinal
+}
+
+type NodeEventProxy _bindings.ChannelProxy
+
+func (p *NodeEventProxy) OnConnectionInfo(info ConnectionInfo) error {
+ event_ := &nodeWithCtxOnConnectionInfoResponse{
+ Info: info,
+ }
+ return ((*_bindings.ChannelProxy)(p)).Send(NodeOnConnectionInfoOrdinal, event_)
+}
+
+const (
+ PipeReopenOrdinal uint64 = 0x74170eb73121c69f
+ PipeCloseOrdinal uint64 = 0x2dec2818386e5d68
+ PipeDescribeOrdinal uint64 = 0x4aac591060c65c2f
+ PipeOnConnectionInfoOrdinal uint64 = 0x6637fc43ceeaa437
+ PipeGetTokenOrdinal uint64 = 0x4f2b25c934c5d8e4
+ PipeGetAttributesOrdinal uint64 = 0x675e1e73d076d1e4
+ PipeUpdateAttributesOrdinal uint64 = 0x7d59d73f59ba21b5
+ PipeSyncOrdinal uint64 = 0xac3a8c1a2e063ad
+)
+
+type PipeWithCtxInterface _bindings.ChannelProxy
+
+// Creates another connection to the same node.
+//
+// + `options` options applicable to both `Open` and `Reopen`,
+// including negotiating protocol and restricting rights.
+// See [`fuchsia.io2/ConnectionOptions`].
+// + `object_request` is the server end of a channel created for the new
+// connection. The caller may proceed to send messages on the
+// corresponding client end right away.
+//
+// For files, the cloned connection and the original connection have
+// independent seek offsets.
+func (p *PipeWithCtxInterface) Reopen(ctx_ _bindings.Context, options ConnectionOptions, objectRequest _zx.Channel) error {
+ req_ := &pipeWithCtxReopenRequest{
+ Options: options,
+ ObjectRequest: objectRequest,
+ }
+ err_ := ((*_bindings.ChannelProxy)(p)).Send(PipeReopenOrdinal, req_)
+ return err_
+}
+
+// Terminates the connection to the node.
+//
+// After calling `Close`, the client must not send any other requests.
+// The result of `Close` arrives as an epitaph, where the channel is closed
+// by the server upon processing this operation.
+//
+// Closing the client end of the channel should be semantically equivalent
+// to calling `Close` without monitoring the status epitaph.
+//
+// This method does not require any rights.
+func (p *PipeWithCtxInterface) Close(ctx_ _bindings.Context) error {
+ var req_ _bindings.Message
+ err_ := ((*_bindings.ChannelProxy)(p)).Send(PipeCloseOrdinal, req_)
+ return err_
+}
+
+// Returns extra connection information and auxiliary handles.
+//
+// + `query` specifies the fields in `ConnectionInfo` that the caller is
+// interested in.
+// - `info` see [`fuchsia.io2/ConnectionInfo`] for details on the fields.
+//
+// When all known bits in `query` are set, the return value matches
+// the one from [`OnConnectionInfo`], as if the caller requested that event
+// using [`ConnectionFlags.GET_CONNECTION_INFO`].
+//
+// If the `Describe` operation fails, the connection is closed with the
+// associated error.
+//
+// This method does not require any rights.
+func (p *PipeWithCtxInterface) Describe(ctx_ _bindings.Context, query ConnectionInfoQuery) (ConnectionInfo, error) {
+ req_ := &pipeWithCtxDescribeRequest{
+ Query: query,
+ }
+ resp_ := &pipeWithCtxDescribeResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(PipeDescribeOrdinal, req_, resp_)
+ return resp_.Info, err_
+}
+
+// An event produced eagerly by the server if requested by
+// [`ConnectionFlags.GET_CONNECTION_INFO`]. This event will be the
+// first message from the server, and is sent exactly once.
+//
+// - `info` See [`fuchsia.io2/ConnectionInfo`] for details on the fields.
+// All members should be present.
+//
+// Different from [`fuchsia.io/OnOpen`], an error during open/reopen is
+// always manifested as an epitaph.
+func (p *PipeWithCtxInterface) ExpectOnConnectionInfo(ctx_ _bindings.Context) (ConnectionInfo, error) {
+ resp_ := &pipeWithCtxOnConnectionInfoResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Recv(PipeOnConnectionInfoOrdinal, resp_)
+ return resp_.Info, err_
+}
+
+// Acquires a token which can be used to identify this connection at
+// a later point in time.
+//
+// This method does not require any rights. Note that the token identifies
+// the connection, hence carries the rights information on this connection.
+func (p *PipeWithCtxInterface) GetToken(ctx_ _bindings.Context) (NodeGetTokenResult, error) {
+ var req_ _bindings.Message
+ resp_ := &pipeWithCtxGetTokenResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(PipeGetTokenOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Acquires information about the node.
+//
+// The attributes of a node should be stable, independent of the
+// specific protocol used to access it.
+//
+// + `query` a bit-mask specifying which attributes to fetch. The server
+// should not return more than necessary.
+// - `attributes` the returned attributes.
+//
+// This method requires the [`Rights.GET_ATTRIBUTES`] right.
+func (p *PipeWithCtxInterface) GetAttributes(ctx_ _bindings.Context, query NodeAttributesQuery) (NodeGetAttributesResult, error) {
+ req_ := &pipeWithCtxGetAttributesRequest{
+ Query: query,
+ }
+ resp_ := &pipeWithCtxGetAttributesResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(PipeGetAttributesOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Updates information about the node.
+//
+// + `attributes` the presence of a table field in `attributes` indicates
+// the intent to update the corresponding attribute.
+//
+// This method requires the [`Rights.UPDATE_ATTRIBUTES`] right.
+func (p *PipeWithCtxInterface) UpdateAttributes(ctx_ _bindings.Context, attributes NodeAttributes) (NodeUpdateAttributesResult, error) {
+ req_ := &pipeWithCtxUpdateAttributesRequest{
+ Attributes: attributes,
+ }
+ resp_ := &pipeWithCtxUpdateAttributesResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(PipeUpdateAttributesOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Synchronizes updates to the node to the underlying media, if it exists.
+//
+// This method will return when the filesystem server has flushed the
+// relevant updates to the underlying media, but does not guarantee the
+// underlying media has persisted the information, nor that any information
+// is committed to hardware. Clients may use `Sync` to ensure ordering
+// between operations.
+//
+// This method does not require any rights.
+func (p *PipeWithCtxInterface) Sync(ctx_ _bindings.Context) (NodeSyncResult, error) {
+ var req_ _bindings.Message
+ resp_ := &pipeWithCtxSyncResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(PipeSyncOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// A node for streaming unstructured data.
+// No pipe-specific methods are provided by this protocol. The client should
+// access the pipe via the socket object returned from the `PipeInfo` member
+// in [`fuchsia.io2/Representation`].
+type PipeWithCtx interface {
+ // Creates another connection to the same node.
+ //
+ // + `options` options applicable to both `Open` and `Reopen`,
+ // including negotiating protocol and restricting rights.
+ // See [`fuchsia.io2/ConnectionOptions`].
+ // + `object_request` is the server end of a channel created for the new
+ // connection. The caller may proceed to send messages on the
+ // corresponding client end right away.
+ //
+ // For files, the cloned connection and the original connection have
+ // independent seek offsets.
+ Reopen(ctx_ _bindings.Context, options ConnectionOptions, objectRequest _zx.Channel) error
+ // Terminates the connection to the node.
+ //
+ // After calling `Close`, the client must not send any other requests.
+ // The result of `Close` arrives as an epitaph, where the channel is closed
+ // by the server upon processing this operation.
+ //
+ // Closing the client end of the channel should be semantically equivalent
+ // to calling `Close` without monitoring the status epitaph.
+ //
+ // This method does not require any rights.
+ Close(ctx_ _bindings.Context) error
+ // Returns extra connection information and auxiliary handles.
+ //
+ // + `query` specifies the fields in `ConnectionInfo` that the caller is
+ // interested in.
+ // - `info` see [`fuchsia.io2/ConnectionInfo`] for details on the fields.
+ //
+ // When all known bits in `query` are set, the return value matches
+ // the one from [`OnConnectionInfo`], as if the caller requested that event
+ // using [`ConnectionFlags.GET_CONNECTION_INFO`].
+ //
+ // If the `Describe` operation fails, the connection is closed with the
+ // associated error.
+ //
+ // This method does not require any rights.
+ Describe(ctx_ _bindings.Context, query ConnectionInfoQuery) (ConnectionInfo, error)
+ // An event produced eagerly by the server if requested by
+ // [`ConnectionFlags.GET_CONNECTION_INFO`]. This event will be the
+ // first message from the server, and is sent exactly once.
+ //
+ // - `info` See [`fuchsia.io2/ConnectionInfo`] for details on the fields.
+ // All members should be present.
+ //
+ // Different from [`fuchsia.io/OnOpen`], an error during open/reopen is
+ // always manifested as an epitaph.
+ // Acquires a token which can be used to identify this connection at
+ // a later point in time.
+ //
+ // This method does not require any rights. Note that the token identifies
+ // the connection, hence carries the rights information on this connection.
+ GetToken(ctx_ _bindings.Context) (NodeGetTokenResult, error)
+ // Acquires information about the node.
+ //
+ // The attributes of a node should be stable, independent of the
+ // specific protocol used to access it.
+ //
+ // + `query` a bit-mask specifying which attributes to fetch. The server
+ // should not return more than necessary.
+ // - `attributes` the returned attributes.
+ //
+ // This method requires the [`Rights.GET_ATTRIBUTES`] right.
+ GetAttributes(ctx_ _bindings.Context, query NodeAttributesQuery) (NodeGetAttributesResult, error)
+ // Updates information about the node.
+ //
+ // + `attributes` the presence of a table field in `attributes` indicates
+ // the intent to update the corresponding attribute.
+ //
+ // This method requires the [`Rights.UPDATE_ATTRIBUTES`] right.
+ UpdateAttributes(ctx_ _bindings.Context, attributes NodeAttributes) (NodeUpdateAttributesResult, error)
+ // Synchronizes updates to the node to the underlying media, if it exists.
+ //
+ // This method will return when the filesystem server has flushed the
+ // relevant updates to the underlying media, but does not guarantee the
+ // underlying media has persisted the information, nor that any information
+ // is committed to hardware. Clients may use `Sync` to ensure ordering
+ // between operations.
+ //
+ // This method does not require any rights.
+ Sync(ctx_ _bindings.Context) (NodeSyncResult, error)
+}
+
+type PipeWithCtxTransitionalBase struct{}
+
+type PipeWithCtxInterfaceRequest _bindings.InterfaceRequest
+
+func NewPipeWithCtxInterfaceRequest() (PipeWithCtxInterfaceRequest, *PipeWithCtxInterface, error) {
+ req, cli, err := _bindings.NewInterfaceRequest()
+ return PipeWithCtxInterfaceRequest(req), (*PipeWithCtxInterface)(cli), err
+}
+
+type PipeWithCtxStub struct {
+ Impl PipeWithCtx
+}
+
+func (s_ *PipeWithCtxStub) Dispatch(args_ _bindings.DispatchArgs) (_bindings.Message, bool, error) {
+ switch args_.Ordinal {
+ case PipeReopenOrdinal:
+ in_ := pipeWithCtxReopenRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ err_ := s_.Impl.Reopen(args_.Ctx, in_.Options, in_.ObjectRequest)
+ return nil, false, err_
+ case PipeCloseOrdinal:
+ err_ := s_.Impl.Close(args_.Ctx)
+ return nil, false, err_
+ case PipeDescribeOrdinal:
+ in_ := pipeWithCtxDescribeRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ info, err_ := s_.Impl.Describe(args_.Ctx, in_.Query)
+ out_ := pipeWithCtxDescribeResponse{}
+ out_.Info = info
+ return &out_, true, err_
+ case PipeGetTokenOrdinal:
+ result, err_ := s_.Impl.GetToken(args_.Ctx)
+ out_ := pipeWithCtxGetTokenResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case PipeGetAttributesOrdinal:
+ in_ := pipeWithCtxGetAttributesRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.GetAttributes(args_.Ctx, in_.Query)
+ out_ := pipeWithCtxGetAttributesResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case PipeUpdateAttributesOrdinal:
+ in_ := pipeWithCtxUpdateAttributesRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.UpdateAttributes(args_.Ctx, in_.Attributes)
+ out_ := pipeWithCtxUpdateAttributesResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case PipeSyncOrdinal:
+ result, err_ := s_.Impl.Sync(args_.Ctx)
+ out_ := pipeWithCtxSyncResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ }
+ return nil, false, _bindings.ErrUnknownOrdinal
+}
+
+type PipeEventProxy _bindings.ChannelProxy
+
+func (p *PipeEventProxy) OnConnectionInfo(info ConnectionInfo) error {
+ event_ := &pipeWithCtxOnConnectionInfoResponse{
+ Info: info,
+ }
+ return ((*_bindings.ChannelProxy)(p)).Send(PipeOnConnectionInfoOrdinal, event_)
+}
diff --git a/src/syscall/zx/logger/impl.go b/src/syscall/zx/logger/impl.go
new file mode 100644
index 0000000..7c01615
--- /dev/null
+++ b/src/syscall/zx/logger/impl.go
@@ -0,0 +1,867 @@
+// Copyright 2020 The Fuchsia Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// Code generated by third_party/go/regen-fidl; DO NOT EDIT.
+
+package logger
+
+import (
+ _zx "syscall/zx"
+ fuchsiadiagnostics "syscall/zx/diagnostics"
+ _bindings "syscall/zx/fidl"
+)
+
+const (
+ // The interval between discrete log severity levels
+ LogSeverityStepSize uint8 = 16
+ // Maximum available log severity.
+ LogSeverityMaxStep uint8 = 6
+ // The interval between discrete log verbosity levels
+ LogVerbosityStepSize uint8 = 1
+ // Default log level used to initialize loggers.
+ LogLevelDefault uint8 = 48
+ // Max number of tags that can be passed to filter by listener.
+ MaxTags uint8 = 16
+ // Max tag length that can be passed to filter by listener.
+ MaxTagLenBytes uint8 = 63
+ // A placeholder tag which indicates to a `LogSink` that the tag should be replaced with
+ // the actual name of the logging component. If that name is unavailable, `LogSink`
+ // implementations should replace this value with `UNKNOWN`.
+ ComponentNamePlaceholderTag string = "COMPONENT_NAME"
+ // Max number of LogInterestSelectors that can be specified via a listener.
+ MaxLogSelectors uint8 = 5
+ // Max tags that will be attached to a LogMessage.
+ MaxTagsPerLogMessage uint8 = 5
+ // Max byte size for message payload.
+ MaxDatagramLenBytes uint32 = 32768
+ // Max log bytes per call to a listener.
+ MaxLogManySizeBytes uint64 = 16384
+)
+
+var _ _bindings.Enum = LogLevelFilter(0)
+
+// Log levels used with log related filtering.
+// Filtering uses a heuristic based on a threshold of
+// minimum severity level - with any log equal to or
+// greater than the threshold being included in the
+// printable logs.
+type LogLevelFilter int8
+
+const (
+ LogLevelFilterDeprecatedNone LogLevelFilter = -1
+ LogLevelFilterDeprecatedInfo LogLevelFilter = 0
+ LogLevelFilterDeprecatedWarn LogLevelFilter = 1
+ LogLevelFilterDeprecatedError LogLevelFilter = 2
+ LogLevelFilterDeprecatedFatal LogLevelFilter = 3
+ LogLevelFilterAll LogLevelFilter = -127
+ LogLevelFilterTrace LogLevelFilter = 16
+ LogLevelFilterDebug LogLevelFilter = 32
+ LogLevelFilterInfo LogLevelFilter = 48
+ LogLevelFilterWarn LogLevelFilter = 64
+ LogLevelFilterError LogLevelFilter = 80
+ LogLevelFilterFatal LogLevelFilter = 96
+ LogLevelFilterNone LogLevelFilter = 127
+)
+
+func (_ LogLevelFilter) I_EnumValues() []LogLevelFilter {
+ return []LogLevelFilter{
+ LogLevelFilterDeprecatedNone,
+ LogLevelFilterDeprecatedInfo,
+ LogLevelFilterDeprecatedWarn,
+ LogLevelFilterDeprecatedError,
+ LogLevelFilterDeprecatedFatal,
+ LogLevelFilterAll,
+ LogLevelFilterTrace,
+ LogLevelFilterDebug,
+ LogLevelFilterInfo,
+ LogLevelFilterWarn,
+ LogLevelFilterError,
+ LogLevelFilterFatal,
+ LogLevelFilterNone,
+ }
+}
+
+func (_ LogLevelFilter) I_EnumIsStrict() bool {
+ return true
+}
+
+func (x LogLevelFilter) IsUnknown() bool {
+ switch x {
+ case -1:
+ return true
+ case 0:
+ return true
+ case 1:
+ return true
+ case 2:
+ return true
+ case 3:
+ return true
+ case -127:
+ return true
+ case 16:
+ return true
+ case 32:
+ return true
+ case 48:
+ return true
+ case 64:
+ return true
+ case 80:
+ return true
+ case 96:
+ return true
+ case 127:
+ return true
+ default:
+ return false
+ }
+}
+
+func (x LogLevelFilter) String() string {
+ switch x {
+ case -1:
+ return "DeprecatedNone"
+ case 0:
+ return "DeprecatedInfo"
+ case 1:
+ return "DeprecatedWarn"
+ case 2:
+ return "DeprecatedError"
+ case 3:
+ return "DeprecatedFatal"
+ case -127:
+ return "All"
+ case 16:
+ return "Trace"
+ case 32:
+ return "Debug"
+ case 48:
+ return "Info"
+ case 64:
+ return "Warn"
+ case 80:
+ return "Error"
+ case 96:
+ return "Fatal"
+ case 127:
+ return "None"
+ }
+ return "Unknown"
+}
+
+type LogFilterOptions struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"56" fidl_alignment_v1:"8" fidl_size_v2:"56" fidl_alignment_v2:"8"`
+ FilterByPid bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Pid uint64 `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+ FilterByTid bool `fidl_offset_v1:"16" fidl_offset_v2:"16"`
+ Tid uint64 `fidl_offset_v1:"24" fidl_offset_v2:"24"`
+ // If more than zero, logs would be filtered based on verbosity and
+ // `min_severity` would be ignored.
+ Verbosity uint8 `fidl_offset_v1:"32" fidl_offset_v2:"32"`
+ // Severity used as threshold to determine logging level.
+ MinSeverity LogLevelFilter `fidl_offset_v1:"33" fidl_offset_v2:"33"`
+ // If non-empty, return all messages which contain at least one specified
+ // tag. If empty, messages will not be filtered by tag.
+ // Passed tags should not be more than `MAX_TAG_LEN_BYTES` bytes in length
+ // and max tags can be `MAX_TAGS`.
+ // Listener would be discarded if the limit is not followed.
+ Tags []string `fidl_offset_v1:"40" fidl_offset_v2:"40" fidl_bounds:"16,63"`
+}
+
+var _mLogFilterOptions = _bindings.CreateLazyMarshaler(LogFilterOptions{})
+
+func (msg *LogFilterOptions) Marshaler() _bindings.Marshaler {
+ return _mLogFilterOptions
+}
+
+// Conveyance to couple a specified Interest with its designated target,
+// specified via a ComponentSelector.
+type LogInterestSelector struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"32" fidl_alignment_v1:"8" fidl_size_v2:"32" fidl_alignment_v2:"8"`
+ Selector fuchsiadiagnostics.ComponentSelector `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Interest fuchsiadiagnostics.Interest `fidl_offset_v1:"16" fidl_offset_v2:"16"`
+}
+
+var _mLogInterestSelector = _bindings.CreateLazyMarshaler(LogInterestSelector{})
+
+func (msg *LogInterestSelector) Marshaler() _bindings.Marshaler {
+ return _mLogInterestSelector
+}
+
+type LogMessage struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"64" fidl_alignment_v1:"8" fidl_size_v2:"64" fidl_alignment_v2:"8"`
+ Pid uint64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Tid uint64 `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+ // https://fuchsia.dev/fuchsia-src/reference/syscalls/clock_get_monotonic.md
+ Time int64 `fidl_offset_v1:"16" fidl_offset_v2:"16"`
+ Severity int32 `fidl_offset_v1:"24" fidl_offset_v2:"24"`
+ // See //zircon/system/ulib/syslog/include/lib/syslog/wire_format.h. As messages
+ // can be served out of order, this should only be logged if more than last
+ // count.
+ DroppedLogs uint32 `fidl_offset_v1:"28" fidl_offset_v2:"28"`
+ Tags []string `fidl_offset_v1:"32" fidl_offset_v2:"32" fidl_bounds:"5,63"`
+ Msg string `fidl_offset_v1:"48" fidl_offset_v2:"48" fidl_bounds:"32768"`
+}
+
+var _mLogMessage = _bindings.CreateLazyMarshaler(LogMessage{})
+
+func (msg *LogMessage) Marshaler() _bindings.Marshaler {
+ return _mLogMessage
+}
+
+type logWithCtxListenRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ LogListener LogListenerWithCtxInterface `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_handle_subtype:"4"`
+ Options *LogFilterOptions `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+}
+
+var _mlogWithCtxListenRequest = _bindings.CreateLazyMarshaler(logWithCtxListenRequest{})
+
+func (msg *logWithCtxListenRequest) Marshaler() _bindings.Marshaler {
+ return _mlogWithCtxListenRequest
+}
+
+type logWithCtxDumpLogsRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ LogListener LogListenerWithCtxInterface `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_handle_subtype:"4"`
+ Options *LogFilterOptions `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+}
+
+var _mlogWithCtxDumpLogsRequest = _bindings.CreateLazyMarshaler(logWithCtxDumpLogsRequest{})
+
+func (msg *logWithCtxDumpLogsRequest) Marshaler() _bindings.Marshaler {
+ return _mlogWithCtxDumpLogsRequest
+}
+
+type logWithCtxListenSafeRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ LogListener LogListenerSafeWithCtxInterface `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_handle_subtype:"4"`
+ Options *LogFilterOptions `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+}
+
+var _mlogWithCtxListenSafeRequest = _bindings.CreateLazyMarshaler(logWithCtxListenSafeRequest{})
+
+func (msg *logWithCtxListenSafeRequest) Marshaler() _bindings.Marshaler {
+ return _mlogWithCtxListenSafeRequest
+}
+
+type logWithCtxDumpLogsSafeRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ LogListener LogListenerSafeWithCtxInterface `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_handle_subtype:"4"`
+ Options *LogFilterOptions `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+}
+
+var _mlogWithCtxDumpLogsSafeRequest = _bindings.CreateLazyMarshaler(logWithCtxDumpLogsSafeRequest{})
+
+func (msg *logWithCtxDumpLogsSafeRequest) Marshaler() _bindings.Marshaler {
+ return _mlogWithCtxDumpLogsSafeRequest
+}
+
+type logWithCtxListenSafeWithSelectorsRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"32" fidl_alignment_v1:"8" fidl_size_v2:"32" fidl_alignment_v2:"8"`
+ LogListener LogListenerSafeWithCtxInterface `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_handle_subtype:"4"`
+ Options *LogFilterOptions `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+ Selectors []LogInterestSelector `fidl_offset_v1:"16" fidl_offset_v2:"16" fidl_bounds:"5"`
+}
+
+var _mlogWithCtxListenSafeWithSelectorsRequest = _bindings.CreateLazyMarshaler(logWithCtxListenSafeWithSelectorsRequest{})
+
+func (msg *logWithCtxListenSafeWithSelectorsRequest) Marshaler() _bindings.Marshaler {
+ return _mlogWithCtxListenSafeWithSelectorsRequest
+}
+
+type logSinkWithCtxConnectRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Socket _zx.Socket `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_handle_subtype:"14" fidl_handle_rights:"2147483648" fidl_bounds:"0"`
+}
+
+var _mlogSinkWithCtxConnectRequest = _bindings.CreateLazyMarshaler(logSinkWithCtxConnectRequest{})
+
+func (msg *logSinkWithCtxConnectRequest) Marshaler() _bindings.Marshaler {
+ return _mlogSinkWithCtxConnectRequest
+}
+
+type logSinkWithCtxConnectStructuredRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Socket _zx.Socket `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_handle_subtype:"14" fidl_handle_rights:"2147483648" fidl_bounds:"0"`
+}
+
+var _mlogSinkWithCtxConnectStructuredRequest = _bindings.CreateLazyMarshaler(logSinkWithCtxConnectStructuredRequest{})
+
+func (msg *logSinkWithCtxConnectStructuredRequest) Marshaler() _bindings.Marshaler {
+ return _mlogSinkWithCtxConnectStructuredRequest
+}
+
+type logSinkWithCtxOnRegisterInterestResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Interest fuchsiadiagnostics.Interest `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mlogSinkWithCtxOnRegisterInterestResponse = _bindings.CreateLazyMarshaler(logSinkWithCtxOnRegisterInterestResponse{})
+
+func (msg *logSinkWithCtxOnRegisterInterestResponse) Marshaler() _bindings.Marshaler {
+ return _mlogSinkWithCtxOnRegisterInterestResponse
+}
+
+type logSinkWithCtxOnInterestChangedResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Interest fuchsiadiagnostics.Interest `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mlogSinkWithCtxOnInterestChangedResponse = _bindings.CreateLazyMarshaler(logSinkWithCtxOnInterestChangedResponse{})
+
+func (msg *logSinkWithCtxOnInterestChangedResponse) Marshaler() _bindings.Marshaler {
+ return _mlogSinkWithCtxOnInterestChangedResponse
+}
+
+type logListenerWithCtxLogRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"64" fidl_alignment_v1:"8" fidl_size_v2:"64" fidl_alignment_v2:"8"`
+ Log LogMessage `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mlogListenerWithCtxLogRequest = _bindings.CreateLazyMarshaler(logListenerWithCtxLogRequest{})
+
+func (msg *logListenerWithCtxLogRequest) Marshaler() _bindings.Marshaler {
+ return _mlogListenerWithCtxLogRequest
+}
+
+type logListenerWithCtxLogManyRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Log []LogMessage `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:""`
+}
+
+var _mlogListenerWithCtxLogManyRequest = _bindings.CreateLazyMarshaler(logListenerWithCtxLogManyRequest{})
+
+func (msg *logListenerWithCtxLogManyRequest) Marshaler() _bindings.Marshaler {
+ return _mlogListenerWithCtxLogManyRequest
+}
+
+type logListenerSafeWithCtxLogRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"64" fidl_alignment_v1:"8" fidl_size_v2:"64" fidl_alignment_v2:"8"`
+ Log LogMessage `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mlogListenerSafeWithCtxLogRequest = _bindings.CreateLazyMarshaler(logListenerSafeWithCtxLogRequest{})
+
+func (msg *logListenerSafeWithCtxLogRequest) Marshaler() _bindings.Marshaler {
+ return _mlogListenerSafeWithCtxLogRequest
+}
+
+type logListenerSafeWithCtxLogManyRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Log []LogMessage `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:""`
+}
+
+var _mlogListenerSafeWithCtxLogManyRequest = _bindings.CreateLazyMarshaler(logListenerSafeWithCtxLogManyRequest{})
+
+func (msg *logListenerSafeWithCtxLogManyRequest) Marshaler() _bindings.Marshaler {
+ return _mlogListenerSafeWithCtxLogManyRequest
+}
+
+const (
+ LogListenOrdinal uint64 = 0x4813203a753ef858
+ LogDumpLogsOrdinal uint64 = 0x4ec997e714d1bcda
+ LogListenSafeOrdinal uint64 = 0x4e523b04952a61b1
+ LogDumpLogsSafeOrdinal uint64 = 0x14e39f9cada72519
+ LogListenSafeWithSelectorsOrdinal uint64 = 0x1b365178771a007e
+)
+
+type LogWithCtxInterface _bindings.ChannelProxy
+
+func (p *LogWithCtxInterface) Listen(ctx_ _bindings.Context, logListener LogListenerWithCtxInterface, options *LogFilterOptions) error {
+ req_ := &logWithCtxListenRequest{
+ LogListener: logListener,
+ Options: options,
+ }
+ err_ := ((*_bindings.ChannelProxy)(p)).Send(LogListenOrdinal, req_)
+ return err_
+}
+
+func (p *LogWithCtxInterface) DumpLogs(ctx_ _bindings.Context, logListener LogListenerWithCtxInterface, options *LogFilterOptions) error {
+ req_ := &logWithCtxDumpLogsRequest{
+ LogListener: logListener,
+ Options: options,
+ }
+ err_ := ((*_bindings.ChannelProxy)(p)).Send(LogDumpLogsOrdinal, req_)
+ return err_
+}
+
+// Dumps all cached logs by calling LogMany() in batches followed by Log() for each new log
+// message.
+// A null `options` indicates no filtering is requested.
+func (p *LogWithCtxInterface) ListenSafe(ctx_ _bindings.Context, logListener LogListenerSafeWithCtxInterface, options *LogFilterOptions) error {
+ req_ := &logWithCtxListenSafeRequest{
+ LogListener: logListener,
+ Options: options,
+ }
+ err_ := ((*_bindings.ChannelProxy)(p)).Send(LogListenSafeOrdinal, req_)
+ return err_
+}
+
+// Dumps all cached logs by calling LogMany() followed by Done() on `log_listener`.
+// A null `options` indicates no filtering is requested.
+func (p *LogWithCtxInterface) DumpLogsSafe(ctx_ _bindings.Context, logListener LogListenerSafeWithCtxInterface, options *LogFilterOptions) error {
+ req_ := &logWithCtxDumpLogsSafeRequest{
+ LogListener: logListener,
+ Options: options,
+ }
+ err_ := ((*_bindings.ChannelProxy)(p)).Send(LogDumpLogsSafeOrdinal, req_)
+ return err_
+}
+
+// Listens to new log entries by calling Log() on `log_listener`.
+// A null `options` indicates no filtering is requested.
+func (p *LogWithCtxInterface) ListenSafeWithSelectors(ctx_ _bindings.Context, logListener LogListenerSafeWithCtxInterface, options *LogFilterOptions, selectors []LogInterestSelector) error {
+ req_ := &logWithCtxListenSafeWithSelectorsRequest{
+ LogListener: logListener,
+ Options: options,
+ Selectors: selectors,
+ }
+ err_ := ((*_bindings.ChannelProxy)(p)).Send(LogListenSafeWithSelectorsOrdinal, req_)
+ return err_
+}
+
+// Interface for LogListenerSafe to register to listen to logs.
+type LogWithCtx interface {
+ Listen(ctx_ _bindings.Context, logListener LogListenerWithCtxInterface, options *LogFilterOptions) error
+ DumpLogs(ctx_ _bindings.Context, logListener LogListenerWithCtxInterface, options *LogFilterOptions) error
+ // Dumps all cached logs by calling LogMany() in batches followed by Log() for each new log
+ // message.
+ // A null `options` indicates no filtering is requested.
+ ListenSafe(ctx_ _bindings.Context, logListener LogListenerSafeWithCtxInterface, options *LogFilterOptions) error
+ // Dumps all cached logs by calling LogMany() followed by Done() on `log_listener`.
+ // A null `options` indicates no filtering is requested.
+ DumpLogsSafe(ctx_ _bindings.Context, logListener LogListenerSafeWithCtxInterface, options *LogFilterOptions) error
+ // Listens to new log entries by calling Log() on `log_listener`.
+ // A null `options` indicates no filtering is requested.
+ ListenSafeWithSelectors(ctx_ _bindings.Context, logListener LogListenerSafeWithCtxInterface, options *LogFilterOptions, selectors []LogInterestSelector) error
+}
+
+type LogWithCtxTransitionalBase struct{}
+
+func (_ *LogWithCtxTransitionalBase) ListenSafe(ctx_ _bindings.Context, logListener LogListenerSafeWithCtxInterface, options *LogFilterOptions) error {
+ panic("Not Implemented")
+}
+func (_ *LogWithCtxTransitionalBase) DumpLogsSafe(ctx_ _bindings.Context, logListener LogListenerSafeWithCtxInterface, options *LogFilterOptions) error {
+ panic("Not Implemented")
+}
+func (_ *LogWithCtxTransitionalBase) ListenSafeWithSelectors(ctx_ _bindings.Context, logListener LogListenerSafeWithCtxInterface, options *LogFilterOptions, selectors []LogInterestSelector) error {
+ panic("Not Implemented")
+}
+
+type LogWithCtxInterfaceRequest _bindings.InterfaceRequest
+
+func NewLogWithCtxInterfaceRequest() (LogWithCtxInterfaceRequest, *LogWithCtxInterface, error) {
+ req, cli, err := _bindings.NewInterfaceRequest()
+ return LogWithCtxInterfaceRequest(req), (*LogWithCtxInterface)(cli), err
+}
+
+// Implements ServiceRequest.
+func (_ LogWithCtxInterfaceRequest) Name() string {
+ return "fuchsia.logger.Log"
+}
+func (c LogWithCtxInterfaceRequest) ToChannel() _zx.Channel {
+ return c.Channel
+}
+
+const LogName = "fuchsia.logger.Log"
+
+type LogWithCtxStub struct {
+ Impl LogWithCtx
+}
+
+func (s_ *LogWithCtxStub) Dispatch(args_ _bindings.DispatchArgs) (_bindings.Message, bool, error) {
+ switch args_.Ordinal {
+ case LogListenOrdinal:
+ in_ := logWithCtxListenRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ err_ := s_.Impl.Listen(args_.Ctx, in_.LogListener, in_.Options)
+ return nil, false, err_
+ case LogDumpLogsOrdinal:
+ in_ := logWithCtxDumpLogsRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ err_ := s_.Impl.DumpLogs(args_.Ctx, in_.LogListener, in_.Options)
+ return nil, false, err_
+ case LogListenSafeOrdinal:
+ in_ := logWithCtxListenSafeRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ err_ := s_.Impl.ListenSafe(args_.Ctx, in_.LogListener, in_.Options)
+ return nil, false, err_
+ case LogDumpLogsSafeOrdinal:
+ in_ := logWithCtxDumpLogsSafeRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ err_ := s_.Impl.DumpLogsSafe(args_.Ctx, in_.LogListener, in_.Options)
+ return nil, false, err_
+ case LogListenSafeWithSelectorsOrdinal:
+ in_ := logWithCtxListenSafeWithSelectorsRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ err_ := s_.Impl.ListenSafeWithSelectors(args_.Ctx, in_.LogListener, in_.Options, in_.Selectors)
+ return nil, false, err_
+ }
+ return nil, false, _bindings.ErrUnknownOrdinal
+}
+
+type LogEventProxy _bindings.ChannelProxy
+
+const (
+ LogSinkConnectOrdinal uint64 = 0x64cc4b58ae95c61b
+ LogSinkConnectStructuredOrdinal uint64 = 0x635424b504b2a74c
+ LogSinkOnRegisterInterestOrdinal uint64 = 0x1d63381c1eedaab7
+ LogSinkOnInterestChangedOrdinal uint64 = 0x66fd34c652fef3e
+)
+
+type LogSinkWithCtxInterface _bindings.ChannelProxy
+
+// Send this socket to be drained.
+//
+// See //zircon/system/ulib/syslog/include/lib/syslog/wire_format.h for what is expected to be
+// received over the socket.
+func (p *LogSinkWithCtxInterface) Connect(ctx_ _bindings.Context, socket _zx.Socket) error {
+ req_ := &logSinkWithCtxConnectRequest{
+ Socket: socket,
+ }
+ err_ := ((*_bindings.ChannelProxy)(p)).Send(LogSinkConnectOrdinal, req_)
+ return err_
+}
+
+// Send this socket to be drained, using the structured logs format.
+//
+// See //docs/reference/diagnostics/logs/encoding.md for what is expected to be recieved over
+// the socket.
+func (p *LogSinkWithCtxInterface) ConnectStructured(ctx_ _bindings.Context, socket _zx.Socket) error {
+ req_ := &logSinkWithCtxConnectStructuredRequest{
+ Socket: socket,
+ }
+ err_ := ((*_bindings.ChannelProxy)(p)).Send(LogSinkConnectStructuredOrdinal, req_)
+ return err_
+}
+
+// LogSink implementers emit this event whenever the scope of their
+// interest changes. Clients are expected to emit messages based on
+// the registered Interest. In the event that an empty interest is
+// conveyed, clients should emit messages based on their default
+// (compile time) configuration.
+func (p *LogSinkWithCtxInterface) ExpectOnRegisterInterest(ctx_ _bindings.Context) (fuchsiadiagnostics.Interest, error) {
+ resp_ := &logSinkWithCtxOnRegisterInterestResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Recv(LogSinkOnRegisterInterestOrdinal, resp_)
+ return resp_.Interest, err_
+}
+
+// Use OnRegisterInterest instead.
+func (p *LogSinkWithCtxInterface) ExpectOnInterestChanged(ctx_ _bindings.Context) (fuchsiadiagnostics.Interest, error) {
+ resp_ := &logSinkWithCtxOnInterestChangedResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Recv(LogSinkOnInterestChangedOrdinal, resp_)
+ return resp_.Interest, err_
+}
+
+// Drains a program's logs.
+type LogSinkWithCtx interface {
+ // Send this socket to be drained.
+ //
+ // See //zircon/system/ulib/syslog/include/lib/syslog/wire_format.h for what is expected to be
+ // received over the socket.
+ Connect(ctx_ _bindings.Context, socket _zx.Socket) error
+ // Send this socket to be drained, using the structured logs format.
+ //
+ // See //docs/reference/diagnostics/logs/encoding.md for what is expected to be recieved over
+ // the socket.
+ ConnectStructured(ctx_ _bindings.Context, socket _zx.Socket) error
+ // LogSink implementers emit this event whenever the scope of their
+ // interest changes. Clients are expected to emit messages based on
+ // the registered Interest. In the event that an empty interest is
+ // conveyed, clients should emit messages based on their default
+ // (compile time) configuration.
+ // Use OnRegisterInterest instead.
+}
+
+type LogSinkWithCtxTransitionalBase struct{}
+
+func (_ *LogSinkWithCtxTransitionalBase) ConnectStructured(ctx_ _bindings.Context, socket _zx.Socket) error {
+ panic("Not Implemented")
+}
+
+type LogSinkWithCtxInterfaceRequest _bindings.InterfaceRequest
+
+func NewLogSinkWithCtxInterfaceRequest() (LogSinkWithCtxInterfaceRequest, *LogSinkWithCtxInterface, error) {
+ req, cli, err := _bindings.NewInterfaceRequest()
+ return LogSinkWithCtxInterfaceRequest(req), (*LogSinkWithCtxInterface)(cli), err
+}
+
+// Implements ServiceRequest.
+func (_ LogSinkWithCtxInterfaceRequest) Name() string {
+ return "fuchsia.logger.LogSink"
+}
+func (c LogSinkWithCtxInterfaceRequest) ToChannel() _zx.Channel {
+ return c.Channel
+}
+
+const LogSinkName = "fuchsia.logger.LogSink"
+
+type LogSinkWithCtxStub struct {
+ Impl LogSinkWithCtx
+}
+
+func (s_ *LogSinkWithCtxStub) Dispatch(args_ _bindings.DispatchArgs) (_bindings.Message, bool, error) {
+ switch args_.Ordinal {
+ case LogSinkConnectOrdinal:
+ in_ := logSinkWithCtxConnectRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ err_ := s_.Impl.Connect(args_.Ctx, in_.Socket)
+ return nil, false, err_
+ case LogSinkConnectStructuredOrdinal:
+ in_ := logSinkWithCtxConnectStructuredRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ err_ := s_.Impl.ConnectStructured(args_.Ctx, in_.Socket)
+ return nil, false, err_
+ }
+ return nil, false, _bindings.ErrUnknownOrdinal
+}
+
+type LogSinkEventProxy _bindings.ChannelProxy
+
+func (p *LogSinkEventProxy) OnRegisterInterest(interest fuchsiadiagnostics.Interest) error {
+ event_ := &logSinkWithCtxOnRegisterInterestResponse{
+ Interest: interest,
+ }
+ return ((*_bindings.ChannelProxy)(p)).Send(LogSinkOnRegisterInterestOrdinal, event_)
+}
+func (p *LogSinkEventProxy) OnInterestChanged(interest fuchsiadiagnostics.Interest) error {
+ event_ := &logSinkWithCtxOnInterestChangedResponse{
+ Interest: interest,
+ }
+ return ((*_bindings.ChannelProxy)(p)).Send(LogSinkOnInterestChangedOrdinal, event_)
+}
+
+const (
+ LogListenerLogOrdinal uint64 = 0x427f2fe40ec94ab8
+ LogListenerLogManyOrdinal uint64 = 0x1834352f26b3e4ac
+ LogListenerDoneOrdinal uint64 = 0x613072ccb3e808da
+)
+
+type LogListenerWithCtxInterface _bindings.ChannelProxy
+
+func (p *LogListenerWithCtxInterface) Log(ctx_ _bindings.Context, log LogMessage) error {
+ req_ := &logListenerWithCtxLogRequest{
+ Log: log,
+ }
+ err_ := ((*_bindings.ChannelProxy)(p)).Send(LogListenerLogOrdinal, req_)
+ return err_
+}
+
+func (p *LogListenerWithCtxInterface) LogMany(ctx_ _bindings.Context, log []LogMessage) error {
+ req_ := &logListenerWithCtxLogManyRequest{
+ Log: log,
+ }
+ err_ := ((*_bindings.ChannelProxy)(p)).Send(LogListenerLogManyOrdinal, req_)
+ return err_
+}
+
+func (p *LogListenerWithCtxInterface) Done(ctx_ _bindings.Context) error {
+ var req_ _bindings.Message
+ err_ := ((*_bindings.ChannelProxy)(p)).Send(LogListenerDoneOrdinal, req_)
+ return err_
+}
+
+// Included temporarily for backwards compatiblity. Use `LogListenerSafe`.
+type LogListenerWithCtx interface {
+ Log(ctx_ _bindings.Context, log LogMessage) error
+ LogMany(ctx_ _bindings.Context, log []LogMessage) error
+ Done(ctx_ _bindings.Context) error
+}
+
+type LogListenerWithCtxTransitionalBase struct{}
+
+type LogListenerWithCtxInterfaceRequest _bindings.InterfaceRequest
+
+func NewLogListenerWithCtxInterfaceRequest() (LogListenerWithCtxInterfaceRequest, *LogListenerWithCtxInterface, error) {
+ req, cli, err := _bindings.NewInterfaceRequest()
+ return LogListenerWithCtxInterfaceRequest(req), (*LogListenerWithCtxInterface)(cli), err
+}
+
+type LogListenerWithCtxStub struct {
+ Impl LogListenerWithCtx
+}
+
+func (s_ *LogListenerWithCtxStub) Dispatch(args_ _bindings.DispatchArgs) (_bindings.Message, bool, error) {
+ switch args_.Ordinal {
+ case LogListenerLogOrdinal:
+ in_ := logListenerWithCtxLogRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ err_ := s_.Impl.Log(args_.Ctx, in_.Log)
+ return nil, false, err_
+ case LogListenerLogManyOrdinal:
+ in_ := logListenerWithCtxLogManyRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ err_ := s_.Impl.LogMany(args_.Ctx, in_.Log)
+ return nil, false, err_
+ case LogListenerDoneOrdinal:
+ err_ := s_.Impl.Done(args_.Ctx)
+ return nil, false, err_
+ }
+ return nil, false, _bindings.ErrUnknownOrdinal
+}
+
+type LogListenerEventProxy _bindings.ChannelProxy
+
+const (
+ LogListenerSafeLogOrdinal uint64 = 0x51a39de355d5bd0a
+ LogListenerSafeLogManyOrdinal uint64 = 0x1f056431bcd626a
+ LogListenerSafeDoneOrdinal uint64 = 0x34986151fcb584b8
+)
+
+type LogListenerSafeWithCtxInterface _bindings.ChannelProxy
+
+// Called for single messages.
+//
+// The return value is used for flow control, and implementers should acknowledge receipt of
+// each message in order to continue receiving future messages.
+func (p *LogListenerSafeWithCtxInterface) Log(ctx_ _bindings.Context, log LogMessage) error {
+ req_ := &logListenerSafeWithCtxLogRequest{
+ Log: log,
+ }
+ var resp_ _bindings.Message
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(LogListenerSafeLogOrdinal, req_, resp_)
+ return err_
+}
+
+// Called when serving cached logs.
+//
+// Max logs size per call is `MAX_LOG_MANY_SIZE_BYTES` bytes.
+//
+// The return value is used for flow control, and implementers should acknowledge receipt of
+// each batch in order to continue receiving future messages.
+func (p *LogListenerSafeWithCtxInterface) LogMany(ctx_ _bindings.Context, log []LogMessage) error {
+ req_ := &logListenerSafeWithCtxLogManyRequest{
+ Log: log,
+ }
+ var resp_ _bindings.Message
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(LogListenerSafeLogManyOrdinal, req_, resp_)
+ return err_
+}
+
+// Called when this listener was passed to `DumpLogsSafe()` and all cached logs have been sent.
+func (p *LogListenerSafeWithCtxInterface) Done(ctx_ _bindings.Context) error {
+ var req_ _bindings.Message
+ err_ := ((*_bindings.ChannelProxy)(p)).Send(LogListenerSafeDoneOrdinal, req_)
+ return err_
+}
+
+// A listener who will notify the `Log` of the receipt of each message.
+type LogListenerSafeWithCtx interface {
+ // Called for single messages.
+ //
+ // The return value is used for flow control, and implementers should acknowledge receipt of
+ // each message in order to continue receiving future messages.
+ Log(ctx_ _bindings.Context, log LogMessage) error
+ // Called when serving cached logs.
+ //
+ // Max logs size per call is `MAX_LOG_MANY_SIZE_BYTES` bytes.
+ //
+ // The return value is used for flow control, and implementers should acknowledge receipt of
+ // each batch in order to continue receiving future messages.
+ LogMany(ctx_ _bindings.Context, log []LogMessage) error
+ // Called when this listener was passed to `DumpLogsSafe()` and all cached logs have been sent.
+ Done(ctx_ _bindings.Context) error
+}
+
+type LogListenerSafeWithCtxTransitionalBase struct{}
+
+type LogListenerSafeWithCtxInterfaceRequest _bindings.InterfaceRequest
+
+func NewLogListenerSafeWithCtxInterfaceRequest() (LogListenerSafeWithCtxInterfaceRequest, *LogListenerSafeWithCtxInterface, error) {
+ req, cli, err := _bindings.NewInterfaceRequest()
+ return LogListenerSafeWithCtxInterfaceRequest(req), (*LogListenerSafeWithCtxInterface)(cli), err
+}
+
+type LogListenerSafeWithCtxStub struct {
+ Impl LogListenerSafeWithCtx
+}
+
+func (s_ *LogListenerSafeWithCtxStub) Dispatch(args_ _bindings.DispatchArgs) (_bindings.Message, bool, error) {
+ switch args_.Ordinal {
+ case LogListenerSafeLogOrdinal:
+ in_ := logListenerSafeWithCtxLogRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ err_ := s_.Impl.Log(args_.Ctx, in_.Log)
+ return nil, true, err_
+ case LogListenerSafeLogManyOrdinal:
+ in_ := logListenerSafeWithCtxLogManyRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ err_ := s_.Impl.LogMany(args_.Ctx, in_.Log)
+ return nil, true, err_
+ case LogListenerSafeDoneOrdinal:
+ err_ := s_.Impl.Done(args_.Ctx)
+ return nil, false, err_
+ }
+ return nil, false, _bindings.ErrUnknownOrdinal
+}
+
+type LogListenerSafeEventProxy _bindings.ChannelProxy
diff --git a/src/syscall/zx/mem/impl.go b/src/syscall/zx/mem/impl.go
new file mode 100644
index 0000000..2ad7e87
--- /dev/null
+++ b/src/syscall/zx/mem/impl.go
@@ -0,0 +1,145 @@
+// Copyright 2019 The Fuchsia Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// Code generated by third_party/go/regen-fidl; DO NOT EDIT.
+
+package mem
+
+import (
+ _zx "syscall/zx"
+ _bindings "syscall/zx/fidl"
+)
+
+// A buffer for data whose size is not necessarily a multiple of the page
+// size.
+//
+// VMO objects have a physical size that is always a multiple of the page
+// size. As such, VMO alone cannot serve as a buffer for arbitrarly sized
+// data. `fuchsia.mem.Buffer` is a standard struct that aggregate the VMO
+// and its size.
+type Buffer struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ // The vmo that contains the buffer.
+ Vmo _zx.VMO `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_handle_subtype:"3" fidl_handle_rights:"2147483648" fidl_bounds:"0"`
+ // The number of bytes in the buffer.
+ //
+ // The content of the buffer begin at the start of the VMO and continue
+ // for `size` bytes. To specify a range of bytes that do not start at
+ // the beginning of the VMO, use `Range` rather than buffer.
+ //
+ // This size must not be greater than the physical size of the VMO.
+ Size uint64 `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+}
+
+var _mBuffer = _bindings.CreateLazyMarshaler(Buffer{})
+
+func (msg *Buffer) Marshaler() _bindings.Marshaler {
+ return _mBuffer
+}
+
+// A range of bytes within a VMO.
+type Range struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"24" fidl_alignment_v2:"8"`
+ // The vmo that contains the bytes.
+ Vmo _zx.VMO `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_handle_subtype:"3" fidl_handle_rights:"2147483648" fidl_bounds:"0"`
+ // The offset of the first byte within the range relative to the start of
+ // the VMO.
+ //
+ // For example, if `offset` is zero, then the first byte in the range is
+ // the first byte in the VMO.
+ Offset uint64 `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+ // The number of bytes in the range.
+ //
+ // For example, if the offset is 3 and the size is 2, and the VMO starts
+ // with "abcdefg...", then the range contains "de".
+ //
+ // The sum of the offset and the size must not be greater than the
+ // physical size of the VMO.
+ Size uint64 `fidl_offset_v1:"16" fidl_offset_v2:"16"`
+}
+
+var _mRange = _bindings.CreateLazyMarshaler(Range{})
+
+func (msg *Range) Marshaler() _bindings.Marshaler {
+ return _mRange
+}
+
+type I_dataTag uint64
+
+const (
+ Data_unknownData = 0 // 0x00000000
+ DataBytes = 1 // 0x00000001
+ DataBuffer = 2 // 0x00000002
+)
+
+// Binary data that might be stored inline or in a VMO.
+//
+// Useful for performance-sensitive protocols that sometimes receive small
+// amounts of binary data (i.e., which is more efficient to provide using
+// `bytes`) but also need to support arbitrary amounts of data (i.e., which
+// need to be provided out-of-line in a `Buffer`).
+type Data struct {
+ I_dataTag `fidl:"x" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"true"`
+ I_unknownData interface{}
+ // The binary data provided inline in the message.
+ Bytes []uint8 `fidl_bounds:"" fidl_ordinal:"1"`
+ // The binary data provided out-of-line in a `Buffer`.
+ Buffer Buffer `fidl_ordinal:"2"`
+}
+
+func (_m *Data) reset() {
+ switch _m.I_dataTag {
+ case 1:
+ var _zeroed []uint8
+ _m.Bytes = _zeroed
+ case 2:
+ var _zeroed Buffer
+ _m.Buffer = _zeroed
+ default:
+ var _zeroed interface{}
+ _m.I_unknownData = _zeroed
+ }
+}
+
+func (_m *Data) Which() I_dataTag {
+ switch _m.I_dataTag {
+ case 1:
+ return DataBytes
+ case 2:
+ return DataBuffer
+ default:
+ return Data_unknownData
+ }
+}
+
+func (_m *Data) Ordinal() uint64 {
+ return uint64(_m.I_dataTag)
+}
+
+func (_m *Data) SetBytes(bytes []uint8) {
+ _m.reset()
+ _m.I_dataTag = DataBytes
+ _m.Bytes = bytes
+}
+
+func DataWithBytes(bytes []uint8) Data {
+ var _u Data
+ _u.SetBytes(bytes)
+ return _u
+}
+
+func (_m *Data) SetBuffer(buffer Buffer) {
+ _m.reset()
+ _m.I_dataTag = DataBuffer
+ _m.Buffer = buffer
+}
+
+func DataWithBuffer(buffer Buffer) Data {
+ var _u Data
+ _u.SetBuffer(buffer)
+ return _u
+}
+func (_m *Data) GetUnknownData() _bindings.UnknownData {
+ return _m.I_unknownData.(_bindings.UnknownData)
+}
diff --git a/src/syscall/zx/net/impl.go b/src/syscall/zx/net/impl.go
new file mode 100644
index 0000000..da668f9
--- /dev/null
+++ b/src/syscall/zx/net/impl.go
@@ -0,0 +1,953 @@
+// Copyright 2020 The Fuchsia Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// Code generated by third_party/go/regen-fidl; DO NOT EDIT.
+
+package net
+
+import (
+ _zx "syscall/zx"
+ _bindings "syscall/zx/fidl"
+)
+
+const (
+ // The maximum number of IPs returned by a lookup.
+ MaxLookupIps uint64 = 256
+ // The maximum length of a hostname, as per [RFC 1035 section 2.3.4](https://tools.ietf.org/html/rfc1035#section-2.3.4).
+ MaxHostnameSize uint64 = 255
+)
+
+var _ _bindings.Enum = LookupError(0)
+
+type LookupError uint32
+
+const (
+
+ // No result was found for this query.
+ LookupErrorNotFound LookupError = 1
+
+ // The lookup failed, but may succeed at a later time. For instance, the
+ // network or DNS server may be unreachable.
+ LookupErrorTransient LookupError = 2
+
+ // The lookup failed due to an invalid argument (for instance, the hostname was not encoded
+ // correctly, or was too long).
+ LookupErrorInvalidArgs LookupError = 3
+
+ // The lookup failed due to an internal error.
+ LookupErrorInternalError LookupError = 4
+)
+
+func (_ LookupError) I_EnumValues() []LookupError {
+ return []LookupError{
+ LookupErrorNotFound,
+ LookupErrorTransient,
+ LookupErrorInvalidArgs,
+ LookupErrorInternalError,
+ }
+}
+
+func (_ LookupError) I_EnumIsStrict() bool {
+ return true
+}
+
+func (x LookupError) IsUnknown() bool {
+ switch x {
+ case 1:
+ return true
+ case 2:
+ return true
+ case 3:
+ return true
+ case 4:
+ return true
+ default:
+ return false
+ }
+}
+
+func (x LookupError) String() string {
+ switch x {
+ case 1:
+ return "NotFound"
+ case 2:
+ return "Transient"
+ case 3:
+ return "InvalidArgs"
+ case 4:
+ return "InternalError"
+ }
+ return "Unknown"
+}
+
+var _ _bindings.Enum = IpVersion(0)
+
+// IpVersion is an IP version.
+type IpVersion uint32
+
+const (
+ IpVersionV4 IpVersion = 1
+ IpVersionV6 IpVersion = 2
+)
+
+func (_ IpVersion) I_EnumValues() []IpVersion {
+ return []IpVersion{
+ IpVersionV4,
+ IpVersionV6,
+ }
+}
+
+func (_ IpVersion) I_EnumIsStrict() bool {
+ return true
+}
+
+func (x IpVersion) IsUnknown() bool {
+ switch x {
+ case 1:
+ return true
+ case 2:
+ return true
+ default:
+ return false
+ }
+}
+
+func (x IpVersion) String() string {
+ switch x {
+ case 1:
+ return "V4"
+ case 2:
+ return "V6"
+ }
+ return "Unknown"
+}
+
+var _ _bindings.Bits = LookupIpOptions(0)
+
+type LookupIpOptions uint8
+
+const (
+ LookupIpOptionsV4Addrs LookupIpOptions = 1
+ LookupIpOptionsV6Addrs LookupIpOptions = 2
+ LookupIpOptionsCnameLookup LookupIpOptions = 4
+ LookupIpOptions_Mask LookupIpOptions = 7
+)
+
+func (_ LookupIpOptions) I_BitsMask() LookupIpOptions {
+ return LookupIpOptions_Mask
+}
+
+func (_ LookupIpOptions) I_BitsIsStrict() bool {
+ return true
+}
+
+func (x LookupIpOptions) HasUnknownBits() bool {
+ return x.GetUnknownBits() != 0
+}
+
+func (x LookupIpOptions) GetUnknownBits() uint64 {
+ return uint64(^LookupIpOptions_Mask & x)
+}
+
+func (x LookupIpOptions) InvertBits() LookupIpOptions {
+ return LookupIpOptions_Mask & ^x
+}
+
+// HasBits validates that all flipped bits in the mask are set.
+func (x LookupIpOptions) HasBits(mask LookupIpOptions) bool {
+ return mask|x == x
+}
+
+// ClearBits ensures all flipped bits in the mask are unset.
+func (x LookupIpOptions) ClearBits(mask LookupIpOptions) LookupIpOptions {
+ return ^mask & x
+}
+
+func (x LookupIpOptions) String() string {
+ switch x {
+ case 1:
+ return "V4Addrs"
+ case 2:
+ return "V6Addrs"
+ case 4:
+ return "CnameLookup"
+ }
+ return "Unknown"
+}
+
+type NameLookupLookupIpResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"48" fidl_alignment_v1:"8" fidl_size_v2:"48" fidl_alignment_v2:"8"`
+ Addr IpAddressInfo `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mNameLookupLookupIpResponse = _bindings.CreateLazyMarshaler(NameLookupLookupIpResponse{})
+
+func (msg *NameLookupLookupIpResponse) Marshaler() _bindings.Marshaler {
+ return _mNameLookupLookupIpResponse
+}
+
+type NameLookupLookupIp2Response struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result LookupResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mNameLookupLookupIp2Response = _bindings.CreateLazyMarshaler(NameLookupLookupIp2Response{})
+
+func (msg *NameLookupLookupIp2Response) Marshaler() _bindings.Marshaler {
+ return _mNameLookupLookupIp2Response
+}
+
+type NameLookupLookupHostnameResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Hostname string `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"255"`
+}
+
+var _mNameLookupLookupHostnameResponse = _bindings.CreateLazyMarshaler(NameLookupLookupHostnameResponse{})
+
+func (msg *NameLookupLookupHostnameResponse) Marshaler() _bindings.Marshaler {
+ return _mNameLookupLookupHostnameResponse
+}
+
+type IpAddressInfo struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"48" fidl_alignment_v1:"8" fidl_size_v2:"48" fidl_alignment_v2:"8"`
+ // All of the IPv4 addresses for the requested hostname.
+ Ipv4Addrs []Ipv4Address `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"256"`
+ // All of the IPv6 addresses for the requested hostname.
+ Ipv6Addrs []Ipv6Address `fidl_offset_v1:"16" fidl_offset_v2:"16" fidl_bounds:"256"`
+ // The canonical name of the requested hostname (usually the DNS CNAME record, if one exists).
+ CanonicalName *string `fidl_offset_v1:"32" fidl_offset_v2:"32" fidl_bounds:"256"`
+}
+
+var _mIpAddressInfo = _bindings.CreateLazyMarshaler(IpAddressInfo{})
+
+func (msg *IpAddressInfo) Marshaler() _bindings.Marshaler {
+ return _mIpAddressInfo
+}
+
+// Ipv4Address is expressed in network byte order, so the most significant byte
+// ("127" in the address "127.0.0.1") will be at index 0.
+type Ipv4Address struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"4" fidl_alignment_v1:"1" fidl_size_v2:"4" fidl_alignment_v2:"1"`
+ Addr [4]uint8 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mIpv4Address = _bindings.CreateLazyMarshaler(Ipv4Address{})
+
+func (msg *Ipv4Address) Marshaler() _bindings.Marshaler {
+ return _mIpv4Address
+}
+
+// Ipv6Address is expressed in network byte order, so the most significant byte
+// ("ff" in the address "ff02::1") will be at index 0.
+type Ipv6Address struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"1" fidl_size_v2:"16" fidl_alignment_v2:"1"`
+ Addr [16]uint8 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mIpv6Address = _bindings.CreateLazyMarshaler(Ipv6Address{})
+
+func (msg *Ipv6Address) Marshaler() _bindings.Marshaler {
+ return _mIpv6Address
+}
+
+// An IP address with its subnet prefix length.
+type Subnet struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"32" fidl_alignment_v1:"8" fidl_size_v2:"24" fidl_alignment_v2:"8"`
+ // The Ipv4 or Ipv6 address.
+ Addr IpAddress `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ // The prefix length of the netmask. E.g. for 192.168.1.0/24, the prefix
+ // length is 24, corresponding to a netmask of 255.255.255.0.
+ // For Ipv4, prefix_len must be in the range [0, 32].
+ // For Ipv6, prefix_len must be in the range [0, 128].
+ PrefixLen uint8 `fidl_offset_v1:"24" fidl_offset_v2:"16"`
+}
+
+var _mSubnet = _bindings.CreateLazyMarshaler(Subnet{})
+
+func (msg *Subnet) Marshaler() _bindings.Marshaler {
+ return _mSubnet
+}
+
+// A MAC address used to identify a network interface on the data link layer within the network.
+type MacAddress struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"6" fidl_alignment_v1:"1" fidl_size_v2:"6" fidl_alignment_v2:"1"`
+ Octets [6]uint8 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mMacAddress = _bindings.CreateLazyMarshaler(MacAddress{})
+
+func (msg *MacAddress) Marshaler() _bindings.Marshaler {
+ return _mMacAddress
+}
+
+// An IPv4 socket address, composed of an IPv4 address and a port.
+//
+// Inspired by the address definition in the [POSIX specification].
+//
+// [POSIX specification]: https://pubs.opengroup.org/onlinepubs/9699919799/
+type Ipv4SocketAddress struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"6" fidl_alignment_v1:"2" fidl_size_v2:"6" fidl_alignment_v2:"2"`
+ // IPv4 Address.
+ Address Ipv4Address `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ // Transport-layer port.
+ Port uint16 `fidl_offset_v1:"4" fidl_offset_v2:"4"`
+}
+
+var _mIpv4SocketAddress = _bindings.CreateLazyMarshaler(Ipv4SocketAddress{})
+
+func (msg *Ipv4SocketAddress) Marshaler() _bindings.Marshaler {
+ return _mIpv4SocketAddress
+}
+
+// An IPV6 socket address, composed of an IPv6 address, a port, and a scope identifier.
+//
+// Inspired by the address definition in the [POSIX specification].
+//
+// [POSIX specification]: https://pubs.opengroup.org/onlinepubs/9699919799/
+type Ipv6SocketAddress struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"32" fidl_alignment_v1:"8" fidl_size_v2:"32" fidl_alignment_v2:"8"`
+ // IPv6 Address.
+ Address Ipv6Address `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ // Transport-layer port.
+ Port uint16 `fidl_offset_v1:"16" fidl_offset_v2:"16"`
+ // Provides a means to identify to which zone a non-global address belongs.
+ //
+ // A node may have interfaces attached to different zones of the same scope, for example
+ // different link-local zones are disambiguated by the use of a `zone_index` providing the
+ // interface identifier.
+ //
+ // `zone_index` 0 is the default zone.
+ //
+ // See [RFC 4007] for terminology and examples.
+ //
+ // [RFC 4007]: https://tools.ietf.org/html/rfc4007
+ ZoneIndex uint64 `fidl_offset_v1:"24" fidl_offset_v2:"24"`
+}
+
+var _mIpv6SocketAddress = _bindings.CreateLazyMarshaler(Ipv6SocketAddress{})
+
+func (msg *Ipv6SocketAddress) Marshaler() _bindings.Marshaler {
+ return _mIpv6SocketAddress
+}
+
+type nameLookupWithCtxLookupIpRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"24" fidl_alignment_v2:"8"`
+ Hostname string `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"255"`
+ Options LookupIpOptions `fidl_offset_v1:"16" fidl_offset_v2:"16"`
+}
+
+var _mnameLookupWithCtxLookupIpRequest = _bindings.CreateLazyMarshaler(nameLookupWithCtxLookupIpRequest{})
+
+func (msg *nameLookupWithCtxLookupIpRequest) Marshaler() _bindings.Marshaler {
+ return _mnameLookupWithCtxLookupIpRequest
+}
+
+type nameLookupWithCtxLookupIpResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result NameLookupLookupIpResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mnameLookupWithCtxLookupIpResponse = _bindings.CreateLazyMarshaler(nameLookupWithCtxLookupIpResponse{})
+
+func (msg *nameLookupWithCtxLookupIpResponse) Marshaler() _bindings.Marshaler {
+ return _mnameLookupWithCtxLookupIpResponse
+}
+
+type nameLookupWithCtxLookupIp2Request struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"32" fidl_alignment_v1:"8" fidl_size_v2:"32" fidl_alignment_v2:"8"`
+ Hostname string `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"255"`
+ Options LookupIpOptions2 `fidl_offset_v1:"16" fidl_offset_v2:"16"`
+}
+
+var _mnameLookupWithCtxLookupIp2Request = _bindings.CreateLazyMarshaler(nameLookupWithCtxLookupIp2Request{})
+
+func (msg *nameLookupWithCtxLookupIp2Request) Marshaler() _bindings.Marshaler {
+ return _mnameLookupWithCtxLookupIp2Request
+}
+
+type nameLookupWithCtxLookupIp2Response struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result NameLookupLookupIp2Result `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mnameLookupWithCtxLookupIp2Response = _bindings.CreateLazyMarshaler(nameLookupWithCtxLookupIp2Response{})
+
+func (msg *nameLookupWithCtxLookupIp2Response) Marshaler() _bindings.Marshaler {
+ return _mnameLookupWithCtxLookupIp2Response
+}
+
+type nameLookupWithCtxLookupHostnameRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Addr IpAddress `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mnameLookupWithCtxLookupHostnameRequest = _bindings.CreateLazyMarshaler(nameLookupWithCtxLookupHostnameRequest{})
+
+func (msg *nameLookupWithCtxLookupHostnameRequest) Marshaler() _bindings.Marshaler {
+ return _mnameLookupWithCtxLookupHostnameRequest
+}
+
+type nameLookupWithCtxLookupHostnameResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result NameLookupLookupHostnameResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mnameLookupWithCtxLookupHostnameResponse = _bindings.CreateLazyMarshaler(nameLookupWithCtxLookupHostnameResponse{})
+
+func (msg *nameLookupWithCtxLookupHostnameResponse) Marshaler() _bindings.Marshaler {
+ return _mnameLookupWithCtxLookupHostnameResponse
+}
+
+type I_nameLookupLookupIpResultTag uint64
+
+const (
+ NameLookupLookupIpResultResponse = 1 // 0x00000001
+ NameLookupLookupIpResultErr = 2 // 0x00000002
+)
+
+type NameLookupLookupIpResult struct {
+ I_nameLookupLookupIpResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response NameLookupLookupIpResponse `fidl_ordinal:"1"`
+ Err LookupError `fidl_ordinal:"2"`
+}
+
+func (_m *NameLookupLookupIpResult) reset() {
+ switch _m.I_nameLookupLookupIpResultTag {
+ case 1:
+ var _zeroed NameLookupLookupIpResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed LookupError
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *NameLookupLookupIpResult) Which() I_nameLookupLookupIpResultTag {
+ return _m.I_nameLookupLookupIpResultTag
+}
+
+func (_m *NameLookupLookupIpResult) Ordinal() uint64 {
+ return uint64(_m.I_nameLookupLookupIpResultTag)
+}
+
+func (_m *NameLookupLookupIpResult) SetResponse(response NameLookupLookupIpResponse) {
+ _m.reset()
+ _m.I_nameLookupLookupIpResultTag = NameLookupLookupIpResultResponse
+ _m.Response = response
+}
+
+func NameLookupLookupIpResultWithResponse(response NameLookupLookupIpResponse) NameLookupLookupIpResult {
+ var _u NameLookupLookupIpResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *NameLookupLookupIpResult) SetErr(err LookupError) {
+ _m.reset()
+ _m.I_nameLookupLookupIpResultTag = NameLookupLookupIpResultErr
+ _m.Err = err
+}
+
+func NameLookupLookupIpResultWithErr(err LookupError) NameLookupLookupIpResult {
+ var _u NameLookupLookupIpResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_nameLookupLookupIp2ResultTag uint64
+
+const (
+ NameLookupLookupIp2ResultResponse = 1 // 0x00000001
+ NameLookupLookupIp2ResultErr = 2 // 0x00000002
+)
+
+type NameLookupLookupIp2Result struct {
+ I_nameLookupLookupIp2ResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response NameLookupLookupIp2Response `fidl_ordinal:"1"`
+ Err LookupError `fidl_ordinal:"2"`
+}
+
+func (_m *NameLookupLookupIp2Result) reset() {
+ switch _m.I_nameLookupLookupIp2ResultTag {
+ case 1:
+ var _zeroed NameLookupLookupIp2Response
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed LookupError
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *NameLookupLookupIp2Result) Which() I_nameLookupLookupIp2ResultTag {
+ return _m.I_nameLookupLookupIp2ResultTag
+}
+
+func (_m *NameLookupLookupIp2Result) Ordinal() uint64 {
+ return uint64(_m.I_nameLookupLookupIp2ResultTag)
+}
+
+func (_m *NameLookupLookupIp2Result) SetResponse(response NameLookupLookupIp2Response) {
+ _m.reset()
+ _m.I_nameLookupLookupIp2ResultTag = NameLookupLookupIp2ResultResponse
+ _m.Response = response
+}
+
+func NameLookupLookupIp2ResultWithResponse(response NameLookupLookupIp2Response) NameLookupLookupIp2Result {
+ var _u NameLookupLookupIp2Result
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *NameLookupLookupIp2Result) SetErr(err LookupError) {
+ _m.reset()
+ _m.I_nameLookupLookupIp2ResultTag = NameLookupLookupIp2ResultErr
+ _m.Err = err
+}
+
+func NameLookupLookupIp2ResultWithErr(err LookupError) NameLookupLookupIp2Result {
+ var _u NameLookupLookupIp2Result
+ _u.SetErr(err)
+ return _u
+}
+
+type I_nameLookupLookupHostnameResultTag uint64
+
+const (
+ NameLookupLookupHostnameResultResponse = 1 // 0x00000001
+ NameLookupLookupHostnameResultErr = 2 // 0x00000002
+)
+
+type NameLookupLookupHostnameResult struct {
+ I_nameLookupLookupHostnameResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response NameLookupLookupHostnameResponse `fidl_ordinal:"1"`
+ Err LookupError `fidl_ordinal:"2"`
+}
+
+func (_m *NameLookupLookupHostnameResult) reset() {
+ switch _m.I_nameLookupLookupHostnameResultTag {
+ case 1:
+ var _zeroed NameLookupLookupHostnameResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed LookupError
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *NameLookupLookupHostnameResult) Which() I_nameLookupLookupHostnameResultTag {
+ return _m.I_nameLookupLookupHostnameResultTag
+}
+
+func (_m *NameLookupLookupHostnameResult) Ordinal() uint64 {
+ return uint64(_m.I_nameLookupLookupHostnameResultTag)
+}
+
+func (_m *NameLookupLookupHostnameResult) SetResponse(response NameLookupLookupHostnameResponse) {
+ _m.reset()
+ _m.I_nameLookupLookupHostnameResultTag = NameLookupLookupHostnameResultResponse
+ _m.Response = response
+}
+
+func NameLookupLookupHostnameResultWithResponse(response NameLookupLookupHostnameResponse) NameLookupLookupHostnameResult {
+ var _u NameLookupLookupHostnameResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *NameLookupLookupHostnameResult) SetErr(err LookupError) {
+ _m.reset()
+ _m.I_nameLookupLookupHostnameResultTag = NameLookupLookupHostnameResultErr
+ _m.Err = err
+}
+
+func NameLookupLookupHostnameResultWithErr(err LookupError) NameLookupLookupHostnameResult {
+ var _u NameLookupLookupHostnameResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_ipAddressTag uint64
+
+const (
+ IpAddressIpv4 = 1 // 0x00000001
+ IpAddressIpv6 = 2 // 0x00000002
+)
+
+// Represents an IP address that may be either v4 or v6.
+type IpAddress struct {
+ I_ipAddressTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Ipv4 Ipv4Address `fidl_ordinal:"1"`
+ Ipv6 Ipv6Address `fidl_ordinal:"2"`
+}
+
+func (_m *IpAddress) reset() {
+ switch _m.I_ipAddressTag {
+ case 1:
+ var _zeroed Ipv4Address
+ _m.Ipv4 = _zeroed
+ case 2:
+ var _zeroed Ipv6Address
+ _m.Ipv6 = _zeroed
+ }
+}
+
+func (_m *IpAddress) Which() I_ipAddressTag {
+ return _m.I_ipAddressTag
+}
+
+func (_m *IpAddress) Ordinal() uint64 {
+ return uint64(_m.I_ipAddressTag)
+}
+
+func (_m *IpAddress) SetIpv4(ipv4 Ipv4Address) {
+ _m.reset()
+ _m.I_ipAddressTag = IpAddressIpv4
+ _m.Ipv4 = ipv4
+}
+
+func IpAddressWithIpv4(ipv4 Ipv4Address) IpAddress {
+ var _u IpAddress
+ _u.SetIpv4(ipv4)
+ return _u
+}
+
+func (_m *IpAddress) SetIpv6(ipv6 Ipv6Address) {
+ _m.reset()
+ _m.I_ipAddressTag = IpAddressIpv6
+ _m.Ipv6 = ipv6
+}
+
+func IpAddressWithIpv6(ipv6 Ipv6Address) IpAddress {
+ var _u IpAddress
+ _u.SetIpv6(ipv6)
+ return _u
+}
+
+type I_socketAddressTag uint64
+
+const (
+ SocketAddressIpv4 = 1 // 0x00000001
+ SocketAddressIpv6 = 2 // 0x00000002
+)
+
+// Represents an IP socket address that may be either v4 or v6.
+type SocketAddress struct {
+ I_socketAddressTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Ipv4 Ipv4SocketAddress `fidl_ordinal:"1"`
+ Ipv6 Ipv6SocketAddress `fidl_ordinal:"2"`
+}
+
+func (_m *SocketAddress) reset() {
+ switch _m.I_socketAddressTag {
+ case 1:
+ var _zeroed Ipv4SocketAddress
+ _m.Ipv4 = _zeroed
+ case 2:
+ var _zeroed Ipv6SocketAddress
+ _m.Ipv6 = _zeroed
+ }
+}
+
+func (_m *SocketAddress) Which() I_socketAddressTag {
+ return _m.I_socketAddressTag
+}
+
+func (_m *SocketAddress) Ordinal() uint64 {
+ return uint64(_m.I_socketAddressTag)
+}
+
+func (_m *SocketAddress) SetIpv4(ipv4 Ipv4SocketAddress) {
+ _m.reset()
+ _m.I_socketAddressTag = SocketAddressIpv4
+ _m.Ipv4 = ipv4
+}
+
+func SocketAddressWithIpv4(ipv4 Ipv4SocketAddress) SocketAddress {
+ var _u SocketAddress
+ _u.SetIpv4(ipv4)
+ return _u
+}
+
+func (_m *SocketAddress) SetIpv6(ipv6 Ipv6SocketAddress) {
+ _m.reset()
+ _m.I_socketAddressTag = SocketAddressIpv6
+ _m.Ipv6 = ipv6
+}
+
+func SocketAddressWithIpv6(ipv6 Ipv6SocketAddress) SocketAddress {
+ var _u SocketAddress
+ _u.SetIpv6(ipv6)
+ return _u
+}
+
+// Lookup operation options.
+type LookupIpOptions2 struct {
+ _ struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ I_unknownData interface{}
+ // Include IPv4 results. Defaults to false.
+ Ipv4Lookup bool `fidl_ordinal:"1"`
+ Ipv4LookupPresent bool
+ // Include IPv6 results. Defaults to false.
+ Ipv6Lookup bool `fidl_ordinal:"2"`
+ Ipv6LookupPresent bool
+ // Sort addresses in order of preference.
+ //
+ // It true, Addresses are sorted according to destination address selection described in [RFC
+ // 6724 Section 6](https://tools.ietf.org/html/rfc6724#section-6).
+ //
+ // Defaults to false.
+ SortAddresses bool `fidl_ordinal:"3"`
+ SortAddressesPresent bool
+}
+
+func (u *LookupIpOptions2) SetIpv4Lookup(ipv4Lookup bool) {
+ u.Ipv4Lookup = ipv4Lookup
+ u.Ipv4LookupPresent = true
+}
+
+func (u *LookupIpOptions2) GetIpv4Lookup() bool {
+ return u.Ipv4Lookup
+}
+
+func (u *LookupIpOptions2) GetIpv4LookupWithDefault(_default bool) bool {
+ if !u.HasIpv4Lookup() {
+ return _default
+ }
+ return u.Ipv4Lookup
+}
+
+func (u *LookupIpOptions2) HasIpv4Lookup() bool {
+ return u.Ipv4LookupPresent
+}
+
+func (u *LookupIpOptions2) ClearIpv4Lookup() {
+ u.Ipv4LookupPresent = false
+}
+
+func (u *LookupIpOptions2) SetIpv6Lookup(ipv6Lookup bool) {
+ u.Ipv6Lookup = ipv6Lookup
+ u.Ipv6LookupPresent = true
+}
+
+func (u *LookupIpOptions2) GetIpv6Lookup() bool {
+ return u.Ipv6Lookup
+}
+
+func (u *LookupIpOptions2) GetIpv6LookupWithDefault(_default bool) bool {
+ if !u.HasIpv6Lookup() {
+ return _default
+ }
+ return u.Ipv6Lookup
+}
+
+func (u *LookupIpOptions2) HasIpv6Lookup() bool {
+ return u.Ipv6LookupPresent
+}
+
+func (u *LookupIpOptions2) ClearIpv6Lookup() {
+ u.Ipv6LookupPresent = false
+}
+
+func (u *LookupIpOptions2) SetSortAddresses(sortAddresses bool) {
+ u.SortAddresses = sortAddresses
+ u.SortAddressesPresent = true
+}
+
+func (u *LookupIpOptions2) GetSortAddresses() bool {
+ return u.SortAddresses
+}
+
+func (u *LookupIpOptions2) GetSortAddressesWithDefault(_default bool) bool {
+ if !u.HasSortAddresses() {
+ return _default
+ }
+ return u.SortAddresses
+}
+
+func (u *LookupIpOptions2) HasSortAddresses() bool {
+ return u.SortAddressesPresent
+}
+
+func (u *LookupIpOptions2) ClearSortAddresses() {
+ u.SortAddressesPresent = false
+}
+
+func (u *LookupIpOptions2) HasUnknownData() bool {
+ return u.I_unknownData != nil
+}
+
+func (u *LookupIpOptions2) GetUnknownData() map[uint64]_bindings.UnknownData {
+ return u.I_unknownData.(map[uint64]_bindings.UnknownData)
+}
+
+// The result of a lookup operation.
+type LookupResult struct {
+ _ struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ I_unknownData interface{}
+ // The IP addresses resulting from a lookup.
+ //
+ // If sorting was requested, `addresses` is sorted in order of preference, most preferred
+ // destination address first.
+ Addresses []IpAddress `fidl_bounds:"256" fidl_ordinal:"1"`
+ AddressesPresent bool
+}
+
+func (u *LookupResult) SetAddresses(addresses []IpAddress) {
+ u.Addresses = addresses
+ u.AddressesPresent = true
+}
+
+func (u *LookupResult) GetAddresses() []IpAddress {
+ return u.Addresses
+}
+
+func (u *LookupResult) GetAddressesWithDefault(_default []IpAddress) []IpAddress {
+ if !u.HasAddresses() {
+ return _default
+ }
+ return u.Addresses
+}
+
+func (u *LookupResult) HasAddresses() bool {
+ return u.AddressesPresent
+}
+
+func (u *LookupResult) ClearAddresses() {
+ u.AddressesPresent = false
+}
+
+func (u *LookupResult) HasUnknownData() bool {
+ return u.I_unknownData != nil
+}
+
+func (u *LookupResult) GetUnknownData() map[uint64]_bindings.UnknownData {
+ return u.I_unknownData.(map[uint64]_bindings.UnknownData)
+}
+
+const (
+ NameLookupLookupIpOrdinal uint64 = 0x58576c7210cd0f32
+ NameLookupLookupIp2Ordinal uint64 = 0x6d89c37498abf754
+ NameLookupLookupHostnameOrdinal uint64 = 0x5dfea9b2c92f510a
+)
+
+type NameLookupWithCtxInterface _bindings.ChannelProxy
+
+// Look up a list of IP addresses by hostname.
+//
+// If `hostname` is an Internationalized Domain Name, it must be encoded as per RFC 3490.
+func (p *NameLookupWithCtxInterface) LookupIp(ctx_ _bindings.Context, hostname string, options LookupIpOptions) (NameLookupLookupIpResult, error) {
+ req_ := &nameLookupWithCtxLookupIpRequest{
+ Hostname: hostname,
+ Options: options,
+ }
+ resp_ := &nameLookupWithCtxLookupIpResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(NameLookupLookupIpOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Lookup a list of IP addresses by hostname.
+//
+// If `hostname` is an Internationalized Domain Name, it must be encoded as per RFC 3490.
+func (p *NameLookupWithCtxInterface) LookupIp2(ctx_ _bindings.Context, hostname string, options LookupIpOptions2) (NameLookupLookupIp2Result, error) {
+ req_ := &nameLookupWithCtxLookupIp2Request{
+ Hostname: hostname,
+ Options: options,
+ }
+ resp_ := &nameLookupWithCtxLookupIp2Response{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(NameLookupLookupIp2Ordinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Look up a hostname by IP address.
+func (p *NameLookupWithCtxInterface) LookupHostname(ctx_ _bindings.Context, addr IpAddress) (NameLookupLookupHostnameResult, error) {
+ req_ := &nameLookupWithCtxLookupHostnameRequest{
+ Addr: addr,
+ }
+ resp_ := &nameLookupWithCtxLookupHostnameResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(NameLookupLookupHostnameOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+type NameLookupWithCtx interface {
+ // Look up a list of IP addresses by hostname.
+ //
+ // If `hostname` is an Internationalized Domain Name, it must be encoded as per RFC 3490.
+ LookupIp(ctx_ _bindings.Context, hostname string, options LookupIpOptions) (NameLookupLookupIpResult, error)
+ // Lookup a list of IP addresses by hostname.
+ //
+ // If `hostname` is an Internationalized Domain Name, it must be encoded as per RFC 3490.
+ LookupIp2(ctx_ _bindings.Context, hostname string, options LookupIpOptions2) (NameLookupLookupIp2Result, error)
+ // Look up a hostname by IP address.
+ LookupHostname(ctx_ _bindings.Context, addr IpAddress) (NameLookupLookupHostnameResult, error)
+}
+
+type NameLookupWithCtxTransitionalBase struct{}
+
+type NameLookupWithCtxInterfaceRequest _bindings.InterfaceRequest
+
+func NewNameLookupWithCtxInterfaceRequest() (NameLookupWithCtxInterfaceRequest, *NameLookupWithCtxInterface, error) {
+ req, cli, err := _bindings.NewInterfaceRequest()
+ return NameLookupWithCtxInterfaceRequest(req), (*NameLookupWithCtxInterface)(cli), err
+}
+
+// Implements ServiceRequest.
+func (_ NameLookupWithCtxInterfaceRequest) Name() string {
+ return "fuchsia.net.NameLookup"
+}
+func (c NameLookupWithCtxInterfaceRequest) ToChannel() _zx.Channel {
+ return c.Channel
+}
+
+const NameLookupName = "fuchsia.net.NameLookup"
+
+type NameLookupWithCtxStub struct {
+ Impl NameLookupWithCtx
+}
+
+func (s_ *NameLookupWithCtxStub) Dispatch(args_ _bindings.DispatchArgs) (_bindings.Message, bool, error) {
+ switch args_.Ordinal {
+ case NameLookupLookupIpOrdinal:
+ in_ := nameLookupWithCtxLookupIpRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.LookupIp(args_.Ctx, in_.Hostname, in_.Options)
+ out_ := nameLookupWithCtxLookupIpResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case NameLookupLookupIp2Ordinal:
+ in_ := nameLookupWithCtxLookupIp2Request{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.LookupIp2(args_.Ctx, in_.Hostname, in_.Options)
+ out_ := nameLookupWithCtxLookupIp2Response{}
+ out_.Result = result
+ return &out_, true, err_
+ case NameLookupLookupHostnameOrdinal:
+ in_ := nameLookupWithCtxLookupHostnameRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.LookupHostname(args_.Ctx, in_.Addr)
+ out_ := nameLookupWithCtxLookupHostnameResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ }
+ return nil, false, _bindings.ErrUnknownOrdinal
+}
+
+type NameLookupEventProxy _bindings.ChannelProxy
diff --git a/src/syscall/zx/net/name/impl.go b/src/syscall/zx/net/name/impl.go
new file mode 100644
index 0000000..160e02e
--- /dev/null
+++ b/src/syscall/zx/net/name/impl.go
@@ -0,0 +1,593 @@
+// Copyright 2020 The Fuchsia Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// Code generated by third_party/go/regen-fidl; DO NOT EDIT.
+
+package name
+
+import (
+ _zx "syscall/zx"
+ _bindings "syscall/zx/fidl"
+ fuchsianet "syscall/zx/net"
+)
+
+type LookupAdminSetDnsServersResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mLookupAdminSetDnsServersResponse = _bindings.CreateLazyMarshaler(LookupAdminSetDnsServersResponse{})
+
+func (msg *LookupAdminSetDnsServersResponse) Marshaler() _bindings.Marshaler {
+ return _mLookupAdminSetDnsServersResponse
+}
+
+type lookupAdminWithCtxSetDnsServersRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Servers []fuchsianet.SocketAddress `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:""`
+}
+
+var _mlookupAdminWithCtxSetDnsServersRequest = _bindings.CreateLazyMarshaler(lookupAdminWithCtxSetDnsServersRequest{})
+
+func (msg *lookupAdminWithCtxSetDnsServersRequest) Marshaler() _bindings.Marshaler {
+ return _mlookupAdminWithCtxSetDnsServersRequest
+}
+
+type lookupAdminWithCtxSetDnsServersResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result LookupAdminSetDnsServersResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mlookupAdminWithCtxSetDnsServersResponse = _bindings.CreateLazyMarshaler(lookupAdminWithCtxSetDnsServersResponse{})
+
+func (msg *lookupAdminWithCtxSetDnsServersResponse) Marshaler() _bindings.Marshaler {
+ return _mlookupAdminWithCtxSetDnsServersResponse
+}
+
+type lookupAdminWithCtxGetDnsServersResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Servers []fuchsianet.SocketAddress `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:""`
+}
+
+var _mlookupAdminWithCtxGetDnsServersResponse = _bindings.CreateLazyMarshaler(lookupAdminWithCtxGetDnsServersResponse{})
+
+func (msg *lookupAdminWithCtxGetDnsServersResponse) Marshaler() _bindings.Marshaler {
+ return _mlookupAdminWithCtxGetDnsServersResponse
+}
+
+type dnsServerWatcherWithCtxWatchServersResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Servers []DnsServer `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:""`
+}
+
+var _mdnsServerWatcherWithCtxWatchServersResponse = _bindings.CreateLazyMarshaler(dnsServerWatcherWithCtxWatchServersResponse{})
+
+func (msg *dnsServerWatcherWithCtxWatchServersResponse) Marshaler() _bindings.Marshaler {
+ return _mdnsServerWatcherWithCtxWatchServersResponse
+}
+
+type I_dnsServerSourceTag uint64
+
+const (
+ DnsServerSourceStaticSource = 1 // 0x00000001
+ DnsServerSourceDhcp = 2 // 0x00000002
+ DnsServerSourceNdp = 3 // 0x00000003
+ DnsServerSourceDhcpv6 = 4 // 0x00000004
+)
+
+// The configuration source for a [`fuchsia.net.name/DnsServer`].
+type DnsServerSource struct {
+ I_dnsServerSourceTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ // The server is statically configured through
+ // [`fuchsia.net.name/LookupAdmin.SetDefaultServers`].
+ StaticSource StaticDnsServerSource `fidl_ordinal:"1"`
+ // The server was discovered through DHCPv4.
+ Dhcp DhcpDnsServerSource `fidl_ordinal:"2"`
+ // The server was discovered through an NDP Router Advertisement.
+ Ndp NdpDnsServerSource `fidl_ordinal:"3"`
+ // The server was discovered through DHCPv6.
+ Dhcpv6 Dhcpv6DnsServerSource `fidl_ordinal:"4"`
+}
+
+func (_m *DnsServerSource) reset() {
+ switch _m.I_dnsServerSourceTag {
+ case 1:
+ var _zeroed StaticDnsServerSource
+ _m.StaticSource = _zeroed
+ case 2:
+ var _zeroed DhcpDnsServerSource
+ _m.Dhcp = _zeroed
+ case 3:
+ var _zeroed NdpDnsServerSource
+ _m.Ndp = _zeroed
+ case 4:
+ var _zeroed Dhcpv6DnsServerSource
+ _m.Dhcpv6 = _zeroed
+ }
+}
+
+func (_m *DnsServerSource) Which() I_dnsServerSourceTag {
+ return _m.I_dnsServerSourceTag
+}
+
+func (_m *DnsServerSource) Ordinal() uint64 {
+ return uint64(_m.I_dnsServerSourceTag)
+}
+
+func (_m *DnsServerSource) SetStaticSource(staticSource StaticDnsServerSource) {
+ _m.reset()
+ _m.I_dnsServerSourceTag = DnsServerSourceStaticSource
+ _m.StaticSource = staticSource
+}
+
+func DnsServerSourceWithStaticSource(staticSource StaticDnsServerSource) DnsServerSource {
+ var _u DnsServerSource
+ _u.SetStaticSource(staticSource)
+ return _u
+}
+
+func (_m *DnsServerSource) SetDhcp(dhcp DhcpDnsServerSource) {
+ _m.reset()
+ _m.I_dnsServerSourceTag = DnsServerSourceDhcp
+ _m.Dhcp = dhcp
+}
+
+func DnsServerSourceWithDhcp(dhcp DhcpDnsServerSource) DnsServerSource {
+ var _u DnsServerSource
+ _u.SetDhcp(dhcp)
+ return _u
+}
+
+func (_m *DnsServerSource) SetNdp(ndp NdpDnsServerSource) {
+ _m.reset()
+ _m.I_dnsServerSourceTag = DnsServerSourceNdp
+ _m.Ndp = ndp
+}
+
+func DnsServerSourceWithNdp(ndp NdpDnsServerSource) DnsServerSource {
+ var _u DnsServerSource
+ _u.SetNdp(ndp)
+ return _u
+}
+
+func (_m *DnsServerSource) SetDhcpv6(dhcpv6 Dhcpv6DnsServerSource) {
+ _m.reset()
+ _m.I_dnsServerSourceTag = DnsServerSourceDhcpv6
+ _m.Dhcpv6 = dhcpv6
+}
+
+func DnsServerSourceWithDhcpv6(dhcpv6 Dhcpv6DnsServerSource) DnsServerSource {
+ var _u DnsServerSource
+ _u.SetDhcpv6(dhcpv6)
+ return _u
+}
+
+type I_lookupAdminSetDnsServersResultTag uint64
+
+const (
+ LookupAdminSetDnsServersResultResponse = 1 // 0x00000001
+ LookupAdminSetDnsServersResultErr = 2 // 0x00000002
+)
+
+type LookupAdminSetDnsServersResult struct {
+ I_lookupAdminSetDnsServersResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response LookupAdminSetDnsServersResponse `fidl_ordinal:"1"`
+ Err int32 `fidl_ordinal:"2"`
+}
+
+func (_m *LookupAdminSetDnsServersResult) reset() {
+ switch _m.I_lookupAdminSetDnsServersResultTag {
+ case 1:
+ var _zeroed LookupAdminSetDnsServersResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed int32
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *LookupAdminSetDnsServersResult) Which() I_lookupAdminSetDnsServersResultTag {
+ return _m.I_lookupAdminSetDnsServersResultTag
+}
+
+func (_m *LookupAdminSetDnsServersResult) Ordinal() uint64 {
+ return uint64(_m.I_lookupAdminSetDnsServersResultTag)
+}
+
+func (_m *LookupAdminSetDnsServersResult) SetResponse(response LookupAdminSetDnsServersResponse) {
+ _m.reset()
+ _m.I_lookupAdminSetDnsServersResultTag = LookupAdminSetDnsServersResultResponse
+ _m.Response = response
+}
+
+func LookupAdminSetDnsServersResultWithResponse(response LookupAdminSetDnsServersResponse) LookupAdminSetDnsServersResult {
+ var _u LookupAdminSetDnsServersResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *LookupAdminSetDnsServersResult) SetErr(err int32) {
+ _m.reset()
+ _m.I_lookupAdminSetDnsServersResultTag = LookupAdminSetDnsServersResultErr
+ _m.Err = err
+}
+
+func LookupAdminSetDnsServersResultWithErr(err int32) LookupAdminSetDnsServersResult {
+ var _u LookupAdminSetDnsServersResult
+ _u.SetErr(err)
+ return _u
+}
+
+// Extra information about statically set DNS servers.
+type StaticDnsServerSource struct {
+ _ struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ I_unknownData interface{}
+}
+
+func (u *StaticDnsServerSource) HasUnknownData() bool {
+ return u.I_unknownData != nil
+}
+
+func (u *StaticDnsServerSource) GetUnknownData() map[uint64]_bindings.UnknownData {
+ return u.I_unknownData.(map[uint64]_bindings.UnknownData)
+}
+
+// Extra information about DNS servers discovered through DHCPv4.
+type DhcpDnsServerSource struct {
+ _ struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ I_unknownData interface{}
+ // The interface index over which this server was discovered.
+ SourceInterface uint64 `fidl_ordinal:"1"`
+ SourceInterfacePresent bool
+}
+
+func (u *DhcpDnsServerSource) SetSourceInterface(sourceInterface uint64) {
+ u.SourceInterface = sourceInterface
+ u.SourceInterfacePresent = true
+}
+
+func (u *DhcpDnsServerSource) GetSourceInterface() uint64 {
+ return u.SourceInterface
+}
+
+func (u *DhcpDnsServerSource) GetSourceInterfaceWithDefault(_default uint64) uint64 {
+ if !u.HasSourceInterface() {
+ return _default
+ }
+ return u.SourceInterface
+}
+
+func (u *DhcpDnsServerSource) HasSourceInterface() bool {
+ return u.SourceInterfacePresent
+}
+
+func (u *DhcpDnsServerSource) ClearSourceInterface() {
+ u.SourceInterfacePresent = false
+}
+
+func (u *DhcpDnsServerSource) HasUnknownData() bool {
+ return u.I_unknownData != nil
+}
+
+func (u *DhcpDnsServerSource) GetUnknownData() map[uint64]_bindings.UnknownData {
+ return u.I_unknownData.(map[uint64]_bindings.UnknownData)
+}
+
+// Extra information about DNS servers discovered through NDP.
+type NdpDnsServerSource struct {
+ _ struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ I_unknownData interface{}
+ // The interface index over which this server was discovered.
+ SourceInterface uint64 `fidl_ordinal:"1"`
+ SourceInterfacePresent bool
+}
+
+func (u *NdpDnsServerSource) SetSourceInterface(sourceInterface uint64) {
+ u.SourceInterface = sourceInterface
+ u.SourceInterfacePresent = true
+}
+
+func (u *NdpDnsServerSource) GetSourceInterface() uint64 {
+ return u.SourceInterface
+}
+
+func (u *NdpDnsServerSource) GetSourceInterfaceWithDefault(_default uint64) uint64 {
+ if !u.HasSourceInterface() {
+ return _default
+ }
+ return u.SourceInterface
+}
+
+func (u *NdpDnsServerSource) HasSourceInterface() bool {
+ return u.SourceInterfacePresent
+}
+
+func (u *NdpDnsServerSource) ClearSourceInterface() {
+ u.SourceInterfacePresent = false
+}
+
+func (u *NdpDnsServerSource) HasUnknownData() bool {
+ return u.I_unknownData != nil
+}
+
+func (u *NdpDnsServerSource) GetUnknownData() map[uint64]_bindings.UnknownData {
+ return u.I_unknownData.(map[uint64]_bindings.UnknownData)
+}
+
+// Extra information about DNS servers discovered through DHCPv6.
+type Dhcpv6DnsServerSource struct {
+ _ struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ I_unknownData interface{}
+ // The interface index over which this server was discovered.
+ SourceInterface uint64 `fidl_ordinal:"1"`
+ SourceInterfacePresent bool
+}
+
+func (u *Dhcpv6DnsServerSource) SetSourceInterface(sourceInterface uint64) {
+ u.SourceInterface = sourceInterface
+ u.SourceInterfacePresent = true
+}
+
+func (u *Dhcpv6DnsServerSource) GetSourceInterface() uint64 {
+ return u.SourceInterface
+}
+
+func (u *Dhcpv6DnsServerSource) GetSourceInterfaceWithDefault(_default uint64) uint64 {
+ if !u.HasSourceInterface() {
+ return _default
+ }
+ return u.SourceInterface
+}
+
+func (u *Dhcpv6DnsServerSource) HasSourceInterface() bool {
+ return u.SourceInterfacePresent
+}
+
+func (u *Dhcpv6DnsServerSource) ClearSourceInterface() {
+ u.SourceInterfacePresent = false
+}
+
+func (u *Dhcpv6DnsServerSource) HasUnknownData() bool {
+ return u.I_unknownData != nil
+}
+
+func (u *Dhcpv6DnsServerSource) GetUnknownData() map[uint64]_bindings.UnknownData {
+ return u.I_unknownData.(map[uint64]_bindings.UnknownData)
+}
+
+// A DNS server configuration.
+type DnsServer struct {
+ _ struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ I_unknownData interface{}
+ // The server's address, must be provided.
+ Address fuchsianet.SocketAddress `fidl_ordinal:"1"`
+ AddressPresent bool
+ // The configuration source for this server. Defaults to
+ // [`fuchsia.net.name/DnsServerSource.static_source`].
+ Source DnsServerSource `fidl_ordinal:"2"`
+ SourcePresent bool
+}
+
+func (u *DnsServer) SetAddress(address fuchsianet.SocketAddress) {
+ u.Address = address
+ u.AddressPresent = true
+}
+
+func (u *DnsServer) GetAddress() fuchsianet.SocketAddress {
+ return u.Address
+}
+
+func (u *DnsServer) GetAddressWithDefault(_default fuchsianet.SocketAddress) fuchsianet.SocketAddress {
+ if !u.HasAddress() {
+ return _default
+ }
+ return u.Address
+}
+
+func (u *DnsServer) HasAddress() bool {
+ return u.AddressPresent
+}
+
+func (u *DnsServer) ClearAddress() {
+ u.AddressPresent = false
+}
+
+func (u *DnsServer) SetSource(source DnsServerSource) {
+ u.Source = source
+ u.SourcePresent = true
+}
+
+func (u *DnsServer) GetSource() DnsServerSource {
+ return u.Source
+}
+
+func (u *DnsServer) GetSourceWithDefault(_default DnsServerSource) DnsServerSource {
+ if !u.HasSource() {
+ return _default
+ }
+ return u.Source
+}
+
+func (u *DnsServer) HasSource() bool {
+ return u.SourcePresent
+}
+
+func (u *DnsServer) ClearSource() {
+ u.SourcePresent = false
+}
+
+func (u *DnsServer) HasUnknownData() bool {
+ return u.I_unknownData != nil
+}
+
+func (u *DnsServer) GetUnknownData() map[uint64]_bindings.UnknownData {
+ return u.I_unknownData.(map[uint64]_bindings.UnknownData)
+}
+
+const (
+ LookupAdminSetDnsServersOrdinal uint64 = 0x55e2b9fcc777be96
+ LookupAdminGetDnsServersOrdinal uint64 = 0x614303bf6e72f80f
+)
+
+type LookupAdminWithCtxInterface _bindings.ChannelProxy
+
+// Sets the DNS servers to `servers`
+//
+// + request `servers` The list of servers to use for domain name resolution, in priority
+// order. An empty list means no servers will be used and name resolution may fail. Each
+// `SocketAddress` in `servers` must be a valid unicast socket address. The list of servers
+// will be deduplicated.
+// * error Returns `ZX_ERR_INVALID_ARGS` if any of the provided addresses does not meet the
+// conditions above.
+func (p *LookupAdminWithCtxInterface) SetDnsServers(ctx_ _bindings.Context, servers []fuchsianet.SocketAddress) (LookupAdminSetDnsServersResult, error) {
+ req_ := &lookupAdminWithCtxSetDnsServersRequest{
+ Servers: servers,
+ }
+ resp_ := &lookupAdminWithCtxSetDnsServersResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(LookupAdminSetDnsServersOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Gets the DNS servers currently in use to resolve name lookups.
+// - response `servers` The list of servers in use by `LookupAdmin`, in priority order.
+func (p *LookupAdminWithCtxInterface) GetDnsServers(ctx_ _bindings.Context) ([]fuchsianet.SocketAddress, error) {
+ var req_ _bindings.Message
+ resp_ := &lookupAdminWithCtxGetDnsServersResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(LookupAdminGetDnsServersOrdinal, req_, resp_)
+ return resp_.Servers, err_
+}
+
+// Provides administration controls over name resolution settings.
+type LookupAdminWithCtx interface {
+ // Sets the DNS servers to `servers`
+ //
+ // + request `servers` The list of servers to use for domain name resolution, in priority
+ // order. An empty list means no servers will be used and name resolution may fail. Each
+ // `SocketAddress` in `servers` must be a valid unicast socket address. The list of servers
+ // will be deduplicated.
+ // * error Returns `ZX_ERR_INVALID_ARGS` if any of the provided addresses does not meet the
+ // conditions above.
+ SetDnsServers(ctx_ _bindings.Context, servers []fuchsianet.SocketAddress) (LookupAdminSetDnsServersResult, error)
+ // Gets the DNS servers currently in use to resolve name lookups.
+ // - response `servers` The list of servers in use by `LookupAdmin`, in priority order.
+ GetDnsServers(ctx_ _bindings.Context) ([]fuchsianet.SocketAddress, error)
+}
+
+type LookupAdminWithCtxTransitionalBase struct{}
+
+type LookupAdminWithCtxInterfaceRequest _bindings.InterfaceRequest
+
+func NewLookupAdminWithCtxInterfaceRequest() (LookupAdminWithCtxInterfaceRequest, *LookupAdminWithCtxInterface, error) {
+ req, cli, err := _bindings.NewInterfaceRequest()
+ return LookupAdminWithCtxInterfaceRequest(req), (*LookupAdminWithCtxInterface)(cli), err
+}
+
+// Implements ServiceRequest.
+func (_ LookupAdminWithCtxInterfaceRequest) Name() string {
+ return "fuchsia.net.name.LookupAdmin"
+}
+func (c LookupAdminWithCtxInterfaceRequest) ToChannel() _zx.Channel {
+ return c.Channel
+}
+
+const LookupAdminName = "fuchsia.net.name.LookupAdmin"
+
+type LookupAdminWithCtxStub struct {
+ Impl LookupAdminWithCtx
+}
+
+func (s_ *LookupAdminWithCtxStub) Dispatch(args_ _bindings.DispatchArgs) (_bindings.Message, bool, error) {
+ switch args_.Ordinal {
+ case LookupAdminSetDnsServersOrdinal:
+ in_ := lookupAdminWithCtxSetDnsServersRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetDnsServers(args_.Ctx, in_.Servers)
+ out_ := lookupAdminWithCtxSetDnsServersResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case LookupAdminGetDnsServersOrdinal:
+ servers, err_ := s_.Impl.GetDnsServers(args_.Ctx)
+ out_ := lookupAdminWithCtxGetDnsServersResponse{}
+ out_.Servers = servers
+ return &out_, true, err_
+ }
+ return nil, false, _bindings.ErrUnknownOrdinal
+}
+
+type LookupAdminEventProxy _bindings.ChannelProxy
+
+const (
+ DnsServerWatcherWatchServersOrdinal uint64 = 0x5748907e7f11b632
+)
+
+type DnsServerWatcherWithCtxInterface _bindings.ChannelProxy
+
+// Returns a list of DNS servers.
+//
+// First call always returns a snapshot of the current list of servers or blocks if an empty
+// list would be returned. Subsequent calls will block until the list of servers changes.
+//
+// The list of servers changes over time by configuration or network topology changes,
+// expiration, etc. Callers must repeatedly call `WatchServers` and replace any previously
+// returned `servers` with new ones to avoid using stale or expired entries.
+//
+// It is invalid to call `WatchServers` while a previous call is still pending. Doing so will
+// cause the `DnsServerWatcher` channel to be closed.
+//
+// - response `servers` The list of servers to use for DNS resolution, in priority order.
+func (p *DnsServerWatcherWithCtxInterface) WatchServers(ctx_ _bindings.Context) ([]DnsServer, error) {
+ var req_ _bindings.Message
+ resp_ := &dnsServerWatcherWithCtxWatchServersResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DnsServerWatcherWatchServersOrdinal, req_, resp_)
+ return resp_.Servers, err_
+}
+
+// Provides a hanging get interface to watch for DNS servers configuration.
+type DnsServerWatcherWithCtx interface {
+ // Returns a list of DNS servers.
+ //
+ // First call always returns a snapshot of the current list of servers or blocks if an empty
+ // list would be returned. Subsequent calls will block until the list of servers changes.
+ //
+ // The list of servers changes over time by configuration or network topology changes,
+ // expiration, etc. Callers must repeatedly call `WatchServers` and replace any previously
+ // returned `servers` with new ones to avoid using stale or expired entries.
+ //
+ // It is invalid to call `WatchServers` while a previous call is still pending. Doing so will
+ // cause the `DnsServerWatcher` channel to be closed.
+ //
+ // - response `servers` The list of servers to use for DNS resolution, in priority order.
+ WatchServers(ctx_ _bindings.Context) ([]DnsServer, error)
+}
+
+type DnsServerWatcherWithCtxTransitionalBase struct{}
+
+type DnsServerWatcherWithCtxInterfaceRequest _bindings.InterfaceRequest
+
+func NewDnsServerWatcherWithCtxInterfaceRequest() (DnsServerWatcherWithCtxInterfaceRequest, *DnsServerWatcherWithCtxInterface, error) {
+ req, cli, err := _bindings.NewInterfaceRequest()
+ return DnsServerWatcherWithCtxInterfaceRequest(req), (*DnsServerWatcherWithCtxInterface)(cli), err
+}
+
+type DnsServerWatcherWithCtxStub struct {
+ Impl DnsServerWatcherWithCtx
+}
+
+func (s_ *DnsServerWatcherWithCtxStub) Dispatch(args_ _bindings.DispatchArgs) (_bindings.Message, bool, error) {
+ switch args_.Ordinal {
+ case DnsServerWatcherWatchServersOrdinal:
+ servers, err_ := s_.Impl.WatchServers(args_.Ctx)
+ out_ := dnsServerWatcherWithCtxWatchServersResponse{}
+ out_.Servers = servers
+ return &out_, true, err_
+ }
+ return nil, false, _bindings.ErrUnknownOrdinal
+}
+
+type DnsServerWatcherEventProxy _bindings.ChannelProxy
diff --git a/src/syscall/zx/net/stack/impl.go b/src/syscall/zx/net/stack/impl.go
new file mode 100644
index 0000000..796d4a2
--- /dev/null
+++ b/src/syscall/zx/net/stack/impl.go
@@ -0,0 +1,2339 @@
+// Copyright 2020 The Fuchsia Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// Code generated by third_party/go/regen-fidl; DO NOT EDIT.
+
+package stack
+
+import (
+ _zx "syscall/zx"
+ _bindings "syscall/zx/fidl"
+ fuchsiahardwareethernet "syscall/zx/hardware/ethernet"
+ fuchsiahardwarenetwork "syscall/zx/hardware/network"
+ fuchsianet "syscall/zx/net"
+ fuchsianetname "syscall/zx/net/name"
+)
+
+var _ _bindings.Enum = PhysicalStatus(0)
+
+type PhysicalStatus uint32
+
+const (
+
+ // The link is not attached to the medium.
+ PhysicalStatusDown PhysicalStatus = 1
+
+ // The link is attached to the medium.
+ PhysicalStatusUp PhysicalStatus = 2
+)
+
+func (_ PhysicalStatus) I_EnumValues() []PhysicalStatus {
+ return []PhysicalStatus{
+ PhysicalStatusDown,
+ PhysicalStatusUp,
+ }
+}
+
+func (_ PhysicalStatus) I_EnumIsStrict() bool {
+ return true
+}
+
+func (x PhysicalStatus) IsUnknown() bool {
+ switch x {
+ case 1:
+ return true
+ case 2:
+ return true
+ default:
+ return false
+ }
+}
+
+func (x PhysicalStatus) String() string {
+ switch x {
+ case 1:
+ return "Down"
+ case 2:
+ return "Up"
+ }
+ return "Unknown"
+}
+
+var _ _bindings.Enum = AdministrativeStatus(0)
+
+type AdministrativeStatus uint32
+
+const (
+
+ // The interface is administratively disabled.
+ AdministrativeStatusDisabled AdministrativeStatus = 1
+
+ // The interface is administratively enabled.
+ AdministrativeStatusEnabled AdministrativeStatus = 2
+)
+
+func (_ AdministrativeStatus) I_EnumValues() []AdministrativeStatus {
+ return []AdministrativeStatus{
+ AdministrativeStatusDisabled,
+ AdministrativeStatusEnabled,
+ }
+}
+
+func (_ AdministrativeStatus) I_EnumIsStrict() bool {
+ return true
+}
+
+func (x AdministrativeStatus) IsUnknown() bool {
+ switch x {
+ case 1:
+ return true
+ case 2:
+ return true
+ default:
+ return false
+ }
+}
+
+func (x AdministrativeStatus) String() string {
+ switch x {
+ case 1:
+ return "Disabled"
+ case 2:
+ return "Enabled"
+ }
+ return "Unknown"
+}
+
+var _ _bindings.Enum = Error(0)
+
+type Error uint32
+
+const (
+ ErrorInternal Error = 1
+ ErrorNotSupported Error = 2
+ ErrorInvalidArgs Error = 3
+ ErrorBadState Error = 4
+ ErrorTimeOut Error = 5
+ ErrorNotFound Error = 6
+ ErrorAlreadyExists Error = 7
+ ErrorIo Error = 8
+)
+
+func (_ Error) I_EnumValues() []Error {
+ return []Error{
+ ErrorInternal,
+ ErrorNotSupported,
+ ErrorInvalidArgs,
+ ErrorBadState,
+ ErrorTimeOut,
+ ErrorNotFound,
+ ErrorAlreadyExists,
+ ErrorIo,
+ }
+}
+
+func (_ Error) I_EnumIsStrict() bool {
+ return true
+}
+
+func (x Error) IsUnknown() bool {
+ switch x {
+ case 1:
+ return true
+ case 2:
+ return true
+ case 3:
+ return true
+ case 4:
+ return true
+ case 5:
+ return true
+ case 6:
+ return true
+ case 7:
+ return true
+ case 8:
+ return true
+ default:
+ return false
+ }
+}
+
+func (x Error) String() string {
+ switch x {
+ case 1:
+ return "Internal"
+ case 2:
+ return "NotSupported"
+ case 3:
+ return "InvalidArgs"
+ case 4:
+ return "BadState"
+ case 5:
+ return "TimeOut"
+ case 6:
+ return "NotFound"
+ case 7:
+ return "AlreadyExists"
+ case 8:
+ return "Io"
+ }
+ return "Unknown"
+}
+
+type StackAddEthernetInterfaceResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Id uint64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mStackAddEthernetInterfaceResponse = _bindings.CreateLazyMarshaler(StackAddEthernetInterfaceResponse{})
+
+func (msg *StackAddEthernetInterfaceResponse) Marshaler() _bindings.Marshaler {
+ return _mStackAddEthernetInterfaceResponse
+}
+
+type StackAddInterfaceResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Id uint64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mStackAddInterfaceResponse = _bindings.CreateLazyMarshaler(StackAddInterfaceResponse{})
+
+func (msg *StackAddInterfaceResponse) Marshaler() _bindings.Marshaler {
+ return _mStackAddInterfaceResponse
+}
+
+type StackDelEthernetInterfaceResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mStackDelEthernetInterfaceResponse = _bindings.CreateLazyMarshaler(StackDelEthernetInterfaceResponse{})
+
+func (msg *StackDelEthernetInterfaceResponse) Marshaler() _bindings.Marshaler {
+ return _mStackDelEthernetInterfaceResponse
+}
+
+type StackGetInterfaceInfoResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"96" fidl_alignment_v1:"8" fidl_size_v2:"96" fidl_alignment_v2:"8"`
+ Info InterfaceInfo `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mStackGetInterfaceInfoResponse = _bindings.CreateLazyMarshaler(StackGetInterfaceInfoResponse{})
+
+func (msg *StackGetInterfaceInfoResponse) Marshaler() _bindings.Marshaler {
+ return _mStackGetInterfaceInfoResponse
+}
+
+type StackEnableInterfaceResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mStackEnableInterfaceResponse = _bindings.CreateLazyMarshaler(StackEnableInterfaceResponse{})
+
+func (msg *StackEnableInterfaceResponse) Marshaler() _bindings.Marshaler {
+ return _mStackEnableInterfaceResponse
+}
+
+type StackDisableInterfaceResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mStackDisableInterfaceResponse = _bindings.CreateLazyMarshaler(StackDisableInterfaceResponse{})
+
+func (msg *StackDisableInterfaceResponse) Marshaler() _bindings.Marshaler {
+ return _mStackDisableInterfaceResponse
+}
+
+type StackAddInterfaceAddressResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mStackAddInterfaceAddressResponse = _bindings.CreateLazyMarshaler(StackAddInterfaceAddressResponse{})
+
+func (msg *StackAddInterfaceAddressResponse) Marshaler() _bindings.Marshaler {
+ return _mStackAddInterfaceAddressResponse
+}
+
+type StackDelInterfaceAddressResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mStackDelInterfaceAddressResponse = _bindings.CreateLazyMarshaler(StackDelInterfaceAddressResponse{})
+
+func (msg *StackDelInterfaceAddressResponse) Marshaler() _bindings.Marshaler {
+ return _mStackDelInterfaceAddressResponse
+}
+
+type StackAddForwardingEntryResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mStackAddForwardingEntryResponse = _bindings.CreateLazyMarshaler(StackAddForwardingEntryResponse{})
+
+func (msg *StackAddForwardingEntryResponse) Marshaler() _bindings.Marshaler {
+ return _mStackAddForwardingEntryResponse
+}
+
+type StackDelForwardingEntryResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mStackDelForwardingEntryResponse = _bindings.CreateLazyMarshaler(StackDelForwardingEntryResponse{})
+
+func (msg *StackDelForwardingEntryResponse) Marshaler() _bindings.Marshaler {
+ return _mStackDelForwardingEntryResponse
+}
+
+type StackEnablePacketFilterResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mStackEnablePacketFilterResponse = _bindings.CreateLazyMarshaler(StackEnablePacketFilterResponse{})
+
+func (msg *StackEnablePacketFilterResponse) Marshaler() _bindings.Marshaler {
+ return _mStackEnablePacketFilterResponse
+}
+
+type StackDisablePacketFilterResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mStackDisablePacketFilterResponse = _bindings.CreateLazyMarshaler(StackDisablePacketFilterResponse{})
+
+func (msg *StackDisablePacketFilterResponse) Marshaler() _bindings.Marshaler {
+ return _mStackDisablePacketFilterResponse
+}
+
+type StackGetInterfaceIpForwardingResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+ Enabled bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mStackGetInterfaceIpForwardingResponse = _bindings.CreateLazyMarshaler(StackGetInterfaceIpForwardingResponse{})
+
+func (msg *StackGetInterfaceIpForwardingResponse) Marshaler() _bindings.Marshaler {
+ return _mStackGetInterfaceIpForwardingResponse
+}
+
+type StackSetInterfaceIpForwardingResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mStackSetInterfaceIpForwardingResponse = _bindings.CreateLazyMarshaler(StackSetInterfaceIpForwardingResponse{})
+
+func (msg *StackSetInterfaceIpForwardingResponse) Marshaler() _bindings.Marshaler {
+ return _mStackSetInterfaceIpForwardingResponse
+}
+
+type InterfaceInfo struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"96" fidl_alignment_v1:"8" fidl_size_v2:"96" fidl_alignment_v2:"8"`
+ // An opaque identifier for the interface, assigned by the stack.
+ // This identifier will never be 0, and will not be reused even if the device is removed and
+ // subsequently re-added. It is not stable across netstack instances.
+ Id uint64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ // All info of an interface except the interface name.
+ Properties InterfaceProperties `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+}
+
+var _mInterfaceInfo = _bindings.CreateLazyMarshaler(InterfaceInfo{})
+
+func (msg *InterfaceInfo) Marshaler() _bindings.Marshaler {
+ return _mInterfaceInfo
+}
+
+type InterfaceProperties struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"88" fidl_alignment_v1:"8" fidl_size_v2:"88" fidl_alignment_v2:"8"`
+ // Human-readable name of the interface. eg. eth001, wlanx35.
+ Name string `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"15"`
+ // The topological path to the device, representing a stable identifier for the interface
+ // hardware.
+ Topopath string `fidl_offset_v1:"16" fidl_offset_v2:"16" fidl_bounds:"255"`
+ // An unstable file path corresponding to the interface. Used in watching the creation
+ // and destruction of the interface, or in accessing the interface using netdump.
+ Filepath string `fidl_offset_v1:"32" fidl_offset_v2:"32" fidl_bounds:"255"`
+ // The MAC address of the interface, if available.
+ Mac *fuchsiahardwareethernet.MacAddress `fidl_offset_v1:"48" fidl_offset_v2:"48"`
+ // The maximum transmission unit for the interface in bytes.
+ Mtu uint32 `fidl_offset_v1:"56" fidl_offset_v2:"56"`
+ // The features present on the interface.
+ Features fuchsiahardwareethernet.Features `fidl_offset_v1:"60" fidl_offset_v2:"60"`
+ // The administrative status of the interface.
+ AdministrativeStatus AdministrativeStatus `fidl_offset_v1:"64" fidl_offset_v2:"64"`
+ // The physical link status of the interface.
+ PhysicalStatus PhysicalStatus `fidl_offset_v1:"68" fidl_offset_v2:"68"`
+ // The list of addresses currently assigned to the interface.
+ Addresses []fuchsianet.Subnet `fidl_offset_v1:"72" fidl_offset_v2:"72" fidl_bounds:""`
+}
+
+var _mInterfaceProperties = _bindings.CreateLazyMarshaler(InterfaceProperties{})
+
+func (msg *InterfaceProperties) Marshaler() _bindings.Marshaler {
+ return _mInterfaceProperties
+}
+
+// An entry in the forwarding table for the network stack.
+type ForwardingEntry struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"56" fidl_alignment_v1:"8" fidl_size_v2:"40" fidl_alignment_v2:"8"`
+ // The subnet is the key for the entry in the table.
+ Subnet fuchsianet.Subnet `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ // The destination that will receive the forwarded packet.
+ Destination ForwardingDestination `fidl_offset_v1:"32" fidl_offset_v2:"24"`
+}
+
+var _mForwardingEntry = _bindings.CreateLazyMarshaler(ForwardingEntry{})
+
+func (msg *ForwardingEntry) Marshaler() _bindings.Marshaler {
+ return _mForwardingEntry
+}
+
+// An Ethernet device.
+// The provided `network_device` is expected to support `Ethernet` frames.
+// Its MAC address and MAC filtering is controlled by the provided `mac` channel.
+type EthernetDeviceDefinition struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"4" fidl_size_v2:"8" fidl_alignment_v2:"4"`
+ // The connection to the device's data plane.
+ NetworkDevice fuchsiahardwarenetwork.DeviceWithCtxInterface `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_handle_subtype:"4"`
+ // The connection to the device's addressing control plane.
+ Mac fuchsiahardwarenetwork.MacAddressingWithCtxInterface `fidl_offset_v1:"4" fidl_offset_v2:"4" fidl_handle_subtype:"4"`
+}
+
+var _mEthernetDeviceDefinition = _bindings.CreateLazyMarshaler(EthernetDeviceDefinition{})
+
+func (msg *EthernetDeviceDefinition) Marshaler() _bindings.Marshaler {
+ return _mEthernetDeviceDefinition
+}
+
+type stackWithCtxAddEthernetInterfaceRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"24" fidl_alignment_v2:"8"`
+ TopologicalPath string `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"255"`
+ Device fuchsiahardwareethernet.DeviceWithCtxInterface `fidl_offset_v1:"16" fidl_offset_v2:"16" fidl_handle_subtype:"4"`
+}
+
+var _mstackWithCtxAddEthernetInterfaceRequest = _bindings.CreateLazyMarshaler(stackWithCtxAddEthernetInterfaceRequest{})
+
+func (msg *stackWithCtxAddEthernetInterfaceRequest) Marshaler() _bindings.Marshaler {
+ return _mstackWithCtxAddEthernetInterfaceRequest
+}
+
+type stackWithCtxAddEthernetInterfaceResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result StackAddEthernetInterfaceResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstackWithCtxAddEthernetInterfaceResponse = _bindings.CreateLazyMarshaler(stackWithCtxAddEthernetInterfaceResponse{})
+
+func (msg *stackWithCtxAddEthernetInterfaceResponse) Marshaler() _bindings.Marshaler {
+ return _mstackWithCtxAddEthernetInterfaceResponse
+}
+
+type stackWithCtxAddInterfaceRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"40" fidl_alignment_v1:"8" fidl_size_v2:"32" fidl_alignment_v2:"8"`
+ Config InterfaceConfig `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Device DeviceDefinition `fidl_offset_v1:"16" fidl_offset_v2:"16"`
+}
+
+var _mstackWithCtxAddInterfaceRequest = _bindings.CreateLazyMarshaler(stackWithCtxAddInterfaceRequest{})
+
+func (msg *stackWithCtxAddInterfaceRequest) Marshaler() _bindings.Marshaler {
+ return _mstackWithCtxAddInterfaceRequest
+}
+
+type stackWithCtxAddInterfaceResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result StackAddInterfaceResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstackWithCtxAddInterfaceResponse = _bindings.CreateLazyMarshaler(stackWithCtxAddInterfaceResponse{})
+
+func (msg *stackWithCtxAddInterfaceResponse) Marshaler() _bindings.Marshaler {
+ return _mstackWithCtxAddInterfaceResponse
+}
+
+type stackWithCtxDelEthernetInterfaceRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Id uint64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstackWithCtxDelEthernetInterfaceRequest = _bindings.CreateLazyMarshaler(stackWithCtxDelEthernetInterfaceRequest{})
+
+func (msg *stackWithCtxDelEthernetInterfaceRequest) Marshaler() _bindings.Marshaler {
+ return _mstackWithCtxDelEthernetInterfaceRequest
+}
+
+type stackWithCtxDelEthernetInterfaceResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result StackDelEthernetInterfaceResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstackWithCtxDelEthernetInterfaceResponse = _bindings.CreateLazyMarshaler(stackWithCtxDelEthernetInterfaceResponse{})
+
+func (msg *stackWithCtxDelEthernetInterfaceResponse) Marshaler() _bindings.Marshaler {
+ return _mstackWithCtxDelEthernetInterfaceResponse
+}
+
+type stackWithCtxListInterfacesResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Ifs []InterfaceInfo `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"255"`
+}
+
+var _mstackWithCtxListInterfacesResponse = _bindings.CreateLazyMarshaler(stackWithCtxListInterfacesResponse{})
+
+func (msg *stackWithCtxListInterfacesResponse) Marshaler() _bindings.Marshaler {
+ return _mstackWithCtxListInterfacesResponse
+}
+
+type stackWithCtxGetInterfaceInfoRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Id uint64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstackWithCtxGetInterfaceInfoRequest = _bindings.CreateLazyMarshaler(stackWithCtxGetInterfaceInfoRequest{})
+
+func (msg *stackWithCtxGetInterfaceInfoRequest) Marshaler() _bindings.Marshaler {
+ return _mstackWithCtxGetInterfaceInfoRequest
+}
+
+type stackWithCtxGetInterfaceInfoResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result StackGetInterfaceInfoResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstackWithCtxGetInterfaceInfoResponse = _bindings.CreateLazyMarshaler(stackWithCtxGetInterfaceInfoResponse{})
+
+func (msg *stackWithCtxGetInterfaceInfoResponse) Marshaler() _bindings.Marshaler {
+ return _mstackWithCtxGetInterfaceInfoResponse
+}
+
+type stackWithCtxEnableInterfaceRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Id uint64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstackWithCtxEnableInterfaceRequest = _bindings.CreateLazyMarshaler(stackWithCtxEnableInterfaceRequest{})
+
+func (msg *stackWithCtxEnableInterfaceRequest) Marshaler() _bindings.Marshaler {
+ return _mstackWithCtxEnableInterfaceRequest
+}
+
+type stackWithCtxEnableInterfaceResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result StackEnableInterfaceResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstackWithCtxEnableInterfaceResponse = _bindings.CreateLazyMarshaler(stackWithCtxEnableInterfaceResponse{})
+
+func (msg *stackWithCtxEnableInterfaceResponse) Marshaler() _bindings.Marshaler {
+ return _mstackWithCtxEnableInterfaceResponse
+}
+
+type stackWithCtxDisableInterfaceRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Id uint64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstackWithCtxDisableInterfaceRequest = _bindings.CreateLazyMarshaler(stackWithCtxDisableInterfaceRequest{})
+
+func (msg *stackWithCtxDisableInterfaceRequest) Marshaler() _bindings.Marshaler {
+ return _mstackWithCtxDisableInterfaceRequest
+}
+
+type stackWithCtxDisableInterfaceResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result StackDisableInterfaceResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstackWithCtxDisableInterfaceResponse = _bindings.CreateLazyMarshaler(stackWithCtxDisableInterfaceResponse{})
+
+func (msg *stackWithCtxDisableInterfaceResponse) Marshaler() _bindings.Marshaler {
+ return _mstackWithCtxDisableInterfaceResponse
+}
+
+type stackWithCtxAddInterfaceAddressRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"40" fidl_alignment_v1:"8" fidl_size_v2:"32" fidl_alignment_v2:"8"`
+ Id uint64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Addr fuchsianet.Subnet `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+}
+
+var _mstackWithCtxAddInterfaceAddressRequest = _bindings.CreateLazyMarshaler(stackWithCtxAddInterfaceAddressRequest{})
+
+func (msg *stackWithCtxAddInterfaceAddressRequest) Marshaler() _bindings.Marshaler {
+ return _mstackWithCtxAddInterfaceAddressRequest
+}
+
+type stackWithCtxAddInterfaceAddressResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result StackAddInterfaceAddressResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstackWithCtxAddInterfaceAddressResponse = _bindings.CreateLazyMarshaler(stackWithCtxAddInterfaceAddressResponse{})
+
+func (msg *stackWithCtxAddInterfaceAddressResponse) Marshaler() _bindings.Marshaler {
+ return _mstackWithCtxAddInterfaceAddressResponse
+}
+
+type stackWithCtxDelInterfaceAddressRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"40" fidl_alignment_v1:"8" fidl_size_v2:"32" fidl_alignment_v2:"8"`
+ Id uint64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Addr fuchsianet.Subnet `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+}
+
+var _mstackWithCtxDelInterfaceAddressRequest = _bindings.CreateLazyMarshaler(stackWithCtxDelInterfaceAddressRequest{})
+
+func (msg *stackWithCtxDelInterfaceAddressRequest) Marshaler() _bindings.Marshaler {
+ return _mstackWithCtxDelInterfaceAddressRequest
+}
+
+type stackWithCtxDelInterfaceAddressResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result StackDelInterfaceAddressResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstackWithCtxDelInterfaceAddressResponse = _bindings.CreateLazyMarshaler(stackWithCtxDelInterfaceAddressResponse{})
+
+func (msg *stackWithCtxDelInterfaceAddressResponse) Marshaler() _bindings.Marshaler {
+ return _mstackWithCtxDelInterfaceAddressResponse
+}
+
+type stackWithCtxGetForwardingTableResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Table []ForwardingEntry `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:""`
+}
+
+var _mstackWithCtxGetForwardingTableResponse = _bindings.CreateLazyMarshaler(stackWithCtxGetForwardingTableResponse{})
+
+func (msg *stackWithCtxGetForwardingTableResponse) Marshaler() _bindings.Marshaler {
+ return _mstackWithCtxGetForwardingTableResponse
+}
+
+type stackWithCtxAddForwardingEntryRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"56" fidl_alignment_v1:"8" fidl_size_v2:"40" fidl_alignment_v2:"8"`
+ Entry ForwardingEntry `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstackWithCtxAddForwardingEntryRequest = _bindings.CreateLazyMarshaler(stackWithCtxAddForwardingEntryRequest{})
+
+func (msg *stackWithCtxAddForwardingEntryRequest) Marshaler() _bindings.Marshaler {
+ return _mstackWithCtxAddForwardingEntryRequest
+}
+
+type stackWithCtxAddForwardingEntryResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result StackAddForwardingEntryResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstackWithCtxAddForwardingEntryResponse = _bindings.CreateLazyMarshaler(stackWithCtxAddForwardingEntryResponse{})
+
+func (msg *stackWithCtxAddForwardingEntryResponse) Marshaler() _bindings.Marshaler {
+ return _mstackWithCtxAddForwardingEntryResponse
+}
+
+type stackWithCtxDelForwardingEntryRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"32" fidl_alignment_v1:"8" fidl_size_v2:"24" fidl_alignment_v2:"8"`
+ Subnet fuchsianet.Subnet `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstackWithCtxDelForwardingEntryRequest = _bindings.CreateLazyMarshaler(stackWithCtxDelForwardingEntryRequest{})
+
+func (msg *stackWithCtxDelForwardingEntryRequest) Marshaler() _bindings.Marshaler {
+ return _mstackWithCtxDelForwardingEntryRequest
+}
+
+type stackWithCtxDelForwardingEntryResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result StackDelForwardingEntryResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstackWithCtxDelForwardingEntryResponse = _bindings.CreateLazyMarshaler(stackWithCtxDelForwardingEntryResponse{})
+
+func (msg *stackWithCtxDelForwardingEntryResponse) Marshaler() _bindings.Marshaler {
+ return _mstackWithCtxDelForwardingEntryResponse
+}
+
+type stackWithCtxEnablePacketFilterRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Id uint64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstackWithCtxEnablePacketFilterRequest = _bindings.CreateLazyMarshaler(stackWithCtxEnablePacketFilterRequest{})
+
+func (msg *stackWithCtxEnablePacketFilterRequest) Marshaler() _bindings.Marshaler {
+ return _mstackWithCtxEnablePacketFilterRequest
+}
+
+type stackWithCtxEnablePacketFilterResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result StackEnablePacketFilterResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstackWithCtxEnablePacketFilterResponse = _bindings.CreateLazyMarshaler(stackWithCtxEnablePacketFilterResponse{})
+
+func (msg *stackWithCtxEnablePacketFilterResponse) Marshaler() _bindings.Marshaler {
+ return _mstackWithCtxEnablePacketFilterResponse
+}
+
+type stackWithCtxDisablePacketFilterRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Id uint64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstackWithCtxDisablePacketFilterRequest = _bindings.CreateLazyMarshaler(stackWithCtxDisablePacketFilterRequest{})
+
+func (msg *stackWithCtxDisablePacketFilterRequest) Marshaler() _bindings.Marshaler {
+ return _mstackWithCtxDisablePacketFilterRequest
+}
+
+type stackWithCtxDisablePacketFilterResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result StackDisablePacketFilterResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstackWithCtxDisablePacketFilterResponse = _bindings.CreateLazyMarshaler(stackWithCtxDisablePacketFilterResponse{})
+
+func (msg *stackWithCtxDisablePacketFilterResponse) Marshaler() _bindings.Marshaler {
+ return _mstackWithCtxDisablePacketFilterResponse
+}
+
+type stackWithCtxGetInterfaceIpForwardingRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Id uint64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ IpVersion fuchsianet.IpVersion `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+}
+
+var _mstackWithCtxGetInterfaceIpForwardingRequest = _bindings.CreateLazyMarshaler(stackWithCtxGetInterfaceIpForwardingRequest{})
+
+func (msg *stackWithCtxGetInterfaceIpForwardingRequest) Marshaler() _bindings.Marshaler {
+ return _mstackWithCtxGetInterfaceIpForwardingRequest
+}
+
+type stackWithCtxGetInterfaceIpForwardingResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result StackGetInterfaceIpForwardingResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstackWithCtxGetInterfaceIpForwardingResponse = _bindings.CreateLazyMarshaler(stackWithCtxGetInterfaceIpForwardingResponse{})
+
+func (msg *stackWithCtxGetInterfaceIpForwardingResponse) Marshaler() _bindings.Marshaler {
+ return _mstackWithCtxGetInterfaceIpForwardingResponse
+}
+
+type stackWithCtxSetInterfaceIpForwardingRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Id uint64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ IpVersion fuchsianet.IpVersion `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+ Enabled bool `fidl_offset_v1:"12" fidl_offset_v2:"12"`
+}
+
+var _mstackWithCtxSetInterfaceIpForwardingRequest = _bindings.CreateLazyMarshaler(stackWithCtxSetInterfaceIpForwardingRequest{})
+
+func (msg *stackWithCtxSetInterfaceIpForwardingRequest) Marshaler() _bindings.Marshaler {
+ return _mstackWithCtxSetInterfaceIpForwardingRequest
+}
+
+type stackWithCtxSetInterfaceIpForwardingResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result StackSetInterfaceIpForwardingResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstackWithCtxSetInterfaceIpForwardingResponse = _bindings.CreateLazyMarshaler(stackWithCtxSetInterfaceIpForwardingResponse{})
+
+func (msg *stackWithCtxSetInterfaceIpForwardingResponse) Marshaler() _bindings.Marshaler {
+ return _mstackWithCtxSetInterfaceIpForwardingResponse
+}
+
+type stackWithCtxGetDnsServerWatcherRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Watcher fuchsianetname.DnsServerWatcherWithCtxInterfaceRequest `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_handle_subtype:"4" fidl_bounds:"0"`
+}
+
+var _mstackWithCtxGetDnsServerWatcherRequest = _bindings.CreateLazyMarshaler(stackWithCtxGetDnsServerWatcherRequest{})
+
+func (msg *stackWithCtxGetDnsServerWatcherRequest) Marshaler() _bindings.Marshaler {
+ return _mstackWithCtxGetDnsServerWatcherRequest
+}
+
+type logWithCtxSetLogPacketsRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Enabled bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mlogWithCtxSetLogPacketsRequest = _bindings.CreateLazyMarshaler(logWithCtxSetLogPacketsRequest{})
+
+func (msg *logWithCtxSetLogPacketsRequest) Marshaler() _bindings.Marshaler {
+ return _mlogWithCtxSetLogPacketsRequest
+}
+
+type I_stackAddEthernetInterfaceResultTag uint64
+
+const (
+ StackAddEthernetInterfaceResultResponse = 1 // 0x00000001
+ StackAddEthernetInterfaceResultErr = 2 // 0x00000002
+)
+
+type StackAddEthernetInterfaceResult struct {
+ I_stackAddEthernetInterfaceResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response StackAddEthernetInterfaceResponse `fidl_ordinal:"1"`
+ Err Error `fidl_ordinal:"2"`
+}
+
+func (_m *StackAddEthernetInterfaceResult) reset() {
+ switch _m.I_stackAddEthernetInterfaceResultTag {
+ case 1:
+ var _zeroed StackAddEthernetInterfaceResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed Error
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *StackAddEthernetInterfaceResult) Which() I_stackAddEthernetInterfaceResultTag {
+ return _m.I_stackAddEthernetInterfaceResultTag
+}
+
+func (_m *StackAddEthernetInterfaceResult) Ordinal() uint64 {
+ return uint64(_m.I_stackAddEthernetInterfaceResultTag)
+}
+
+func (_m *StackAddEthernetInterfaceResult) SetResponse(response StackAddEthernetInterfaceResponse) {
+ _m.reset()
+ _m.I_stackAddEthernetInterfaceResultTag = StackAddEthernetInterfaceResultResponse
+ _m.Response = response
+}
+
+func StackAddEthernetInterfaceResultWithResponse(response StackAddEthernetInterfaceResponse) StackAddEthernetInterfaceResult {
+ var _u StackAddEthernetInterfaceResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *StackAddEthernetInterfaceResult) SetErr(err Error) {
+ _m.reset()
+ _m.I_stackAddEthernetInterfaceResultTag = StackAddEthernetInterfaceResultErr
+ _m.Err = err
+}
+
+func StackAddEthernetInterfaceResultWithErr(err Error) StackAddEthernetInterfaceResult {
+ var _u StackAddEthernetInterfaceResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_stackAddInterfaceResultTag uint64
+
+const (
+ StackAddInterfaceResultResponse = 1 // 0x00000001
+ StackAddInterfaceResultErr = 2 // 0x00000002
+)
+
+type StackAddInterfaceResult struct {
+ I_stackAddInterfaceResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response StackAddInterfaceResponse `fidl_ordinal:"1"`
+ Err Error `fidl_ordinal:"2"`
+}
+
+func (_m *StackAddInterfaceResult) reset() {
+ switch _m.I_stackAddInterfaceResultTag {
+ case 1:
+ var _zeroed StackAddInterfaceResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed Error
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *StackAddInterfaceResult) Which() I_stackAddInterfaceResultTag {
+ return _m.I_stackAddInterfaceResultTag
+}
+
+func (_m *StackAddInterfaceResult) Ordinal() uint64 {
+ return uint64(_m.I_stackAddInterfaceResultTag)
+}
+
+func (_m *StackAddInterfaceResult) SetResponse(response StackAddInterfaceResponse) {
+ _m.reset()
+ _m.I_stackAddInterfaceResultTag = StackAddInterfaceResultResponse
+ _m.Response = response
+}
+
+func StackAddInterfaceResultWithResponse(response StackAddInterfaceResponse) StackAddInterfaceResult {
+ var _u StackAddInterfaceResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *StackAddInterfaceResult) SetErr(err Error) {
+ _m.reset()
+ _m.I_stackAddInterfaceResultTag = StackAddInterfaceResultErr
+ _m.Err = err
+}
+
+func StackAddInterfaceResultWithErr(err Error) StackAddInterfaceResult {
+ var _u StackAddInterfaceResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_stackDelEthernetInterfaceResultTag uint64
+
+const (
+ StackDelEthernetInterfaceResultResponse = 1 // 0x00000001
+ StackDelEthernetInterfaceResultErr = 2 // 0x00000002
+)
+
+type StackDelEthernetInterfaceResult struct {
+ I_stackDelEthernetInterfaceResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response StackDelEthernetInterfaceResponse `fidl_ordinal:"1"`
+ Err Error `fidl_ordinal:"2"`
+}
+
+func (_m *StackDelEthernetInterfaceResult) reset() {
+ switch _m.I_stackDelEthernetInterfaceResultTag {
+ case 1:
+ var _zeroed StackDelEthernetInterfaceResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed Error
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *StackDelEthernetInterfaceResult) Which() I_stackDelEthernetInterfaceResultTag {
+ return _m.I_stackDelEthernetInterfaceResultTag
+}
+
+func (_m *StackDelEthernetInterfaceResult) Ordinal() uint64 {
+ return uint64(_m.I_stackDelEthernetInterfaceResultTag)
+}
+
+func (_m *StackDelEthernetInterfaceResult) SetResponse(response StackDelEthernetInterfaceResponse) {
+ _m.reset()
+ _m.I_stackDelEthernetInterfaceResultTag = StackDelEthernetInterfaceResultResponse
+ _m.Response = response
+}
+
+func StackDelEthernetInterfaceResultWithResponse(response StackDelEthernetInterfaceResponse) StackDelEthernetInterfaceResult {
+ var _u StackDelEthernetInterfaceResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *StackDelEthernetInterfaceResult) SetErr(err Error) {
+ _m.reset()
+ _m.I_stackDelEthernetInterfaceResultTag = StackDelEthernetInterfaceResultErr
+ _m.Err = err
+}
+
+func StackDelEthernetInterfaceResultWithErr(err Error) StackDelEthernetInterfaceResult {
+ var _u StackDelEthernetInterfaceResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_stackGetInterfaceInfoResultTag uint64
+
+const (
+ StackGetInterfaceInfoResultResponse = 1 // 0x00000001
+ StackGetInterfaceInfoResultErr = 2 // 0x00000002
+)
+
+type StackGetInterfaceInfoResult struct {
+ I_stackGetInterfaceInfoResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response StackGetInterfaceInfoResponse `fidl_ordinal:"1"`
+ Err Error `fidl_ordinal:"2"`
+}
+
+func (_m *StackGetInterfaceInfoResult) reset() {
+ switch _m.I_stackGetInterfaceInfoResultTag {
+ case 1:
+ var _zeroed StackGetInterfaceInfoResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed Error
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *StackGetInterfaceInfoResult) Which() I_stackGetInterfaceInfoResultTag {
+ return _m.I_stackGetInterfaceInfoResultTag
+}
+
+func (_m *StackGetInterfaceInfoResult) Ordinal() uint64 {
+ return uint64(_m.I_stackGetInterfaceInfoResultTag)
+}
+
+func (_m *StackGetInterfaceInfoResult) SetResponse(response StackGetInterfaceInfoResponse) {
+ _m.reset()
+ _m.I_stackGetInterfaceInfoResultTag = StackGetInterfaceInfoResultResponse
+ _m.Response = response
+}
+
+func StackGetInterfaceInfoResultWithResponse(response StackGetInterfaceInfoResponse) StackGetInterfaceInfoResult {
+ var _u StackGetInterfaceInfoResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *StackGetInterfaceInfoResult) SetErr(err Error) {
+ _m.reset()
+ _m.I_stackGetInterfaceInfoResultTag = StackGetInterfaceInfoResultErr
+ _m.Err = err
+}
+
+func StackGetInterfaceInfoResultWithErr(err Error) StackGetInterfaceInfoResult {
+ var _u StackGetInterfaceInfoResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_stackEnableInterfaceResultTag uint64
+
+const (
+ StackEnableInterfaceResultResponse = 1 // 0x00000001
+ StackEnableInterfaceResultErr = 2 // 0x00000002
+)
+
+type StackEnableInterfaceResult struct {
+ I_stackEnableInterfaceResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response StackEnableInterfaceResponse `fidl_ordinal:"1"`
+ Err Error `fidl_ordinal:"2"`
+}
+
+func (_m *StackEnableInterfaceResult) reset() {
+ switch _m.I_stackEnableInterfaceResultTag {
+ case 1:
+ var _zeroed StackEnableInterfaceResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed Error
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *StackEnableInterfaceResult) Which() I_stackEnableInterfaceResultTag {
+ return _m.I_stackEnableInterfaceResultTag
+}
+
+func (_m *StackEnableInterfaceResult) Ordinal() uint64 {
+ return uint64(_m.I_stackEnableInterfaceResultTag)
+}
+
+func (_m *StackEnableInterfaceResult) SetResponse(response StackEnableInterfaceResponse) {
+ _m.reset()
+ _m.I_stackEnableInterfaceResultTag = StackEnableInterfaceResultResponse
+ _m.Response = response
+}
+
+func StackEnableInterfaceResultWithResponse(response StackEnableInterfaceResponse) StackEnableInterfaceResult {
+ var _u StackEnableInterfaceResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *StackEnableInterfaceResult) SetErr(err Error) {
+ _m.reset()
+ _m.I_stackEnableInterfaceResultTag = StackEnableInterfaceResultErr
+ _m.Err = err
+}
+
+func StackEnableInterfaceResultWithErr(err Error) StackEnableInterfaceResult {
+ var _u StackEnableInterfaceResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_stackDisableInterfaceResultTag uint64
+
+const (
+ StackDisableInterfaceResultResponse = 1 // 0x00000001
+ StackDisableInterfaceResultErr = 2 // 0x00000002
+)
+
+type StackDisableInterfaceResult struct {
+ I_stackDisableInterfaceResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response StackDisableInterfaceResponse `fidl_ordinal:"1"`
+ Err Error `fidl_ordinal:"2"`
+}
+
+func (_m *StackDisableInterfaceResult) reset() {
+ switch _m.I_stackDisableInterfaceResultTag {
+ case 1:
+ var _zeroed StackDisableInterfaceResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed Error
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *StackDisableInterfaceResult) Which() I_stackDisableInterfaceResultTag {
+ return _m.I_stackDisableInterfaceResultTag
+}
+
+func (_m *StackDisableInterfaceResult) Ordinal() uint64 {
+ return uint64(_m.I_stackDisableInterfaceResultTag)
+}
+
+func (_m *StackDisableInterfaceResult) SetResponse(response StackDisableInterfaceResponse) {
+ _m.reset()
+ _m.I_stackDisableInterfaceResultTag = StackDisableInterfaceResultResponse
+ _m.Response = response
+}
+
+func StackDisableInterfaceResultWithResponse(response StackDisableInterfaceResponse) StackDisableInterfaceResult {
+ var _u StackDisableInterfaceResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *StackDisableInterfaceResult) SetErr(err Error) {
+ _m.reset()
+ _m.I_stackDisableInterfaceResultTag = StackDisableInterfaceResultErr
+ _m.Err = err
+}
+
+func StackDisableInterfaceResultWithErr(err Error) StackDisableInterfaceResult {
+ var _u StackDisableInterfaceResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_stackAddInterfaceAddressResultTag uint64
+
+const (
+ StackAddInterfaceAddressResultResponse = 1 // 0x00000001
+ StackAddInterfaceAddressResultErr = 2 // 0x00000002
+)
+
+type StackAddInterfaceAddressResult struct {
+ I_stackAddInterfaceAddressResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response StackAddInterfaceAddressResponse `fidl_ordinal:"1"`
+ Err Error `fidl_ordinal:"2"`
+}
+
+func (_m *StackAddInterfaceAddressResult) reset() {
+ switch _m.I_stackAddInterfaceAddressResultTag {
+ case 1:
+ var _zeroed StackAddInterfaceAddressResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed Error
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *StackAddInterfaceAddressResult) Which() I_stackAddInterfaceAddressResultTag {
+ return _m.I_stackAddInterfaceAddressResultTag
+}
+
+func (_m *StackAddInterfaceAddressResult) Ordinal() uint64 {
+ return uint64(_m.I_stackAddInterfaceAddressResultTag)
+}
+
+func (_m *StackAddInterfaceAddressResult) SetResponse(response StackAddInterfaceAddressResponse) {
+ _m.reset()
+ _m.I_stackAddInterfaceAddressResultTag = StackAddInterfaceAddressResultResponse
+ _m.Response = response
+}
+
+func StackAddInterfaceAddressResultWithResponse(response StackAddInterfaceAddressResponse) StackAddInterfaceAddressResult {
+ var _u StackAddInterfaceAddressResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *StackAddInterfaceAddressResult) SetErr(err Error) {
+ _m.reset()
+ _m.I_stackAddInterfaceAddressResultTag = StackAddInterfaceAddressResultErr
+ _m.Err = err
+}
+
+func StackAddInterfaceAddressResultWithErr(err Error) StackAddInterfaceAddressResult {
+ var _u StackAddInterfaceAddressResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_stackDelInterfaceAddressResultTag uint64
+
+const (
+ StackDelInterfaceAddressResultResponse = 1 // 0x00000001
+ StackDelInterfaceAddressResultErr = 2 // 0x00000002
+)
+
+type StackDelInterfaceAddressResult struct {
+ I_stackDelInterfaceAddressResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response StackDelInterfaceAddressResponse `fidl_ordinal:"1"`
+ Err Error `fidl_ordinal:"2"`
+}
+
+func (_m *StackDelInterfaceAddressResult) reset() {
+ switch _m.I_stackDelInterfaceAddressResultTag {
+ case 1:
+ var _zeroed StackDelInterfaceAddressResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed Error
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *StackDelInterfaceAddressResult) Which() I_stackDelInterfaceAddressResultTag {
+ return _m.I_stackDelInterfaceAddressResultTag
+}
+
+func (_m *StackDelInterfaceAddressResult) Ordinal() uint64 {
+ return uint64(_m.I_stackDelInterfaceAddressResultTag)
+}
+
+func (_m *StackDelInterfaceAddressResult) SetResponse(response StackDelInterfaceAddressResponse) {
+ _m.reset()
+ _m.I_stackDelInterfaceAddressResultTag = StackDelInterfaceAddressResultResponse
+ _m.Response = response
+}
+
+func StackDelInterfaceAddressResultWithResponse(response StackDelInterfaceAddressResponse) StackDelInterfaceAddressResult {
+ var _u StackDelInterfaceAddressResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *StackDelInterfaceAddressResult) SetErr(err Error) {
+ _m.reset()
+ _m.I_stackDelInterfaceAddressResultTag = StackDelInterfaceAddressResultErr
+ _m.Err = err
+}
+
+func StackDelInterfaceAddressResultWithErr(err Error) StackDelInterfaceAddressResult {
+ var _u StackDelInterfaceAddressResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_stackAddForwardingEntryResultTag uint64
+
+const (
+ StackAddForwardingEntryResultResponse = 1 // 0x00000001
+ StackAddForwardingEntryResultErr = 2 // 0x00000002
+)
+
+type StackAddForwardingEntryResult struct {
+ I_stackAddForwardingEntryResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response StackAddForwardingEntryResponse `fidl_ordinal:"1"`
+ Err Error `fidl_ordinal:"2"`
+}
+
+func (_m *StackAddForwardingEntryResult) reset() {
+ switch _m.I_stackAddForwardingEntryResultTag {
+ case 1:
+ var _zeroed StackAddForwardingEntryResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed Error
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *StackAddForwardingEntryResult) Which() I_stackAddForwardingEntryResultTag {
+ return _m.I_stackAddForwardingEntryResultTag
+}
+
+func (_m *StackAddForwardingEntryResult) Ordinal() uint64 {
+ return uint64(_m.I_stackAddForwardingEntryResultTag)
+}
+
+func (_m *StackAddForwardingEntryResult) SetResponse(response StackAddForwardingEntryResponse) {
+ _m.reset()
+ _m.I_stackAddForwardingEntryResultTag = StackAddForwardingEntryResultResponse
+ _m.Response = response
+}
+
+func StackAddForwardingEntryResultWithResponse(response StackAddForwardingEntryResponse) StackAddForwardingEntryResult {
+ var _u StackAddForwardingEntryResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *StackAddForwardingEntryResult) SetErr(err Error) {
+ _m.reset()
+ _m.I_stackAddForwardingEntryResultTag = StackAddForwardingEntryResultErr
+ _m.Err = err
+}
+
+func StackAddForwardingEntryResultWithErr(err Error) StackAddForwardingEntryResult {
+ var _u StackAddForwardingEntryResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_stackDelForwardingEntryResultTag uint64
+
+const (
+ StackDelForwardingEntryResultResponse = 1 // 0x00000001
+ StackDelForwardingEntryResultErr = 2 // 0x00000002
+)
+
+type StackDelForwardingEntryResult struct {
+ I_stackDelForwardingEntryResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response StackDelForwardingEntryResponse `fidl_ordinal:"1"`
+ Err Error `fidl_ordinal:"2"`
+}
+
+func (_m *StackDelForwardingEntryResult) reset() {
+ switch _m.I_stackDelForwardingEntryResultTag {
+ case 1:
+ var _zeroed StackDelForwardingEntryResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed Error
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *StackDelForwardingEntryResult) Which() I_stackDelForwardingEntryResultTag {
+ return _m.I_stackDelForwardingEntryResultTag
+}
+
+func (_m *StackDelForwardingEntryResult) Ordinal() uint64 {
+ return uint64(_m.I_stackDelForwardingEntryResultTag)
+}
+
+func (_m *StackDelForwardingEntryResult) SetResponse(response StackDelForwardingEntryResponse) {
+ _m.reset()
+ _m.I_stackDelForwardingEntryResultTag = StackDelForwardingEntryResultResponse
+ _m.Response = response
+}
+
+func StackDelForwardingEntryResultWithResponse(response StackDelForwardingEntryResponse) StackDelForwardingEntryResult {
+ var _u StackDelForwardingEntryResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *StackDelForwardingEntryResult) SetErr(err Error) {
+ _m.reset()
+ _m.I_stackDelForwardingEntryResultTag = StackDelForwardingEntryResultErr
+ _m.Err = err
+}
+
+func StackDelForwardingEntryResultWithErr(err Error) StackDelForwardingEntryResult {
+ var _u StackDelForwardingEntryResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_stackEnablePacketFilterResultTag uint64
+
+const (
+ StackEnablePacketFilterResultResponse = 1 // 0x00000001
+ StackEnablePacketFilterResultErr = 2 // 0x00000002
+)
+
+type StackEnablePacketFilterResult struct {
+ I_stackEnablePacketFilterResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response StackEnablePacketFilterResponse `fidl_ordinal:"1"`
+ Err Error `fidl_ordinal:"2"`
+}
+
+func (_m *StackEnablePacketFilterResult) reset() {
+ switch _m.I_stackEnablePacketFilterResultTag {
+ case 1:
+ var _zeroed StackEnablePacketFilterResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed Error
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *StackEnablePacketFilterResult) Which() I_stackEnablePacketFilterResultTag {
+ return _m.I_stackEnablePacketFilterResultTag
+}
+
+func (_m *StackEnablePacketFilterResult) Ordinal() uint64 {
+ return uint64(_m.I_stackEnablePacketFilterResultTag)
+}
+
+func (_m *StackEnablePacketFilterResult) SetResponse(response StackEnablePacketFilterResponse) {
+ _m.reset()
+ _m.I_stackEnablePacketFilterResultTag = StackEnablePacketFilterResultResponse
+ _m.Response = response
+}
+
+func StackEnablePacketFilterResultWithResponse(response StackEnablePacketFilterResponse) StackEnablePacketFilterResult {
+ var _u StackEnablePacketFilterResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *StackEnablePacketFilterResult) SetErr(err Error) {
+ _m.reset()
+ _m.I_stackEnablePacketFilterResultTag = StackEnablePacketFilterResultErr
+ _m.Err = err
+}
+
+func StackEnablePacketFilterResultWithErr(err Error) StackEnablePacketFilterResult {
+ var _u StackEnablePacketFilterResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_stackDisablePacketFilterResultTag uint64
+
+const (
+ StackDisablePacketFilterResultResponse = 1 // 0x00000001
+ StackDisablePacketFilterResultErr = 2 // 0x00000002
+)
+
+type StackDisablePacketFilterResult struct {
+ I_stackDisablePacketFilterResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response StackDisablePacketFilterResponse `fidl_ordinal:"1"`
+ Err Error `fidl_ordinal:"2"`
+}
+
+func (_m *StackDisablePacketFilterResult) reset() {
+ switch _m.I_stackDisablePacketFilterResultTag {
+ case 1:
+ var _zeroed StackDisablePacketFilterResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed Error
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *StackDisablePacketFilterResult) Which() I_stackDisablePacketFilterResultTag {
+ return _m.I_stackDisablePacketFilterResultTag
+}
+
+func (_m *StackDisablePacketFilterResult) Ordinal() uint64 {
+ return uint64(_m.I_stackDisablePacketFilterResultTag)
+}
+
+func (_m *StackDisablePacketFilterResult) SetResponse(response StackDisablePacketFilterResponse) {
+ _m.reset()
+ _m.I_stackDisablePacketFilterResultTag = StackDisablePacketFilterResultResponse
+ _m.Response = response
+}
+
+func StackDisablePacketFilterResultWithResponse(response StackDisablePacketFilterResponse) StackDisablePacketFilterResult {
+ var _u StackDisablePacketFilterResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *StackDisablePacketFilterResult) SetErr(err Error) {
+ _m.reset()
+ _m.I_stackDisablePacketFilterResultTag = StackDisablePacketFilterResultErr
+ _m.Err = err
+}
+
+func StackDisablePacketFilterResultWithErr(err Error) StackDisablePacketFilterResult {
+ var _u StackDisablePacketFilterResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_stackGetInterfaceIpForwardingResultTag uint64
+
+const (
+ StackGetInterfaceIpForwardingResultResponse = 1 // 0x00000001
+ StackGetInterfaceIpForwardingResultErr = 2 // 0x00000002
+)
+
+type StackGetInterfaceIpForwardingResult struct {
+ I_stackGetInterfaceIpForwardingResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response StackGetInterfaceIpForwardingResponse `fidl_ordinal:"1"`
+ Err Error `fidl_ordinal:"2"`
+}
+
+func (_m *StackGetInterfaceIpForwardingResult) reset() {
+ switch _m.I_stackGetInterfaceIpForwardingResultTag {
+ case 1:
+ var _zeroed StackGetInterfaceIpForwardingResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed Error
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *StackGetInterfaceIpForwardingResult) Which() I_stackGetInterfaceIpForwardingResultTag {
+ return _m.I_stackGetInterfaceIpForwardingResultTag
+}
+
+func (_m *StackGetInterfaceIpForwardingResult) Ordinal() uint64 {
+ return uint64(_m.I_stackGetInterfaceIpForwardingResultTag)
+}
+
+func (_m *StackGetInterfaceIpForwardingResult) SetResponse(response StackGetInterfaceIpForwardingResponse) {
+ _m.reset()
+ _m.I_stackGetInterfaceIpForwardingResultTag = StackGetInterfaceIpForwardingResultResponse
+ _m.Response = response
+}
+
+func StackGetInterfaceIpForwardingResultWithResponse(response StackGetInterfaceIpForwardingResponse) StackGetInterfaceIpForwardingResult {
+ var _u StackGetInterfaceIpForwardingResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *StackGetInterfaceIpForwardingResult) SetErr(err Error) {
+ _m.reset()
+ _m.I_stackGetInterfaceIpForwardingResultTag = StackGetInterfaceIpForwardingResultErr
+ _m.Err = err
+}
+
+func StackGetInterfaceIpForwardingResultWithErr(err Error) StackGetInterfaceIpForwardingResult {
+ var _u StackGetInterfaceIpForwardingResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_stackSetInterfaceIpForwardingResultTag uint64
+
+const (
+ StackSetInterfaceIpForwardingResultResponse = 1 // 0x00000001
+ StackSetInterfaceIpForwardingResultErr = 2 // 0x00000002
+)
+
+type StackSetInterfaceIpForwardingResult struct {
+ I_stackSetInterfaceIpForwardingResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response StackSetInterfaceIpForwardingResponse `fidl_ordinal:"1"`
+ Err Error `fidl_ordinal:"2"`
+}
+
+func (_m *StackSetInterfaceIpForwardingResult) reset() {
+ switch _m.I_stackSetInterfaceIpForwardingResultTag {
+ case 1:
+ var _zeroed StackSetInterfaceIpForwardingResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed Error
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *StackSetInterfaceIpForwardingResult) Which() I_stackSetInterfaceIpForwardingResultTag {
+ return _m.I_stackSetInterfaceIpForwardingResultTag
+}
+
+func (_m *StackSetInterfaceIpForwardingResult) Ordinal() uint64 {
+ return uint64(_m.I_stackSetInterfaceIpForwardingResultTag)
+}
+
+func (_m *StackSetInterfaceIpForwardingResult) SetResponse(response StackSetInterfaceIpForwardingResponse) {
+ _m.reset()
+ _m.I_stackSetInterfaceIpForwardingResultTag = StackSetInterfaceIpForwardingResultResponse
+ _m.Response = response
+}
+
+func StackSetInterfaceIpForwardingResultWithResponse(response StackSetInterfaceIpForwardingResponse) StackSetInterfaceIpForwardingResult {
+ var _u StackSetInterfaceIpForwardingResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *StackSetInterfaceIpForwardingResult) SetErr(err Error) {
+ _m.reset()
+ _m.I_stackSetInterfaceIpForwardingResultTag = StackSetInterfaceIpForwardingResultErr
+ _m.Err = err
+}
+
+func StackSetInterfaceIpForwardingResultWithErr(err Error) StackSetInterfaceIpForwardingResult {
+ var _u StackSetInterfaceIpForwardingResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_forwardingDestinationTag uint64
+
+const (
+ ForwardingDestinationDeviceId = 1 // 0x00000001
+ ForwardingDestinationNextHop = 2 // 0x00000002
+)
+
+// A ForwardingDestination represents either the device that should transmit a packet or the address
+// of the next hop in the route.
+type ForwardingDestination struct {
+ I_forwardingDestinationTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ // The opaque identifier of the device to which packets should be forwarded.
+ DeviceId uint64 `fidl_ordinal:"1"`
+ // The IP address of the next hop, used to look up the next forwarding entry.
+ NextHop fuchsianet.IpAddress `fidl_ordinal:"2"`
+}
+
+func (_m *ForwardingDestination) reset() {
+ switch _m.I_forwardingDestinationTag {
+ case 1:
+ var _zeroed uint64
+ _m.DeviceId = _zeroed
+ case 2:
+ var _zeroed fuchsianet.IpAddress
+ _m.NextHop = _zeroed
+ }
+}
+
+func (_m *ForwardingDestination) Which() I_forwardingDestinationTag {
+ return _m.I_forwardingDestinationTag
+}
+
+func (_m *ForwardingDestination) Ordinal() uint64 {
+ return uint64(_m.I_forwardingDestinationTag)
+}
+
+func (_m *ForwardingDestination) SetDeviceId(deviceId uint64) {
+ _m.reset()
+ _m.I_forwardingDestinationTag = ForwardingDestinationDeviceId
+ _m.DeviceId = deviceId
+}
+
+func ForwardingDestinationWithDeviceId(deviceId uint64) ForwardingDestination {
+ var _u ForwardingDestination
+ _u.SetDeviceId(deviceId)
+ return _u
+}
+
+func (_m *ForwardingDestination) SetNextHop(nextHop fuchsianet.IpAddress) {
+ _m.reset()
+ _m.I_forwardingDestinationTag = ForwardingDestinationNextHop
+ _m.NextHop = nextHop
+}
+
+func ForwardingDestinationWithNextHop(nextHop fuchsianet.IpAddress) ForwardingDestination {
+ var _u ForwardingDestination
+ _u.SetNextHop(nextHop)
+ return _u
+}
+
+type I_deviceDefinitionTag uint64
+
+const (
+ DeviceDefinitionIp = 1 // 0x00000001
+ DeviceDefinitionEthernet = 2 // 0x00000002
+)
+
+// Devices that can be used to back a `Stack` interface.
+type DeviceDefinition struct {
+ I_deviceDefinitionTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"true"`
+ // A `fuchsia.hardware.network.Device` that exchanges only IP frames. It either doesn't have a
+ // layer 2 or its layer 2 is irrelevant to the `Stack`.
+ Ip fuchsiahardwarenetwork.DeviceWithCtxInterface `fidl_handle_subtype:"4" fidl_ordinal:"1"`
+ // An Ethernet device.
+ Ethernet EthernetDeviceDefinition `fidl_ordinal:"2"`
+}
+
+func (_m *DeviceDefinition) reset() {
+ switch _m.I_deviceDefinitionTag {
+ case 1:
+ var _zeroed fuchsiahardwarenetwork.DeviceWithCtxInterface
+ _m.Ip = _zeroed
+ case 2:
+ var _zeroed EthernetDeviceDefinition
+ _m.Ethernet = _zeroed
+ }
+}
+
+func (_m *DeviceDefinition) Which() I_deviceDefinitionTag {
+ return _m.I_deviceDefinitionTag
+}
+
+func (_m *DeviceDefinition) Ordinal() uint64 {
+ return uint64(_m.I_deviceDefinitionTag)
+}
+
+func (_m *DeviceDefinition) SetIp(ip fuchsiahardwarenetwork.DeviceWithCtxInterface) {
+ _m.reset()
+ _m.I_deviceDefinitionTag = DeviceDefinitionIp
+ _m.Ip = ip
+}
+
+func DeviceDefinitionWithIp(ip fuchsiahardwarenetwork.DeviceWithCtxInterface) DeviceDefinition {
+ var _u DeviceDefinition
+ _u.SetIp(ip)
+ return _u
+}
+
+func (_m *DeviceDefinition) SetEthernet(ethernet EthernetDeviceDefinition) {
+ _m.reset()
+ _m.I_deviceDefinitionTag = DeviceDefinitionEthernet
+ _m.Ethernet = ethernet
+}
+
+func DeviceDefinitionWithEthernet(ethernet EthernetDeviceDefinition) DeviceDefinition {
+ var _u DeviceDefinition
+ _u.SetEthernet(ethernet)
+ return _u
+}
+
+// Base configuration for `Stack` interfaces.
+type InterfaceConfig struct {
+ _ struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ I_unknownData interface{}
+ // Human-readable name of the interface. eg. eth001, wlanx35.
+ // Will be set to a default generic name if not provided.
+ Name string `fidl_bounds:"15" fidl_ordinal:"1"`
+ NamePresent bool
+ // The topological path to the device, representing a stable identifier for the interface
+ // hardware.
+ Topopath string `fidl_bounds:"255" fidl_ordinal:"2"`
+ TopopathPresent bool
+ // The default metric value used for routes to this interface.
+ Metric uint32 `fidl_ordinal:"3"`
+ MetricPresent bool
+}
+
+func (u *InterfaceConfig) SetName(name string) {
+ u.Name = name
+ u.NamePresent = true
+}
+
+func (u *InterfaceConfig) GetName() string {
+ return u.Name
+}
+
+func (u *InterfaceConfig) GetNameWithDefault(_default string) string {
+ if !u.HasName() {
+ return _default
+ }
+ return u.Name
+}
+
+func (u *InterfaceConfig) HasName() bool {
+ return u.NamePresent
+}
+
+func (u *InterfaceConfig) ClearName() {
+ u.NamePresent = false
+}
+
+func (u *InterfaceConfig) SetTopopath(topopath string) {
+ u.Topopath = topopath
+ u.TopopathPresent = true
+}
+
+func (u *InterfaceConfig) GetTopopath() string {
+ return u.Topopath
+}
+
+func (u *InterfaceConfig) GetTopopathWithDefault(_default string) string {
+ if !u.HasTopopath() {
+ return _default
+ }
+ return u.Topopath
+}
+
+func (u *InterfaceConfig) HasTopopath() bool {
+ return u.TopopathPresent
+}
+
+func (u *InterfaceConfig) ClearTopopath() {
+ u.TopopathPresent = false
+}
+
+func (u *InterfaceConfig) SetMetric(metric uint32) {
+ u.Metric = metric
+ u.MetricPresent = true
+}
+
+func (u *InterfaceConfig) GetMetric() uint32 {
+ return u.Metric
+}
+
+func (u *InterfaceConfig) GetMetricWithDefault(_default uint32) uint32 {
+ if !u.HasMetric() {
+ return _default
+ }
+ return u.Metric
+}
+
+func (u *InterfaceConfig) HasMetric() bool {
+ return u.MetricPresent
+}
+
+func (u *InterfaceConfig) ClearMetric() {
+ u.MetricPresent = false
+}
+
+func (u *InterfaceConfig) HasUnknownData() bool {
+ return u.I_unknownData != nil
+}
+
+func (u *InterfaceConfig) GetUnknownData() map[uint64]_bindings.UnknownData {
+ return u.I_unknownData.(map[uint64]_bindings.UnknownData)
+}
+
+const (
+ StackAddEthernetInterfaceOrdinal uint64 = 0x5f5733e9cf647a5b
+ StackAddInterfaceOrdinal uint64 = 0x16c731272a79a2c9
+ StackDelEthernetInterfaceOrdinal uint64 = 0x1e7f3b1fe503a8eb
+ StackListInterfacesOrdinal uint64 = 0x7858623a6d268864
+ StackGetInterfaceInfoOrdinal uint64 = 0x55567267dd660333
+ StackEnableInterfaceOrdinal uint64 = 0x2723e7e9dabca8f2
+ StackDisableInterfaceOrdinal uint64 = 0x1703c5cf0b2f4d87
+ StackAddInterfaceAddressOrdinal uint64 = 0x6c21cb598c262ea3
+ StackDelInterfaceAddressOrdinal uint64 = 0x73159e96f5537eed
+ StackGetForwardingTableOrdinal uint64 = 0x6df035986328d2ef
+ StackAddForwardingEntryOrdinal uint64 = 0x5fe2020877107909
+ StackDelForwardingEntryOrdinal uint64 = 0x560f3944c4cb51bd
+ StackEnablePacketFilterOrdinal uint64 = 0x1fbd56c90ca0b19d
+ StackDisablePacketFilterOrdinal uint64 = 0x40743d436c82c863
+ StackEnableIpForwardingOrdinal uint64 = 0x28e1915a9b177e6c
+ StackDisableIpForwardingOrdinal uint64 = 0x477f3f3bb42cf1f4
+ StackGetInterfaceIpForwardingOrdinal uint64 = 0x24c9c8f3ce16089c
+ StackSetInterfaceIpForwardingOrdinal uint64 = 0x79ae7727d73938c9
+ StackGetDnsServerWatcherOrdinal uint64 = 0x14cf0817fc2cf386
+)
+
+type StackWithCtxInterface _bindings.ChannelProxy
+
+// Add an Ethernet interface to the network stack. On success, returns the identifier assigned
+// by the stack for use in subsequent calls.
+func (p *StackWithCtxInterface) AddEthernetInterface(ctx_ _bindings.Context, topologicalPath string, device fuchsiahardwareethernet.DeviceWithCtxInterface) (StackAddEthernetInterfaceResult, error) {
+ req_ := &stackWithCtxAddEthernetInterfaceRequest{
+ TopologicalPath: topologicalPath,
+ Device: device,
+ }
+ resp_ := &stackWithCtxAddEthernetInterfaceResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StackAddEthernetInterfaceOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Add a new interface to the network stack backed by the provided `DeviceDefinition`. On
+// success, returns the identifier assigned by the stack for use in subsequent calls.
+func (p *StackWithCtxInterface) AddInterface(ctx_ _bindings.Context, config InterfaceConfig, device DeviceDefinition) (StackAddInterfaceResult, error) {
+ req_ := &stackWithCtxAddInterfaceRequest{
+ Config: config,
+ Device: device,
+ }
+ resp_ := &stackWithCtxAddInterfaceResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StackAddInterfaceOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Remove an Ethernet interface from the network stack.
+func (p *StackWithCtxInterface) DelEthernetInterface(ctx_ _bindings.Context, id uint64) (StackDelEthernetInterfaceResult, error) {
+ req_ := &stackWithCtxDelEthernetInterfaceRequest{
+ Id: id,
+ }
+ resp_ := &stackWithCtxDelEthernetInterfaceResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StackDelEthernetInterfaceOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// List all the interfaces available in the network stack.
+func (p *StackWithCtxInterface) ListInterfaces(ctx_ _bindings.Context) ([]InterfaceInfo, error) {
+ var req_ _bindings.Message
+ resp_ := &stackWithCtxListInterfacesResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StackListInterfacesOrdinal, req_, resp_)
+ return resp_.Ifs, err_
+}
+
+// Retrieve info about a specific interface.
+func (p *StackWithCtxInterface) GetInterfaceInfo(ctx_ _bindings.Context, id uint64) (StackGetInterfaceInfoResult, error) {
+ req_ := &stackWithCtxGetInterfaceInfoRequest{
+ Id: id,
+ }
+ resp_ := &stackWithCtxGetInterfaceInfoResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StackGetInterfaceInfoOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Enable the interface. Packets may be processed by the stack after this call is processed.
+func (p *StackWithCtxInterface) EnableInterface(ctx_ _bindings.Context, id uint64) (StackEnableInterfaceResult, error) {
+ req_ := &stackWithCtxEnableInterfaceRequest{
+ Id: id,
+ }
+ resp_ := &stackWithCtxEnableInterfaceResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StackEnableInterfaceOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Disable the interface. The stack will no longer process packets after this call.
+func (p *StackWithCtxInterface) DisableInterface(ctx_ _bindings.Context, id uint64) (StackDisableInterfaceResult, error) {
+ req_ := &stackWithCtxDisableInterfaceRequest{
+ Id: id,
+ }
+ resp_ := &stackWithCtxDisableInterfaceResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StackDisableInterfaceOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Add an address to the interface. If the interface already has an address of a given type that
+// does not allow duplicates, this method will return an error.
+func (p *StackWithCtxInterface) AddInterfaceAddress(ctx_ _bindings.Context, id uint64, addr fuchsianet.Subnet) (StackAddInterfaceAddressResult, error) {
+ req_ := &stackWithCtxAddInterfaceAddressRequest{
+ Id: id,
+ Addr: addr,
+ }
+ resp_ := &stackWithCtxAddInterfaceAddressResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StackAddInterfaceAddressOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Remove the address from the interface. If the address is not assigned to the interface, an
+// error is returned.
+func (p *StackWithCtxInterface) DelInterfaceAddress(ctx_ _bindings.Context, id uint64, addr fuchsianet.Subnet) (StackDelInterfaceAddressResult, error) {
+ req_ := &stackWithCtxDelInterfaceAddressRequest{
+ Id: id,
+ Addr: addr,
+ }
+ resp_ := &stackWithCtxDelInterfaceAddressResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StackDelInterfaceAddressOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// List all the entries in the forwarding table for the network stack.
+func (p *StackWithCtxInterface) GetForwardingTable(ctx_ _bindings.Context) ([]ForwardingEntry, error) {
+ var req_ _bindings.Message
+ resp_ := &stackWithCtxGetForwardingTableResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StackGetForwardingTableOrdinal, req_, resp_)
+ return resp_.Table, err_
+}
+
+// Add a new entry to the forwarding table.
+//
+// If the table already contains an entry with the same subnet and destination, an already
+// exists error is returned.
+func (p *StackWithCtxInterface) AddForwardingEntry(ctx_ _bindings.Context, entry ForwardingEntry) (StackAddForwardingEntryResult, error) {
+ req_ := &stackWithCtxAddForwardingEntryRequest{
+ Entry: entry,
+ }
+ resp_ := &stackWithCtxAddForwardingEntryResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StackAddForwardingEntryOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Removes the forwarding entry with the given subnet. This will not affect any overlapping
+// subnets (superset or subset) so the subnet must exactly match an entry in the forwarding
+// table. If no entry for the subnet exists, an error is returned.
+func (p *StackWithCtxInterface) DelForwardingEntry(ctx_ _bindings.Context, subnet fuchsianet.Subnet) (StackDelForwardingEntryResult, error) {
+ req_ := &stackWithCtxDelForwardingEntryRequest{
+ Subnet: subnet,
+ }
+ resp_ := &stackWithCtxDelForwardingEntryResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StackDelForwardingEntryOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Enable the packet filter on a specific interface.
+func (p *StackWithCtxInterface) EnablePacketFilter(ctx_ _bindings.Context, id uint64) (StackEnablePacketFilterResult, error) {
+ req_ := &stackWithCtxEnablePacketFilterRequest{
+ Id: id,
+ }
+ resp_ := &stackWithCtxEnablePacketFilterResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StackEnablePacketFilterOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Disable the packet filter on a specific interface.
+func (p *StackWithCtxInterface) DisablePacketFilter(ctx_ _bindings.Context, id uint64) (StackDisablePacketFilterResult, error) {
+ req_ := &stackWithCtxDisablePacketFilterRequest{
+ Id: id,
+ }
+ resp_ := &stackWithCtxDisablePacketFilterResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StackDisablePacketFilterOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Enable IP Forwarding for all interfaces and IP versions.
+func (p *StackWithCtxInterface) EnableIpForwarding(ctx_ _bindings.Context) error {
+ var req_ _bindings.Message
+ var resp_ _bindings.Message
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StackEnableIpForwardingOrdinal, req_, resp_)
+ return err_
+}
+
+// Disable IP Forwarding for all interfaces and IP versions.
+func (p *StackWithCtxInterface) DisableIpForwarding(ctx_ _bindings.Context) error {
+ var req_ _bindings.Message
+ var resp_ _bindings.Message
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StackDisableIpForwardingOrdinal, req_, resp_)
+ return err_
+}
+
+// Returns the IP forwarding state for an interface.
+func (p *StackWithCtxInterface) GetInterfaceIpForwarding(ctx_ _bindings.Context, id uint64, ipVersion fuchsianet.IpVersion) (StackGetInterfaceIpForwardingResult, error) {
+ req_ := &stackWithCtxGetInterfaceIpForwardingRequest{
+ Id: id,
+ IpVersion: ipVersion,
+ }
+ resp_ := &stackWithCtxGetInterfaceIpForwardingResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StackGetInterfaceIpForwardingOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Sets the IP forwarding state for an interface.
+func (p *StackWithCtxInterface) SetInterfaceIpForwarding(ctx_ _bindings.Context, id uint64, ipVersion fuchsianet.IpVersion, enabled bool) (StackSetInterfaceIpForwardingResult, error) {
+ req_ := &stackWithCtxSetInterfaceIpForwardingRequest{
+ Id: id,
+ IpVersion: ipVersion,
+ Enabled: enabled,
+ }
+ resp_ := &stackWithCtxSetInterfaceIpForwardingResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StackSetInterfaceIpForwardingOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get a [`fuchsia.net.name/DnsServerWatcher`].
+func (p *StackWithCtxInterface) GetDnsServerWatcher(ctx_ _bindings.Context, watcher fuchsianetname.DnsServerWatcherWithCtxInterfaceRequest) error {
+ req_ := &stackWithCtxGetDnsServerWatcherRequest{
+ Watcher: watcher,
+ }
+ err_ := ((*_bindings.ChannelProxy)(p)).Send(StackGetDnsServerWatcherOrdinal, req_)
+ return err_
+}
+
+type StackWithCtx interface {
+ // Add an Ethernet interface to the network stack. On success, returns the identifier assigned
+ // by the stack for use in subsequent calls.
+ AddEthernetInterface(ctx_ _bindings.Context, topologicalPath string, device fuchsiahardwareethernet.DeviceWithCtxInterface) (StackAddEthernetInterfaceResult, error)
+ // Add a new interface to the network stack backed by the provided `DeviceDefinition`. On
+ // success, returns the identifier assigned by the stack for use in subsequent calls.
+ AddInterface(ctx_ _bindings.Context, config InterfaceConfig, device DeviceDefinition) (StackAddInterfaceResult, error)
+ // Remove an Ethernet interface from the network stack.
+ DelEthernetInterface(ctx_ _bindings.Context, id uint64) (StackDelEthernetInterfaceResult, error)
+ // List all the interfaces available in the network stack.
+ ListInterfaces(ctx_ _bindings.Context) ([]InterfaceInfo, error)
+ // Retrieve info about a specific interface.
+ GetInterfaceInfo(ctx_ _bindings.Context, id uint64) (StackGetInterfaceInfoResult, error)
+ // Enable the interface. Packets may be processed by the stack after this call is processed.
+ EnableInterface(ctx_ _bindings.Context, id uint64) (StackEnableInterfaceResult, error)
+ // Disable the interface. The stack will no longer process packets after this call.
+ DisableInterface(ctx_ _bindings.Context, id uint64) (StackDisableInterfaceResult, error)
+ // Add an address to the interface. If the interface already has an address of a given type that
+ // does not allow duplicates, this method will return an error.
+ AddInterfaceAddress(ctx_ _bindings.Context, id uint64, addr fuchsianet.Subnet) (StackAddInterfaceAddressResult, error)
+ // Remove the address from the interface. If the address is not assigned to the interface, an
+ // error is returned.
+ DelInterfaceAddress(ctx_ _bindings.Context, id uint64, addr fuchsianet.Subnet) (StackDelInterfaceAddressResult, error)
+ // List all the entries in the forwarding table for the network stack.
+ GetForwardingTable(ctx_ _bindings.Context) ([]ForwardingEntry, error)
+ // Add a new entry to the forwarding table.
+ //
+ // If the table already contains an entry with the same subnet and destination, an already
+ // exists error is returned.
+ AddForwardingEntry(ctx_ _bindings.Context, entry ForwardingEntry) (StackAddForwardingEntryResult, error)
+ // Removes the forwarding entry with the given subnet. This will not affect any overlapping
+ // subnets (superset or subset) so the subnet must exactly match an entry in the forwarding
+ // table. If no entry for the subnet exists, an error is returned.
+ DelForwardingEntry(ctx_ _bindings.Context, subnet fuchsianet.Subnet) (StackDelForwardingEntryResult, error)
+ // Enable the packet filter on a specific interface.
+ EnablePacketFilter(ctx_ _bindings.Context, id uint64) (StackEnablePacketFilterResult, error)
+ // Disable the packet filter on a specific interface.
+ DisablePacketFilter(ctx_ _bindings.Context, id uint64) (StackDisablePacketFilterResult, error)
+ // Enable IP Forwarding for all interfaces and IP versions.
+ EnableIpForwarding(ctx_ _bindings.Context) error
+ // Disable IP Forwarding for all interfaces and IP versions.
+ DisableIpForwarding(ctx_ _bindings.Context) error
+ // Returns the IP forwarding state for an interface.
+ GetInterfaceIpForwarding(ctx_ _bindings.Context, id uint64, ipVersion fuchsianet.IpVersion) (StackGetInterfaceIpForwardingResult, error)
+ // Sets the IP forwarding state for an interface.
+ SetInterfaceIpForwarding(ctx_ _bindings.Context, id uint64, ipVersion fuchsianet.IpVersion, enabled bool) (StackSetInterfaceIpForwardingResult, error)
+ // Get a [`fuchsia.net.name/DnsServerWatcher`].
+ GetDnsServerWatcher(ctx_ _bindings.Context, watcher fuchsianetname.DnsServerWatcherWithCtxInterfaceRequest) error
+}
+
+type StackWithCtxTransitionalBase struct{}
+
+type StackWithCtxInterfaceRequest _bindings.InterfaceRequest
+
+func NewStackWithCtxInterfaceRequest() (StackWithCtxInterfaceRequest, *StackWithCtxInterface, error) {
+ req, cli, err := _bindings.NewInterfaceRequest()
+ return StackWithCtxInterfaceRequest(req), (*StackWithCtxInterface)(cli), err
+}
+
+// Implements ServiceRequest.
+func (_ StackWithCtxInterfaceRequest) Name() string {
+ return "fuchsia.net.stack.Stack"
+}
+func (c StackWithCtxInterfaceRequest) ToChannel() _zx.Channel {
+ return c.Channel
+}
+
+const StackName = "fuchsia.net.stack.Stack"
+
+type StackWithCtxStub struct {
+ Impl StackWithCtx
+}
+
+func (s_ *StackWithCtxStub) Dispatch(args_ _bindings.DispatchArgs) (_bindings.Message, bool, error) {
+ switch args_.Ordinal {
+ case StackAddEthernetInterfaceOrdinal:
+ in_ := stackWithCtxAddEthernetInterfaceRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.AddEthernetInterface(args_.Ctx, in_.TopologicalPath, in_.Device)
+ out_ := stackWithCtxAddEthernetInterfaceResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StackAddInterfaceOrdinal:
+ in_ := stackWithCtxAddInterfaceRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.AddInterface(args_.Ctx, in_.Config, in_.Device)
+ out_ := stackWithCtxAddInterfaceResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StackDelEthernetInterfaceOrdinal:
+ in_ := stackWithCtxDelEthernetInterfaceRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.DelEthernetInterface(args_.Ctx, in_.Id)
+ out_ := stackWithCtxDelEthernetInterfaceResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StackListInterfacesOrdinal:
+ ifs, err_ := s_.Impl.ListInterfaces(args_.Ctx)
+ out_ := stackWithCtxListInterfacesResponse{}
+ out_.Ifs = ifs
+ return &out_, true, err_
+ case StackGetInterfaceInfoOrdinal:
+ in_ := stackWithCtxGetInterfaceInfoRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.GetInterfaceInfo(args_.Ctx, in_.Id)
+ out_ := stackWithCtxGetInterfaceInfoResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StackEnableInterfaceOrdinal:
+ in_ := stackWithCtxEnableInterfaceRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.EnableInterface(args_.Ctx, in_.Id)
+ out_ := stackWithCtxEnableInterfaceResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StackDisableInterfaceOrdinal:
+ in_ := stackWithCtxDisableInterfaceRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.DisableInterface(args_.Ctx, in_.Id)
+ out_ := stackWithCtxDisableInterfaceResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StackAddInterfaceAddressOrdinal:
+ in_ := stackWithCtxAddInterfaceAddressRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.AddInterfaceAddress(args_.Ctx, in_.Id, in_.Addr)
+ out_ := stackWithCtxAddInterfaceAddressResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StackDelInterfaceAddressOrdinal:
+ in_ := stackWithCtxDelInterfaceAddressRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.DelInterfaceAddress(args_.Ctx, in_.Id, in_.Addr)
+ out_ := stackWithCtxDelInterfaceAddressResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StackGetForwardingTableOrdinal:
+ table, err_ := s_.Impl.GetForwardingTable(args_.Ctx)
+ out_ := stackWithCtxGetForwardingTableResponse{}
+ out_.Table = table
+ return &out_, true, err_
+ case StackAddForwardingEntryOrdinal:
+ in_ := stackWithCtxAddForwardingEntryRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.AddForwardingEntry(args_.Ctx, in_.Entry)
+ out_ := stackWithCtxAddForwardingEntryResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StackDelForwardingEntryOrdinal:
+ in_ := stackWithCtxDelForwardingEntryRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.DelForwardingEntry(args_.Ctx, in_.Subnet)
+ out_ := stackWithCtxDelForwardingEntryResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StackEnablePacketFilterOrdinal:
+ in_ := stackWithCtxEnablePacketFilterRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.EnablePacketFilter(args_.Ctx, in_.Id)
+ out_ := stackWithCtxEnablePacketFilterResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StackDisablePacketFilterOrdinal:
+ in_ := stackWithCtxDisablePacketFilterRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.DisablePacketFilter(args_.Ctx, in_.Id)
+ out_ := stackWithCtxDisablePacketFilterResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StackEnableIpForwardingOrdinal:
+ err_ := s_.Impl.EnableIpForwarding(args_.Ctx)
+ return nil, true, err_
+ case StackDisableIpForwardingOrdinal:
+ err_ := s_.Impl.DisableIpForwarding(args_.Ctx)
+ return nil, true, err_
+ case StackGetInterfaceIpForwardingOrdinal:
+ in_ := stackWithCtxGetInterfaceIpForwardingRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.GetInterfaceIpForwarding(args_.Ctx, in_.Id, in_.IpVersion)
+ out_ := stackWithCtxGetInterfaceIpForwardingResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StackSetInterfaceIpForwardingOrdinal:
+ in_ := stackWithCtxSetInterfaceIpForwardingRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetInterfaceIpForwarding(args_.Ctx, in_.Id, in_.IpVersion, in_.Enabled)
+ out_ := stackWithCtxSetInterfaceIpForwardingResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StackGetDnsServerWatcherOrdinal:
+ in_ := stackWithCtxGetDnsServerWatcherRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ err_ := s_.Impl.GetDnsServerWatcher(args_.Ctx, in_.Watcher)
+ return nil, false, err_
+ }
+ return nil, false, _bindings.ErrUnknownOrdinal
+}
+
+type StackEventProxy _bindings.ChannelProxy
+
+const (
+ LogSetLogPacketsOrdinal uint64 = 0x2176044cba5f378e
+)
+
+type LogWithCtxInterface _bindings.ChannelProxy
+
+// Dynamically set packet logging.
+func (p *LogWithCtxInterface) SetLogPackets(ctx_ _bindings.Context, enabled bool) error {
+ req_ := &logWithCtxSetLogPacketsRequest{
+ Enabled: enabled,
+ }
+ var resp_ _bindings.Message
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(LogSetLogPacketsOrdinal, req_, resp_)
+ return err_
+}
+
+type LogWithCtx interface {
+ // Dynamically set packet logging.
+ SetLogPackets(ctx_ _bindings.Context, enabled bool) error
+}
+
+type LogWithCtxTransitionalBase struct{}
+
+type LogWithCtxInterfaceRequest _bindings.InterfaceRequest
+
+func NewLogWithCtxInterfaceRequest() (LogWithCtxInterfaceRequest, *LogWithCtxInterface, error) {
+ req, cli, err := _bindings.NewInterfaceRequest()
+ return LogWithCtxInterfaceRequest(req), (*LogWithCtxInterface)(cli), err
+}
+
+// Implements ServiceRequest.
+func (_ LogWithCtxInterfaceRequest) Name() string {
+ return "fuchsia.net.stack.Log"
+}
+func (c LogWithCtxInterfaceRequest) ToChannel() _zx.Channel {
+ return c.Channel
+}
+
+const LogName = "fuchsia.net.stack.Log"
+
+type LogWithCtxStub struct {
+ Impl LogWithCtx
+}
+
+func (s_ *LogWithCtxStub) Dispatch(args_ _bindings.DispatchArgs) (_bindings.Message, bool, error) {
+ switch args_.Ordinal {
+ case LogSetLogPacketsOrdinal:
+ in_ := logWithCtxSetLogPacketsRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ err_ := s_.Impl.SetLogPackets(args_.Ctx, in_.Enabled)
+ return nil, true, err_
+ }
+ return nil, false, _bindings.ErrUnknownOrdinal
+}
+
+type LogEventProxy _bindings.ChannelProxy
diff --git a/src/syscall/zx/panics_test.go b/src/syscall/zx/panics_test.go
new file mode 100644
index 0000000..ce6d8c9
--- /dev/null
+++ b/src/syscall/zx/panics_test.go
@@ -0,0 +1,33 @@
+// 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 zx_test
+
+import (
+ "testing"
+)
+
+func testPanicRecoverInner(t *testing.T, causePanic func()) {
+ defer func() {
+ if e := recover(); e == nil {
+ t.Error("failed to recover from panic")
+ }
+ }()
+ causePanic()
+}
+
+func testPanicRecover(t *testing.T, causePanic func()) {
+ for i := 0; i < 10; i++ {
+ testPanicRecoverInner(t, causePanic)
+ }
+}
+
+// NB: There's a similar test in the runtime package, but those don't run on
+// Fuchsia yet.
+func TestPanicRecoverMemoryAccess(t *testing.T) {
+ testPanicRecover(t, func() {
+ var x *int
+ *x = 0xF0BA
+ })
+}
diff --git a/src/syscall/zx/posix/impl.go b/src/syscall/zx/posix/impl.go
new file mode 100644
index 0000000..0126297
--- /dev/null
+++ b/src/syscall/zx/posix/impl.go
@@ -0,0 +1,838 @@
+// Copyright 2020 The Fuchsia Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// Code generated by third_party/go/regen-fidl; DO NOT EDIT.
+
+package posix
+
+import (
+ _bindings "syscall/zx/fidl"
+)
+
+const (
+ // `EWOULDBLOCK` is aliased to `EAGAIN`.
+ Ewouldblock Errno = ErrnoEagain
+ // `EDEADLOCK` is aliased to `EDEADLK`.
+ Edeadlock Errno = ErrnoEdeadlk
+ // `ENOTSUP` is aliased to `EOPNOTSUPP`.
+ Enotsup Errno = ErrnoEopnotsupp
+)
+
+var _ _bindings.Enum = Errno(0)
+
+// POSIX style errnos.
+//
+// See https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/errno.h.html for more information.
+type Errno int32
+
+const (
+ ErrnoEperm Errno = 1
+ ErrnoEnoent Errno = 2
+ ErrnoEsrch Errno = 3
+ ErrnoEintr Errno = 4
+ ErrnoEio Errno = 5
+ ErrnoEnxio Errno = 6
+ ErrnoE2Big Errno = 7
+ ErrnoEnoexec Errno = 8
+ ErrnoEbadf Errno = 9
+ ErrnoEchild Errno = 10
+ ErrnoEagain Errno = 11
+ ErrnoEnomem Errno = 12
+ ErrnoEacces Errno = 13
+ ErrnoEfault Errno = 14
+ ErrnoEnotblk Errno = 15
+ ErrnoEbusy Errno = 16
+ ErrnoEexist Errno = 17
+ ErrnoExdev Errno = 18
+ ErrnoEnodev Errno = 19
+ ErrnoEnotdir Errno = 20
+ ErrnoEisdir Errno = 21
+ ErrnoEinval Errno = 22
+ ErrnoEnfile Errno = 23
+ ErrnoEmfile Errno = 24
+ ErrnoEnotty Errno = 25
+ ErrnoEtxtbsy Errno = 26
+ ErrnoEfbig Errno = 27
+ ErrnoEnospc Errno = 28
+ ErrnoEspipe Errno = 29
+ ErrnoErofs Errno = 30
+ ErrnoEmlink Errno = 31
+ ErrnoEpipe Errno = 32
+ ErrnoEdom Errno = 33
+ ErrnoErange Errno = 34
+ ErrnoEdeadlk Errno = 35
+ ErrnoEnametoolong Errno = 36
+ ErrnoEnolck Errno = 37
+ ErrnoEnosys Errno = 38
+ ErrnoEnotempty Errno = 39
+ ErrnoEloop Errno = 40
+ ErrnoEnomsg Errno = 42
+ ErrnoEidrm Errno = 43
+ ErrnoEchrng Errno = 44
+ ErrnoEl2Nsync Errno = 45
+ ErrnoEl3Hlt Errno = 46
+ ErrnoEl3Rst Errno = 47
+ ErrnoElnrng Errno = 48
+ ErrnoEunatch Errno = 49
+ ErrnoEnocsi Errno = 50
+ ErrnoEl2Hlt Errno = 51
+ ErrnoEbade Errno = 52
+ ErrnoEbadr Errno = 53
+ ErrnoExfull Errno = 54
+ ErrnoEnoano Errno = 55
+ ErrnoEbadrqc Errno = 56
+ ErrnoEbadslt Errno = 57
+ ErrnoEbfont Errno = 59
+ ErrnoEnostr Errno = 60
+ ErrnoEnodata Errno = 61
+ ErrnoEtime Errno = 62
+ ErrnoEnosr Errno = 63
+ ErrnoEnonet Errno = 64
+ ErrnoEnopkg Errno = 65
+ ErrnoEremote Errno = 66
+ ErrnoEnolink Errno = 67
+ ErrnoEadv Errno = 68
+ ErrnoEsrmnt Errno = 69
+ ErrnoEcomm Errno = 70
+ ErrnoEproto Errno = 71
+ ErrnoEmultihop Errno = 72
+ ErrnoEdotdot Errno = 73
+ ErrnoEbadmsg Errno = 74
+ ErrnoEoverflow Errno = 75
+ ErrnoEnotuniq Errno = 76
+ ErrnoEbadfd Errno = 77
+ ErrnoEremchg Errno = 78
+ ErrnoElibacc Errno = 79
+ ErrnoElibbad Errno = 80
+ ErrnoElibscn Errno = 81
+ ErrnoElibmax Errno = 82
+ ErrnoElibexec Errno = 83
+ ErrnoEilseq Errno = 84
+ ErrnoErestart Errno = 85
+ ErrnoEstrpipe Errno = 86
+ ErrnoEusers Errno = 87
+ ErrnoEnotsock Errno = 88
+ ErrnoEdestaddrreq Errno = 89
+ ErrnoEmsgsize Errno = 90
+ ErrnoEprototype Errno = 91
+ ErrnoEnoprotoopt Errno = 92
+ ErrnoEprotonosupport Errno = 93
+ ErrnoEsocktnosupport Errno = 94
+ ErrnoEopnotsupp Errno = 95
+ ErrnoEpfnosupport Errno = 96
+ ErrnoEafnosupport Errno = 97
+ ErrnoEaddrinuse Errno = 98
+ ErrnoEaddrnotavail Errno = 99
+ ErrnoEnetdown Errno = 100
+ ErrnoEnetunreach Errno = 101
+ ErrnoEnetreset Errno = 102
+ ErrnoEconnaborted Errno = 103
+ ErrnoEconnreset Errno = 104
+ ErrnoEnobufs Errno = 105
+ ErrnoEisconn Errno = 106
+ ErrnoEnotconn Errno = 107
+ ErrnoEshutdown Errno = 108
+ ErrnoEtoomanyrefs Errno = 109
+ ErrnoEtimedout Errno = 110
+ ErrnoEconnrefused Errno = 111
+ ErrnoEhostdown Errno = 112
+ ErrnoEhostunreach Errno = 113
+ ErrnoEalready Errno = 114
+ ErrnoEinprogress Errno = 115
+ ErrnoEstale Errno = 116
+ ErrnoEuclean Errno = 117
+ ErrnoEnotnam Errno = 118
+ ErrnoEnavail Errno = 119
+ ErrnoEisnam Errno = 120
+ ErrnoEremoteio Errno = 121
+ ErrnoEdquot Errno = 122
+ ErrnoEnomedium Errno = 123
+ ErrnoEmediumtype Errno = 124
+ ErrnoEcanceled Errno = 125
+ ErrnoEnokey Errno = 126
+ ErrnoEkeyexpired Errno = 127
+ ErrnoEkeyrevoked Errno = 128
+ ErrnoEkeyrejected Errno = 129
+ ErrnoEownerdead Errno = 130
+ ErrnoEnotrecoverable Errno = 131
+ ErrnoErfkill Errno = 132
+ ErrnoEhwpoison Errno = 133
+)
+
+func (_ Errno) I_EnumValues() []Errno {
+ return []Errno{
+ ErrnoEperm,
+ ErrnoEnoent,
+ ErrnoEsrch,
+ ErrnoEintr,
+ ErrnoEio,
+ ErrnoEnxio,
+ ErrnoE2Big,
+ ErrnoEnoexec,
+ ErrnoEbadf,
+ ErrnoEchild,
+ ErrnoEagain,
+ ErrnoEnomem,
+ ErrnoEacces,
+ ErrnoEfault,
+ ErrnoEnotblk,
+ ErrnoEbusy,
+ ErrnoEexist,
+ ErrnoExdev,
+ ErrnoEnodev,
+ ErrnoEnotdir,
+ ErrnoEisdir,
+ ErrnoEinval,
+ ErrnoEnfile,
+ ErrnoEmfile,
+ ErrnoEnotty,
+ ErrnoEtxtbsy,
+ ErrnoEfbig,
+ ErrnoEnospc,
+ ErrnoEspipe,
+ ErrnoErofs,
+ ErrnoEmlink,
+ ErrnoEpipe,
+ ErrnoEdom,
+ ErrnoErange,
+ ErrnoEdeadlk,
+ ErrnoEnametoolong,
+ ErrnoEnolck,
+ ErrnoEnosys,
+ ErrnoEnotempty,
+ ErrnoEloop,
+ ErrnoEnomsg,
+ ErrnoEidrm,
+ ErrnoEchrng,
+ ErrnoEl2Nsync,
+ ErrnoEl3Hlt,
+ ErrnoEl3Rst,
+ ErrnoElnrng,
+ ErrnoEunatch,
+ ErrnoEnocsi,
+ ErrnoEl2Hlt,
+ ErrnoEbade,
+ ErrnoEbadr,
+ ErrnoExfull,
+ ErrnoEnoano,
+ ErrnoEbadrqc,
+ ErrnoEbadslt,
+ ErrnoEbfont,
+ ErrnoEnostr,
+ ErrnoEnodata,
+ ErrnoEtime,
+ ErrnoEnosr,
+ ErrnoEnonet,
+ ErrnoEnopkg,
+ ErrnoEremote,
+ ErrnoEnolink,
+ ErrnoEadv,
+ ErrnoEsrmnt,
+ ErrnoEcomm,
+ ErrnoEproto,
+ ErrnoEmultihop,
+ ErrnoEdotdot,
+ ErrnoEbadmsg,
+ ErrnoEoverflow,
+ ErrnoEnotuniq,
+ ErrnoEbadfd,
+ ErrnoEremchg,
+ ErrnoElibacc,
+ ErrnoElibbad,
+ ErrnoElibscn,
+ ErrnoElibmax,
+ ErrnoElibexec,
+ ErrnoEilseq,
+ ErrnoErestart,
+ ErrnoEstrpipe,
+ ErrnoEusers,
+ ErrnoEnotsock,
+ ErrnoEdestaddrreq,
+ ErrnoEmsgsize,
+ ErrnoEprototype,
+ ErrnoEnoprotoopt,
+ ErrnoEprotonosupport,
+ ErrnoEsocktnosupport,
+ ErrnoEopnotsupp,
+ ErrnoEpfnosupport,
+ ErrnoEafnosupport,
+ ErrnoEaddrinuse,
+ ErrnoEaddrnotavail,
+ ErrnoEnetdown,
+ ErrnoEnetunreach,
+ ErrnoEnetreset,
+ ErrnoEconnaborted,
+ ErrnoEconnreset,
+ ErrnoEnobufs,
+ ErrnoEisconn,
+ ErrnoEnotconn,
+ ErrnoEshutdown,
+ ErrnoEtoomanyrefs,
+ ErrnoEtimedout,
+ ErrnoEconnrefused,
+ ErrnoEhostdown,
+ ErrnoEhostunreach,
+ ErrnoEalready,
+ ErrnoEinprogress,
+ ErrnoEstale,
+ ErrnoEuclean,
+ ErrnoEnotnam,
+ ErrnoEnavail,
+ ErrnoEisnam,
+ ErrnoEremoteio,
+ ErrnoEdquot,
+ ErrnoEnomedium,
+ ErrnoEmediumtype,
+ ErrnoEcanceled,
+ ErrnoEnokey,
+ ErrnoEkeyexpired,
+ ErrnoEkeyrevoked,
+ ErrnoEkeyrejected,
+ ErrnoEownerdead,
+ ErrnoEnotrecoverable,
+ ErrnoErfkill,
+ ErrnoEhwpoison,
+ }
+}
+
+func (_ Errno) I_EnumIsStrict() bool {
+ return true
+}
+
+func (x Errno) IsUnknown() bool {
+ switch x {
+ case 1:
+ return true
+ case 2:
+ return true
+ case 3:
+ return true
+ case 4:
+ return true
+ case 5:
+ return true
+ case 6:
+ return true
+ case 7:
+ return true
+ case 8:
+ return true
+ case 9:
+ return true
+ case 10:
+ return true
+ case 11:
+ return true
+ case 12:
+ return true
+ case 13:
+ return true
+ case 14:
+ return true
+ case 15:
+ return true
+ case 16:
+ return true
+ case 17:
+ return true
+ case 18:
+ return true
+ case 19:
+ return true
+ case 20:
+ return true
+ case 21:
+ return true
+ case 22:
+ return true
+ case 23:
+ return true
+ case 24:
+ return true
+ case 25:
+ return true
+ case 26:
+ return true
+ case 27:
+ return true
+ case 28:
+ return true
+ case 29:
+ return true
+ case 30:
+ return true
+ case 31:
+ return true
+ case 32:
+ return true
+ case 33:
+ return true
+ case 34:
+ return true
+ case 35:
+ return true
+ case 36:
+ return true
+ case 37:
+ return true
+ case 38:
+ return true
+ case 39:
+ return true
+ case 40:
+ return true
+ case 42:
+ return true
+ case 43:
+ return true
+ case 44:
+ return true
+ case 45:
+ return true
+ case 46:
+ return true
+ case 47:
+ return true
+ case 48:
+ return true
+ case 49:
+ return true
+ case 50:
+ return true
+ case 51:
+ return true
+ case 52:
+ return true
+ case 53:
+ return true
+ case 54:
+ return true
+ case 55:
+ return true
+ case 56:
+ return true
+ case 57:
+ return true
+ case 59:
+ return true
+ case 60:
+ return true
+ case 61:
+ return true
+ case 62:
+ return true
+ case 63:
+ return true
+ case 64:
+ return true
+ case 65:
+ return true
+ case 66:
+ return true
+ case 67:
+ return true
+ case 68:
+ return true
+ case 69:
+ return true
+ case 70:
+ return true
+ case 71:
+ return true
+ case 72:
+ return true
+ case 73:
+ return true
+ case 74:
+ return true
+ case 75:
+ return true
+ case 76:
+ return true
+ case 77:
+ return true
+ case 78:
+ return true
+ case 79:
+ return true
+ case 80:
+ return true
+ case 81:
+ return true
+ case 82:
+ return true
+ case 83:
+ return true
+ case 84:
+ return true
+ case 85:
+ return true
+ case 86:
+ return true
+ case 87:
+ return true
+ case 88:
+ return true
+ case 89:
+ return true
+ case 90:
+ return true
+ case 91:
+ return true
+ case 92:
+ return true
+ case 93:
+ return true
+ case 94:
+ return true
+ case 95:
+ return true
+ case 96:
+ return true
+ case 97:
+ return true
+ case 98:
+ return true
+ case 99:
+ return true
+ case 100:
+ return true
+ case 101:
+ return true
+ case 102:
+ return true
+ case 103:
+ return true
+ case 104:
+ return true
+ case 105:
+ return true
+ case 106:
+ return true
+ case 107:
+ return true
+ case 108:
+ return true
+ case 109:
+ return true
+ case 110:
+ return true
+ case 111:
+ return true
+ case 112:
+ return true
+ case 113:
+ return true
+ case 114:
+ return true
+ case 115:
+ return true
+ case 116:
+ return true
+ case 117:
+ return true
+ case 118:
+ return true
+ case 119:
+ return true
+ case 120:
+ return true
+ case 121:
+ return true
+ case 122:
+ return true
+ case 123:
+ return true
+ case 124:
+ return true
+ case 125:
+ return true
+ case 126:
+ return true
+ case 127:
+ return true
+ case 128:
+ return true
+ case 129:
+ return true
+ case 130:
+ return true
+ case 131:
+ return true
+ case 132:
+ return true
+ case 133:
+ return true
+ default:
+ return false
+ }
+}
+
+func (x Errno) String() string {
+ switch x {
+ case 1:
+ return "Eperm"
+ case 2:
+ return "Enoent"
+ case 3:
+ return "Esrch"
+ case 4:
+ return "Eintr"
+ case 5:
+ return "Eio"
+ case 6:
+ return "Enxio"
+ case 7:
+ return "E2Big"
+ case 8:
+ return "Enoexec"
+ case 9:
+ return "Ebadf"
+ case 10:
+ return "Echild"
+ case 11:
+ return "Eagain"
+ case 12:
+ return "Enomem"
+ case 13:
+ return "Eacces"
+ case 14:
+ return "Efault"
+ case 15:
+ return "Enotblk"
+ case 16:
+ return "Ebusy"
+ case 17:
+ return "Eexist"
+ case 18:
+ return "Exdev"
+ case 19:
+ return "Enodev"
+ case 20:
+ return "Enotdir"
+ case 21:
+ return "Eisdir"
+ case 22:
+ return "Einval"
+ case 23:
+ return "Enfile"
+ case 24:
+ return "Emfile"
+ case 25:
+ return "Enotty"
+ case 26:
+ return "Etxtbsy"
+ case 27:
+ return "Efbig"
+ case 28:
+ return "Enospc"
+ case 29:
+ return "Espipe"
+ case 30:
+ return "Erofs"
+ case 31:
+ return "Emlink"
+ case 32:
+ return "Epipe"
+ case 33:
+ return "Edom"
+ case 34:
+ return "Erange"
+ case 35:
+ return "Edeadlk"
+ case 36:
+ return "Enametoolong"
+ case 37:
+ return "Enolck"
+ case 38:
+ return "Enosys"
+ case 39:
+ return "Enotempty"
+ case 40:
+ return "Eloop"
+ case 42:
+ return "Enomsg"
+ case 43:
+ return "Eidrm"
+ case 44:
+ return "Echrng"
+ case 45:
+ return "El2Nsync"
+ case 46:
+ return "El3Hlt"
+ case 47:
+ return "El3Rst"
+ case 48:
+ return "Elnrng"
+ case 49:
+ return "Eunatch"
+ case 50:
+ return "Enocsi"
+ case 51:
+ return "El2Hlt"
+ case 52:
+ return "Ebade"
+ case 53:
+ return "Ebadr"
+ case 54:
+ return "Exfull"
+ case 55:
+ return "Enoano"
+ case 56:
+ return "Ebadrqc"
+ case 57:
+ return "Ebadslt"
+ case 59:
+ return "Ebfont"
+ case 60:
+ return "Enostr"
+ case 61:
+ return "Enodata"
+ case 62:
+ return "Etime"
+ case 63:
+ return "Enosr"
+ case 64:
+ return "Enonet"
+ case 65:
+ return "Enopkg"
+ case 66:
+ return "Eremote"
+ case 67:
+ return "Enolink"
+ case 68:
+ return "Eadv"
+ case 69:
+ return "Esrmnt"
+ case 70:
+ return "Ecomm"
+ case 71:
+ return "Eproto"
+ case 72:
+ return "Emultihop"
+ case 73:
+ return "Edotdot"
+ case 74:
+ return "Ebadmsg"
+ case 75:
+ return "Eoverflow"
+ case 76:
+ return "Enotuniq"
+ case 77:
+ return "Ebadfd"
+ case 78:
+ return "Eremchg"
+ case 79:
+ return "Elibacc"
+ case 80:
+ return "Elibbad"
+ case 81:
+ return "Elibscn"
+ case 82:
+ return "Elibmax"
+ case 83:
+ return "Elibexec"
+ case 84:
+ return "Eilseq"
+ case 85:
+ return "Erestart"
+ case 86:
+ return "Estrpipe"
+ case 87:
+ return "Eusers"
+ case 88:
+ return "Enotsock"
+ case 89:
+ return "Edestaddrreq"
+ case 90:
+ return "Emsgsize"
+ case 91:
+ return "Eprototype"
+ case 92:
+ return "Enoprotoopt"
+ case 93:
+ return "Eprotonosupport"
+ case 94:
+ return "Esocktnosupport"
+ case 95:
+ return "Eopnotsupp"
+ case 96:
+ return "Epfnosupport"
+ case 97:
+ return "Eafnosupport"
+ case 98:
+ return "Eaddrinuse"
+ case 99:
+ return "Eaddrnotavail"
+ case 100:
+ return "Enetdown"
+ case 101:
+ return "Enetunreach"
+ case 102:
+ return "Enetreset"
+ case 103:
+ return "Econnaborted"
+ case 104:
+ return "Econnreset"
+ case 105:
+ return "Enobufs"
+ case 106:
+ return "Eisconn"
+ case 107:
+ return "Enotconn"
+ case 108:
+ return "Eshutdown"
+ case 109:
+ return "Etoomanyrefs"
+ case 110:
+ return "Etimedout"
+ case 111:
+ return "Econnrefused"
+ case 112:
+ return "Ehostdown"
+ case 113:
+ return "Ehostunreach"
+ case 114:
+ return "Ealready"
+ case 115:
+ return "Einprogress"
+ case 116:
+ return "Estale"
+ case 117:
+ return "Euclean"
+ case 118:
+ return "Enotnam"
+ case 119:
+ return "Enavail"
+ case 120:
+ return "Eisnam"
+ case 121:
+ return "Eremoteio"
+ case 122:
+ return "Edquot"
+ case 123:
+ return "Enomedium"
+ case 124:
+ return "Emediumtype"
+ case 125:
+ return "Ecanceled"
+ case 126:
+ return "Enokey"
+ case 127:
+ return "Ekeyexpired"
+ case 128:
+ return "Ekeyrevoked"
+ case 129:
+ return "Ekeyrejected"
+ case 130:
+ return "Eownerdead"
+ case 131:
+ return "Enotrecoverable"
+ case 132:
+ return "Erfkill"
+ case 133:
+ return "Ehwpoison"
+ }
+ return "Unknown"
+}
diff --git a/src/syscall/zx/posix/socket/impl.go b/src/syscall/zx/posix/socket/impl.go
new file mode 100644
index 0000000..5cc7c57
--- /dev/null
+++ b/src/syscall/zx/posix/socket/impl.go
@@ -0,0 +1,17529 @@
+// Copyright 2018 The Fuchsia Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// Code generated by third_party/go/regen-fidl; DO NOT EDIT.
+
+package socket
+
+import (
+ _zx "syscall/zx"
+ _bindings "syscall/zx/fidl"
+ fuchsiaio "syscall/zx/io"
+ fuchsianet "syscall/zx/net"
+ fuchsiaposix "syscall/zx/posix"
+)
+
+const (
+ // The maximum length of an interface name.
+ InterfaceNameLength uint8 = 15
+)
+
+var _ _bindings.Enum = TcpCongestionControl(0)
+
+// TCP congestion control modes.
+type TcpCongestionControl uint32
+
+const (
+ TcpCongestionControlReno TcpCongestionControl = 1
+ TcpCongestionControlCubic TcpCongestionControl = 2
+)
+
+func (_ TcpCongestionControl) I_EnumValues() []TcpCongestionControl {
+ return []TcpCongestionControl{
+ TcpCongestionControlReno,
+ TcpCongestionControlCubic,
+ }
+}
+
+func (_ TcpCongestionControl) I_EnumIsStrict() bool {
+ return true
+}
+
+func (x TcpCongestionControl) IsUnknown() bool {
+ switch x {
+ case 1:
+ return true
+ case 2:
+ return true
+ default:
+ return false
+ }
+}
+
+func (x TcpCongestionControl) String() string {
+ switch x {
+ case 1:
+ return "Reno"
+ case 2:
+ return "Cubic"
+ }
+ return "Unknown"
+}
+
+var _ _bindings.Enum = TcpState(0)
+
+// TCP state machine state.
+type TcpState uint32
+
+const (
+ TcpStateEstablished TcpState = 1
+ TcpStateSynSent TcpState = 2
+ TcpStateSynRecv TcpState = 3
+ TcpStateFinWait1 TcpState = 4
+ TcpStateFinWait2 TcpState = 5
+ TcpStateTimeWait TcpState = 6
+ TcpStateClose TcpState = 7
+ TcpStateCloseWait TcpState = 8
+ TcpStateLastAck TcpState = 9
+ TcpStateListen TcpState = 10
+ TcpStateClosing TcpState = 11
+)
+
+func (_ TcpState) I_EnumValues() []TcpState {
+ return []TcpState{
+ TcpStateEstablished,
+ TcpStateSynSent,
+ TcpStateSynRecv,
+ TcpStateFinWait1,
+ TcpStateFinWait2,
+ TcpStateTimeWait,
+ TcpStateClose,
+ TcpStateCloseWait,
+ TcpStateLastAck,
+ TcpStateListen,
+ TcpStateClosing,
+ }
+}
+
+func (_ TcpState) I_EnumIsStrict() bool {
+ return true
+}
+
+func (x TcpState) IsUnknown() bool {
+ switch x {
+ case 1:
+ return true
+ case 2:
+ return true
+ case 3:
+ return true
+ case 4:
+ return true
+ case 5:
+ return true
+ case 6:
+ return true
+ case 7:
+ return true
+ case 8:
+ return true
+ case 9:
+ return true
+ case 10:
+ return true
+ case 11:
+ return true
+ default:
+ return false
+ }
+}
+
+func (x TcpState) String() string {
+ switch x {
+ case 1:
+ return "Established"
+ case 2:
+ return "SynSent"
+ case 3:
+ return "SynRecv"
+ case 4:
+ return "FinWait1"
+ case 5:
+ return "FinWait2"
+ case 6:
+ return "TimeWait"
+ case 7:
+ return "Close"
+ case 8:
+ return "CloseWait"
+ case 9:
+ return "LastAck"
+ case 10:
+ return "Listen"
+ case 11:
+ return "Closing"
+ }
+ return "Unknown"
+}
+
+var _ _bindings.Enum = TcpCongestionControlState(0)
+
+// TCP congestion control state machine state.
+type TcpCongestionControlState uint32
+
+const (
+ TcpCongestionControlStateOpen TcpCongestionControlState = 0
+ TcpCongestionControlStateDisorder TcpCongestionControlState = 1
+ TcpCongestionControlStateCongestionWindowReduced TcpCongestionControlState = 2
+ TcpCongestionControlStateRecovery TcpCongestionControlState = 3
+ TcpCongestionControlStateLoss TcpCongestionControlState = 4
+)
+
+func (_ TcpCongestionControlState) I_EnumValues() []TcpCongestionControlState {
+ return []TcpCongestionControlState{
+ TcpCongestionControlStateOpen,
+ TcpCongestionControlStateDisorder,
+ TcpCongestionControlStateCongestionWindowReduced,
+ TcpCongestionControlStateRecovery,
+ TcpCongestionControlStateLoss,
+ }
+}
+
+func (_ TcpCongestionControlState) I_EnumIsStrict() bool {
+ return true
+}
+
+func (x TcpCongestionControlState) IsUnknown() bool {
+ switch x {
+ case 0:
+ return true
+ case 1:
+ return true
+ case 2:
+ return true
+ case 3:
+ return true
+ case 4:
+ return true
+ default:
+ return false
+ }
+}
+
+func (x TcpCongestionControlState) String() string {
+ switch x {
+ case 0:
+ return "Open"
+ case 1:
+ return "Disorder"
+ case 2:
+ return "CongestionWindowReduced"
+ case 3:
+ return "Recovery"
+ case 4:
+ return "Loss"
+ }
+ return "Unknown"
+}
+
+var _ _bindings.Enum = Domain(0)
+
+// A socket's domain.
+//
+// Determines the addressing domain for a socket.
+type Domain int16
+
+const (
+
+ // An IPv4 socket. Equivalent to `AF_INET`.
+ DomainIpv4 Domain = 0
+
+ // An IPv6 socket. Equivalent to `AF_INET6`.
+ DomainIpv6 Domain = 1
+)
+
+func (_ Domain) I_EnumValues() []Domain {
+ return []Domain{
+ DomainIpv4,
+ DomainIpv6,
+ }
+}
+
+func (_ Domain) I_EnumIsStrict() bool {
+ return true
+}
+
+func (x Domain) IsUnknown() bool {
+ switch x {
+ case 0:
+ return true
+ case 1:
+ return true
+ default:
+ return false
+ }
+}
+
+func (x Domain) String() string {
+ switch x {
+ case 0:
+ return "Ipv4"
+ case 1:
+ return "Ipv6"
+ }
+ return "Unknown"
+}
+
+var _ _bindings.Enum = DatagramSocketProtocol(0)
+
+// Protocols supported by [`fuchsia.posix.socket/DatagramSocket`].
+//
+// `DatagramSocketProtocol` enumerates the protocols supported by the network stack over datagram
+// sockets.
+type DatagramSocketProtocol uint32
+
+const (
+
+ // UDP (User Datagram Protocol).
+ //
+ // A UDP socket is equivalent to the POSIX API of `SOCK_DGRAM` with a protocol of 0 or
+ // `IPPROTO_UDP`.
+ DatagramSocketProtocolUdp DatagramSocketProtocol = 1
+
+ // ICMP (Internet Control Message Protocol) echo.
+ //
+ // An ICMP echo socket is equivalent to the POSIX API of `SOCK_DGRAM` with a protocol of
+ // `IPPROTO_ICMP` `IPPROTO_ICMPV6` (depending on provided domain).
+ //
+ // Datagrams sent over an ICMP echo socket *must* have a valid ICMP or ICMPv6 echo header.
+ DatagramSocketProtocolIcmpEcho DatagramSocketProtocol = 2
+)
+
+func (_ DatagramSocketProtocol) I_EnumValues() []DatagramSocketProtocol {
+ return []DatagramSocketProtocol{
+ DatagramSocketProtocolUdp,
+ DatagramSocketProtocolIcmpEcho,
+ }
+}
+
+func (_ DatagramSocketProtocol) I_EnumIsStrict() bool {
+ return true
+}
+
+func (x DatagramSocketProtocol) IsUnknown() bool {
+ switch x {
+ case 1:
+ return true
+ case 2:
+ return true
+ default:
+ return false
+ }
+}
+
+func (x DatagramSocketProtocol) String() string {
+ switch x {
+ case 1:
+ return "Udp"
+ case 2:
+ return "IcmpEcho"
+ }
+ return "Unknown"
+}
+
+var _ _bindings.Enum = StreamSocketProtocol(0)
+
+// Protocols supported by [`fuchsia.posix.socket/StreamSocket`].
+//
+// `StreamSocketProtocol` enumerates the protocols supported by the network stack over stream
+// sockets.
+type StreamSocketProtocol uint32
+
+const (
+
+ // TCP (Transmission Control Protocol).
+ //
+ // A TCP socket is equivalent to the POSIX API of `SOCK_STREAM` with a protocol of 0 or
+ // `IPPROTO_TCP`.
+ StreamSocketProtocolTcp StreamSocketProtocol = 0
+)
+
+func (_ StreamSocketProtocol) I_EnumValues() []StreamSocketProtocol {
+ return []StreamSocketProtocol{
+ StreamSocketProtocolTcp,
+ }
+}
+
+func (_ StreamSocketProtocol) I_EnumIsStrict() bool {
+ return true
+}
+
+func (x StreamSocketProtocol) IsUnknown() bool {
+ switch x {
+ case 0:
+ return true
+ default:
+ return false
+ }
+}
+
+func (x StreamSocketProtocol) String() string {
+ switch x {
+ case 0:
+ return "Tcp"
+ }
+ return "Unknown"
+}
+
+var _ _bindings.Bits = ShutdownMode(0)
+
+// Socket shutdown mode.
+type ShutdownMode uint16
+
+const (
+ ShutdownModeRead ShutdownMode = 1
+ ShutdownModeWrite ShutdownMode = 2
+ ShutdownMode_Mask ShutdownMode = 3
+)
+
+func (_ ShutdownMode) I_BitsMask() ShutdownMode {
+ return ShutdownMode_Mask
+}
+
+func (_ ShutdownMode) I_BitsIsStrict() bool {
+ return true
+}
+
+func (x ShutdownMode) HasUnknownBits() bool {
+ return x.GetUnknownBits() != 0
+}
+
+func (x ShutdownMode) GetUnknownBits() uint64 {
+ return uint64(^ShutdownMode_Mask & x)
+}
+
+func (x ShutdownMode) InvertBits() ShutdownMode {
+ return ShutdownMode_Mask & ^x
+}
+
+// HasBits validates that all flipped bits in the mask are set.
+func (x ShutdownMode) HasBits(mask ShutdownMode) bool {
+ return mask|x == x
+}
+
+// ClearBits ensures all flipped bits in the mask are unset.
+func (x ShutdownMode) ClearBits(mask ShutdownMode) ShutdownMode {
+ return ^mask & x
+}
+
+func (x ShutdownMode) String() string {
+ switch x {
+ case 1:
+ return "Read"
+ case 2:
+ return "Write"
+ }
+ return "Unknown"
+}
+
+var _ _bindings.Bits = RecvMsgFlags(0)
+
+// Flags controlling RecvMsg behavior.
+type RecvMsgFlags uint16
+
+const (
+ RecvMsgFlagsPeek RecvMsgFlags = 2
+ RecvMsgFlags_Mask RecvMsgFlags = 2
+)
+
+func (_ RecvMsgFlags) I_BitsMask() RecvMsgFlags {
+ return RecvMsgFlags_Mask
+}
+
+func (_ RecvMsgFlags) I_BitsIsStrict() bool {
+ return true
+}
+
+func (x RecvMsgFlags) HasUnknownBits() bool {
+ return x.GetUnknownBits() != 0
+}
+
+func (x RecvMsgFlags) GetUnknownBits() uint64 {
+ return uint64(^RecvMsgFlags_Mask & x)
+}
+
+func (x RecvMsgFlags) InvertBits() RecvMsgFlags {
+ return RecvMsgFlags_Mask & ^x
+}
+
+// HasBits validates that all flipped bits in the mask are set.
+func (x RecvMsgFlags) HasBits(mask RecvMsgFlags) bool {
+ return mask|x == x
+}
+
+// ClearBits ensures all flipped bits in the mask are unset.
+func (x RecvMsgFlags) ClearBits(mask RecvMsgFlags) RecvMsgFlags {
+ return ^mask & x
+}
+
+func (x RecvMsgFlags) String() string {
+ switch x {
+ case 2:
+ return "Peek"
+ }
+ return "Unknown"
+}
+
+var _ _bindings.Bits = SendMsgFlags(0)
+
+type SendMsgFlags uint16
+
+const (
+ SendMsgFlagsReserved SendMsgFlags = 32768
+ SendMsgFlags_Mask SendMsgFlags = 32768
+)
+
+func (_ SendMsgFlags) I_BitsMask() SendMsgFlags {
+ return SendMsgFlags_Mask
+}
+
+func (_ SendMsgFlags) I_BitsIsStrict() bool {
+ return true
+}
+
+func (x SendMsgFlags) HasUnknownBits() bool {
+ return x.GetUnknownBits() != 0
+}
+
+func (x SendMsgFlags) GetUnknownBits() uint64 {
+ return uint64(^SendMsgFlags_Mask & x)
+}
+
+func (x SendMsgFlags) InvertBits() SendMsgFlags {
+ return SendMsgFlags_Mask & ^x
+}
+
+// HasBits validates that all flipped bits in the mask are set.
+func (x SendMsgFlags) HasBits(mask SendMsgFlags) bool {
+ return mask|x == x
+}
+
+// ClearBits ensures all flipped bits in the mask are unset.
+func (x SendMsgFlags) ClearBits(mask SendMsgFlags) SendMsgFlags {
+ return ^mask & x
+}
+
+func (x SendMsgFlags) String() string {
+ switch x {
+ case 32768:
+ return "Reserved"
+ }
+ return "Unknown"
+}
+
+var _ _bindings.Bits = InterfaceFlags(0)
+
+// Bits representing the interface flags as returned by the SIOCGIFFLAGS ioctl
+// operation. These bitmasks are intended to track the C API definition. For
+// example, `InterfaceFlags.UP` corresponds to `IFF_UP`, etc.
+type InterfaceFlags uint16
+
+const (
+ InterfaceFlagsUp InterfaceFlags = 1
+ InterfaceFlagsBroadcast InterfaceFlags = 2
+ InterfaceFlagsDebug InterfaceFlags = 4
+ InterfaceFlagsLoopback InterfaceFlags = 8
+ InterfaceFlagsPointtopoint InterfaceFlags = 16
+ InterfaceFlagsNotrailers InterfaceFlags = 32
+ InterfaceFlagsRunning InterfaceFlags = 64
+ InterfaceFlagsNoarp InterfaceFlags = 128
+ InterfaceFlagsPromisc InterfaceFlags = 256
+ InterfaceFlagsAllmulti InterfaceFlags = 512
+ InterfaceFlagsLeader InterfaceFlags = 1024
+ InterfaceFlagsFollower InterfaceFlags = 2048
+ InterfaceFlagsMulticast InterfaceFlags = 4096
+ InterfaceFlagsPortsel InterfaceFlags = 8192
+ InterfaceFlagsAutomedia InterfaceFlags = 16384
+ InterfaceFlagsDynamic InterfaceFlags = 32768
+ InterfaceFlags_Mask InterfaceFlags = 65535
+)
+
+func (_ InterfaceFlags) I_BitsMask() InterfaceFlags {
+ return InterfaceFlags_Mask
+}
+
+func (_ InterfaceFlags) I_BitsIsStrict() bool {
+ return true
+}
+
+func (x InterfaceFlags) HasUnknownBits() bool {
+ return x.GetUnknownBits() != 0
+}
+
+func (x InterfaceFlags) GetUnknownBits() uint64 {
+ return uint64(^InterfaceFlags_Mask & x)
+}
+
+func (x InterfaceFlags) InvertBits() InterfaceFlags {
+ return InterfaceFlags_Mask & ^x
+}
+
+// HasBits validates that all flipped bits in the mask are set.
+func (x InterfaceFlags) HasBits(mask InterfaceFlags) bool {
+ return mask|x == x
+}
+
+// ClearBits ensures all flipped bits in the mask are unset.
+func (x InterfaceFlags) ClearBits(mask InterfaceFlags) InterfaceFlags {
+ return ^mask & x
+}
+
+func (x InterfaceFlags) String() string {
+ switch x {
+ case 1:
+ return "Up"
+ case 2:
+ return "Broadcast"
+ case 4:
+ return "Debug"
+ case 8:
+ return "Loopback"
+ case 16:
+ return "Pointtopoint"
+ case 32:
+ return "Notrailers"
+ case 64:
+ return "Running"
+ case 128:
+ return "Noarp"
+ case 256:
+ return "Promisc"
+ case 512:
+ return "Allmulti"
+ case 1024:
+ return "Leader"
+ case 2048:
+ return "Follower"
+ case 4096:
+ return "Multicast"
+ case 8192:
+ return "Portsel"
+ case 16384:
+ return "Automedia"
+ case 32768:
+ return "Dynamic"
+ }
+ return "Unknown"
+}
+
+type BaseSocketBindResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mBaseSocketBindResponse = _bindings.CreateLazyMarshaler(BaseSocketBindResponse{})
+
+func (msg *BaseSocketBindResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketBindResponse
+}
+
+type BaseSocketConnectResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mBaseSocketConnectResponse = _bindings.CreateLazyMarshaler(BaseSocketConnectResponse{})
+
+func (msg *BaseSocketConnectResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketConnectResponse
+}
+
+type BaseSocketDisconnectResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mBaseSocketDisconnectResponse = _bindings.CreateLazyMarshaler(BaseSocketDisconnectResponse{})
+
+func (msg *BaseSocketDisconnectResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketDisconnectResponse
+}
+
+type BaseSocketGetSockNameResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Addr fuchsianet.SocketAddress `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mBaseSocketGetSockNameResponse = _bindings.CreateLazyMarshaler(BaseSocketGetSockNameResponse{})
+
+func (msg *BaseSocketGetSockNameResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketGetSockNameResponse
+}
+
+type BaseSocketGetPeerNameResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Addr fuchsianet.SocketAddress `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mBaseSocketGetPeerNameResponse = _bindings.CreateLazyMarshaler(BaseSocketGetPeerNameResponse{})
+
+func (msg *BaseSocketGetPeerNameResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketGetPeerNameResponse
+}
+
+type BaseSocketShutdown2Response struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mBaseSocketShutdown2Response = _bindings.CreateLazyMarshaler(BaseSocketShutdown2Response{})
+
+func (msg *BaseSocketShutdown2Response) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketShutdown2Response
+}
+
+type BaseSocketSetReuseAddressResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mBaseSocketSetReuseAddressResponse = _bindings.CreateLazyMarshaler(BaseSocketSetReuseAddressResponse{})
+
+func (msg *BaseSocketSetReuseAddressResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketSetReuseAddressResponse
+}
+
+type BaseSocketGetReuseAddressResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mBaseSocketGetReuseAddressResponse = _bindings.CreateLazyMarshaler(BaseSocketGetReuseAddressResponse{})
+
+func (msg *BaseSocketGetReuseAddressResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketGetReuseAddressResponse
+}
+
+type BaseSocketGetErrorResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mBaseSocketGetErrorResponse = _bindings.CreateLazyMarshaler(BaseSocketGetErrorResponse{})
+
+func (msg *BaseSocketGetErrorResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketGetErrorResponse
+}
+
+type BaseSocketSetBroadcastResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mBaseSocketSetBroadcastResponse = _bindings.CreateLazyMarshaler(BaseSocketSetBroadcastResponse{})
+
+func (msg *BaseSocketSetBroadcastResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketSetBroadcastResponse
+}
+
+type BaseSocketGetBroadcastResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mBaseSocketGetBroadcastResponse = _bindings.CreateLazyMarshaler(BaseSocketGetBroadcastResponse{})
+
+func (msg *BaseSocketGetBroadcastResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketGetBroadcastResponse
+}
+
+type BaseSocketSetSendBufferResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mBaseSocketSetSendBufferResponse = _bindings.CreateLazyMarshaler(BaseSocketSetSendBufferResponse{})
+
+func (msg *BaseSocketSetSendBufferResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketSetSendBufferResponse
+}
+
+type BaseSocketGetSendBufferResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ ValueBytes uint64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mBaseSocketGetSendBufferResponse = _bindings.CreateLazyMarshaler(BaseSocketGetSendBufferResponse{})
+
+func (msg *BaseSocketGetSendBufferResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketGetSendBufferResponse
+}
+
+type BaseSocketSetReceiveBufferResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mBaseSocketSetReceiveBufferResponse = _bindings.CreateLazyMarshaler(BaseSocketSetReceiveBufferResponse{})
+
+func (msg *BaseSocketSetReceiveBufferResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketSetReceiveBufferResponse
+}
+
+type BaseSocketGetReceiveBufferResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ ValueBytes uint64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mBaseSocketGetReceiveBufferResponse = _bindings.CreateLazyMarshaler(BaseSocketGetReceiveBufferResponse{})
+
+func (msg *BaseSocketGetReceiveBufferResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketGetReceiveBufferResponse
+}
+
+type BaseSocketSetKeepAliveResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mBaseSocketSetKeepAliveResponse = _bindings.CreateLazyMarshaler(BaseSocketSetKeepAliveResponse{})
+
+func (msg *BaseSocketSetKeepAliveResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketSetKeepAliveResponse
+}
+
+type BaseSocketGetKeepAliveResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mBaseSocketGetKeepAliveResponse = _bindings.CreateLazyMarshaler(BaseSocketGetKeepAliveResponse{})
+
+func (msg *BaseSocketGetKeepAliveResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketGetKeepAliveResponse
+}
+
+type BaseSocketSetOutOfBandInlineResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mBaseSocketSetOutOfBandInlineResponse = _bindings.CreateLazyMarshaler(BaseSocketSetOutOfBandInlineResponse{})
+
+func (msg *BaseSocketSetOutOfBandInlineResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketSetOutOfBandInlineResponse
+}
+
+type BaseSocketGetOutOfBandInlineResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mBaseSocketGetOutOfBandInlineResponse = _bindings.CreateLazyMarshaler(BaseSocketGetOutOfBandInlineResponse{})
+
+func (msg *BaseSocketGetOutOfBandInlineResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketGetOutOfBandInlineResponse
+}
+
+type BaseSocketSetNoCheckResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mBaseSocketSetNoCheckResponse = _bindings.CreateLazyMarshaler(BaseSocketSetNoCheckResponse{})
+
+func (msg *BaseSocketSetNoCheckResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketSetNoCheckResponse
+}
+
+type BaseSocketGetNoCheckResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mBaseSocketGetNoCheckResponse = _bindings.CreateLazyMarshaler(BaseSocketGetNoCheckResponse{})
+
+func (msg *BaseSocketGetNoCheckResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketGetNoCheckResponse
+}
+
+type BaseSocketSetLingerResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mBaseSocketSetLingerResponse = _bindings.CreateLazyMarshaler(BaseSocketSetLingerResponse{})
+
+func (msg *BaseSocketSetLingerResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketSetLingerResponse
+}
+
+type BaseSocketGetLingerResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"4" fidl_size_v2:"8" fidl_alignment_v2:"4"`
+ Linger bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ LengthSecs uint32 `fidl_offset_v1:"4" fidl_offset_v2:"4"`
+}
+
+var _mBaseSocketGetLingerResponse = _bindings.CreateLazyMarshaler(BaseSocketGetLingerResponse{})
+
+func (msg *BaseSocketGetLingerResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketGetLingerResponse
+}
+
+type BaseSocketSetReusePortResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mBaseSocketSetReusePortResponse = _bindings.CreateLazyMarshaler(BaseSocketSetReusePortResponse{})
+
+func (msg *BaseSocketSetReusePortResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketSetReusePortResponse
+}
+
+type BaseSocketGetReusePortResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mBaseSocketGetReusePortResponse = _bindings.CreateLazyMarshaler(BaseSocketGetReusePortResponse{})
+
+func (msg *BaseSocketGetReusePortResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketGetReusePortResponse
+}
+
+type BaseSocketGetAcceptConnResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mBaseSocketGetAcceptConnResponse = _bindings.CreateLazyMarshaler(BaseSocketGetAcceptConnResponse{})
+
+func (msg *BaseSocketGetAcceptConnResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketGetAcceptConnResponse
+}
+
+type BaseSocketSetBindToDeviceResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mBaseSocketSetBindToDeviceResponse = _bindings.CreateLazyMarshaler(BaseSocketSetBindToDeviceResponse{})
+
+func (msg *BaseSocketSetBindToDeviceResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketSetBindToDeviceResponse
+}
+
+type BaseSocketGetBindToDeviceResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Value string `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"15"`
+}
+
+var _mBaseSocketGetBindToDeviceResponse = _bindings.CreateLazyMarshaler(BaseSocketGetBindToDeviceResponse{})
+
+func (msg *BaseSocketGetBindToDeviceResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketGetBindToDeviceResponse
+}
+
+type BaseSocketSetTimestampResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mBaseSocketSetTimestampResponse = _bindings.CreateLazyMarshaler(BaseSocketSetTimestampResponse{})
+
+func (msg *BaseSocketSetTimestampResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketSetTimestampResponse
+}
+
+type BaseSocketGetTimestampResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mBaseSocketGetTimestampResponse = _bindings.CreateLazyMarshaler(BaseSocketGetTimestampResponse{})
+
+func (msg *BaseSocketGetTimestampResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketGetTimestampResponse
+}
+
+type BaseSocketSetIpTypeOfServiceResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mBaseSocketSetIpTypeOfServiceResponse = _bindings.CreateLazyMarshaler(BaseSocketSetIpTypeOfServiceResponse{})
+
+func (msg *BaseSocketSetIpTypeOfServiceResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketSetIpTypeOfServiceResponse
+}
+
+type BaseSocketGetIpTypeOfServiceResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+ Value uint8 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mBaseSocketGetIpTypeOfServiceResponse = _bindings.CreateLazyMarshaler(BaseSocketGetIpTypeOfServiceResponse{})
+
+func (msg *BaseSocketGetIpTypeOfServiceResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketGetIpTypeOfServiceResponse
+}
+
+type BaseSocketSetIpTtlResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mBaseSocketSetIpTtlResponse = _bindings.CreateLazyMarshaler(BaseSocketSetIpTtlResponse{})
+
+func (msg *BaseSocketSetIpTtlResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketSetIpTtlResponse
+}
+
+type BaseSocketGetIpTtlResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+ Value uint8 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mBaseSocketGetIpTtlResponse = _bindings.CreateLazyMarshaler(BaseSocketGetIpTtlResponse{})
+
+func (msg *BaseSocketGetIpTtlResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketGetIpTtlResponse
+}
+
+type BaseSocketSetIpPacketInfoResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mBaseSocketSetIpPacketInfoResponse = _bindings.CreateLazyMarshaler(BaseSocketSetIpPacketInfoResponse{})
+
+func (msg *BaseSocketSetIpPacketInfoResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketSetIpPacketInfoResponse
+}
+
+type BaseSocketGetIpPacketInfoResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mBaseSocketGetIpPacketInfoResponse = _bindings.CreateLazyMarshaler(BaseSocketGetIpPacketInfoResponse{})
+
+func (msg *BaseSocketGetIpPacketInfoResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketGetIpPacketInfoResponse
+}
+
+type BaseSocketSetIpReceiveTypeOfServiceResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mBaseSocketSetIpReceiveTypeOfServiceResponse = _bindings.CreateLazyMarshaler(BaseSocketSetIpReceiveTypeOfServiceResponse{})
+
+func (msg *BaseSocketSetIpReceiveTypeOfServiceResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketSetIpReceiveTypeOfServiceResponse
+}
+
+type BaseSocketGetIpReceiveTypeOfServiceResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mBaseSocketGetIpReceiveTypeOfServiceResponse = _bindings.CreateLazyMarshaler(BaseSocketGetIpReceiveTypeOfServiceResponse{})
+
+func (msg *BaseSocketGetIpReceiveTypeOfServiceResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketGetIpReceiveTypeOfServiceResponse
+}
+
+type BaseSocketSetIpMulticastInterfaceResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mBaseSocketSetIpMulticastInterfaceResponse = _bindings.CreateLazyMarshaler(BaseSocketSetIpMulticastInterfaceResponse{})
+
+func (msg *BaseSocketSetIpMulticastInterfaceResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketSetIpMulticastInterfaceResponse
+}
+
+type BaseSocketGetIpMulticastInterfaceResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"4" fidl_alignment_v1:"1" fidl_size_v2:"4" fidl_alignment_v2:"1"`
+ Value fuchsianet.Ipv4Address `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mBaseSocketGetIpMulticastInterfaceResponse = _bindings.CreateLazyMarshaler(BaseSocketGetIpMulticastInterfaceResponse{})
+
+func (msg *BaseSocketGetIpMulticastInterfaceResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketGetIpMulticastInterfaceResponse
+}
+
+type BaseSocketSetIpMulticastTtlResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mBaseSocketSetIpMulticastTtlResponse = _bindings.CreateLazyMarshaler(BaseSocketSetIpMulticastTtlResponse{})
+
+func (msg *BaseSocketSetIpMulticastTtlResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketSetIpMulticastTtlResponse
+}
+
+type BaseSocketGetIpMulticastTtlResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+ Value uint8 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mBaseSocketGetIpMulticastTtlResponse = _bindings.CreateLazyMarshaler(BaseSocketGetIpMulticastTtlResponse{})
+
+func (msg *BaseSocketGetIpMulticastTtlResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketGetIpMulticastTtlResponse
+}
+
+type BaseSocketSetIpMulticastLoopbackResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mBaseSocketSetIpMulticastLoopbackResponse = _bindings.CreateLazyMarshaler(BaseSocketSetIpMulticastLoopbackResponse{})
+
+func (msg *BaseSocketSetIpMulticastLoopbackResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketSetIpMulticastLoopbackResponse
+}
+
+type BaseSocketGetIpMulticastLoopbackResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mBaseSocketGetIpMulticastLoopbackResponse = _bindings.CreateLazyMarshaler(BaseSocketGetIpMulticastLoopbackResponse{})
+
+func (msg *BaseSocketGetIpMulticastLoopbackResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketGetIpMulticastLoopbackResponse
+}
+
+type BaseSocketAddIpMembershipResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mBaseSocketAddIpMembershipResponse = _bindings.CreateLazyMarshaler(BaseSocketAddIpMembershipResponse{})
+
+func (msg *BaseSocketAddIpMembershipResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketAddIpMembershipResponse
+}
+
+type BaseSocketDropIpMembershipResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mBaseSocketDropIpMembershipResponse = _bindings.CreateLazyMarshaler(BaseSocketDropIpMembershipResponse{})
+
+func (msg *BaseSocketDropIpMembershipResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketDropIpMembershipResponse
+}
+
+type BaseSocketAddIpv6MembershipResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mBaseSocketAddIpv6MembershipResponse = _bindings.CreateLazyMarshaler(BaseSocketAddIpv6MembershipResponse{})
+
+func (msg *BaseSocketAddIpv6MembershipResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketAddIpv6MembershipResponse
+}
+
+type BaseSocketDropIpv6MembershipResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mBaseSocketDropIpv6MembershipResponse = _bindings.CreateLazyMarshaler(BaseSocketDropIpv6MembershipResponse{})
+
+func (msg *BaseSocketDropIpv6MembershipResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketDropIpv6MembershipResponse
+}
+
+type BaseSocketSetIpv6MulticastInterfaceResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mBaseSocketSetIpv6MulticastInterfaceResponse = _bindings.CreateLazyMarshaler(BaseSocketSetIpv6MulticastInterfaceResponse{})
+
+func (msg *BaseSocketSetIpv6MulticastInterfaceResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketSetIpv6MulticastInterfaceResponse
+}
+
+type BaseSocketGetIpv6MulticastInterfaceResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value uint64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mBaseSocketGetIpv6MulticastInterfaceResponse = _bindings.CreateLazyMarshaler(BaseSocketGetIpv6MulticastInterfaceResponse{})
+
+func (msg *BaseSocketGetIpv6MulticastInterfaceResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketGetIpv6MulticastInterfaceResponse
+}
+
+type BaseSocketSetIpv6MulticastHopsResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mBaseSocketSetIpv6MulticastHopsResponse = _bindings.CreateLazyMarshaler(BaseSocketSetIpv6MulticastHopsResponse{})
+
+func (msg *BaseSocketSetIpv6MulticastHopsResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketSetIpv6MulticastHopsResponse
+}
+
+type BaseSocketGetIpv6MulticastHopsResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+ Value uint8 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mBaseSocketGetIpv6MulticastHopsResponse = _bindings.CreateLazyMarshaler(BaseSocketGetIpv6MulticastHopsResponse{})
+
+func (msg *BaseSocketGetIpv6MulticastHopsResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketGetIpv6MulticastHopsResponse
+}
+
+type BaseSocketSetIpv6MulticastLoopbackResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mBaseSocketSetIpv6MulticastLoopbackResponse = _bindings.CreateLazyMarshaler(BaseSocketSetIpv6MulticastLoopbackResponse{})
+
+func (msg *BaseSocketSetIpv6MulticastLoopbackResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketSetIpv6MulticastLoopbackResponse
+}
+
+type BaseSocketGetIpv6MulticastLoopbackResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mBaseSocketGetIpv6MulticastLoopbackResponse = _bindings.CreateLazyMarshaler(BaseSocketGetIpv6MulticastLoopbackResponse{})
+
+func (msg *BaseSocketGetIpv6MulticastLoopbackResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketGetIpv6MulticastLoopbackResponse
+}
+
+type BaseSocketSetIpv6OnlyResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mBaseSocketSetIpv6OnlyResponse = _bindings.CreateLazyMarshaler(BaseSocketSetIpv6OnlyResponse{})
+
+func (msg *BaseSocketSetIpv6OnlyResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketSetIpv6OnlyResponse
+}
+
+type BaseSocketGetIpv6OnlyResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mBaseSocketGetIpv6OnlyResponse = _bindings.CreateLazyMarshaler(BaseSocketGetIpv6OnlyResponse{})
+
+func (msg *BaseSocketGetIpv6OnlyResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketGetIpv6OnlyResponse
+}
+
+type BaseSocketSetIpv6ReceiveTrafficClassResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mBaseSocketSetIpv6ReceiveTrafficClassResponse = _bindings.CreateLazyMarshaler(BaseSocketSetIpv6ReceiveTrafficClassResponse{})
+
+func (msg *BaseSocketSetIpv6ReceiveTrafficClassResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketSetIpv6ReceiveTrafficClassResponse
+}
+
+type BaseSocketGetIpv6ReceiveTrafficClassResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mBaseSocketGetIpv6ReceiveTrafficClassResponse = _bindings.CreateLazyMarshaler(BaseSocketGetIpv6ReceiveTrafficClassResponse{})
+
+func (msg *BaseSocketGetIpv6ReceiveTrafficClassResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketGetIpv6ReceiveTrafficClassResponse
+}
+
+type BaseSocketSetIpv6TrafficClassResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mBaseSocketSetIpv6TrafficClassResponse = _bindings.CreateLazyMarshaler(BaseSocketSetIpv6TrafficClassResponse{})
+
+func (msg *BaseSocketSetIpv6TrafficClassResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketSetIpv6TrafficClassResponse
+}
+
+type BaseSocketGetIpv6TrafficClassResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+ Value uint8 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mBaseSocketGetIpv6TrafficClassResponse = _bindings.CreateLazyMarshaler(BaseSocketGetIpv6TrafficClassResponse{})
+
+func (msg *BaseSocketGetIpv6TrafficClassResponse) Marshaler() _bindings.Marshaler {
+ return _mBaseSocketGetIpv6TrafficClassResponse
+}
+
+type DatagramSocketShutdownResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mDatagramSocketShutdownResponse = _bindings.CreateLazyMarshaler(DatagramSocketShutdownResponse{})
+
+func (msg *DatagramSocketShutdownResponse) Marshaler() _bindings.Marshaler {
+ return _mDatagramSocketShutdownResponse
+}
+
+type DatagramSocketRecvMsgResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"64" fidl_alignment_v1:"8" fidl_size_v2:"56" fidl_alignment_v2:"8"`
+ Addr *fuchsianet.SocketAddress `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Data []uint8 `fidl_offset_v1:"24" fidl_offset_v2:"16" fidl_bounds:""`
+ Control RecvControlData `fidl_offset_v1:"40" fidl_offset_v2:"32"`
+ Truncated uint32 `fidl_offset_v1:"56" fidl_offset_v2:"48"`
+}
+
+var _mDatagramSocketRecvMsgResponse = _bindings.CreateLazyMarshaler(DatagramSocketRecvMsgResponse{})
+
+func (msg *DatagramSocketRecvMsgResponse) Marshaler() _bindings.Marshaler {
+ return _mDatagramSocketRecvMsgResponse
+}
+
+type DatagramSocketSendMsgResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Len int64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mDatagramSocketSendMsgResponse = _bindings.CreateLazyMarshaler(DatagramSocketSendMsgResponse{})
+
+func (msg *DatagramSocketSendMsgResponse) Marshaler() _bindings.Marshaler {
+ return _mDatagramSocketSendMsgResponse
+}
+
+type DatagramSocketGetInfoResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"4" fidl_size_v2:"8" fidl_alignment_v2:"4"`
+ Domain Domain `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Proto DatagramSocketProtocol `fidl_offset_v1:"4" fidl_offset_v2:"4"`
+}
+
+var _mDatagramSocketGetInfoResponse = _bindings.CreateLazyMarshaler(DatagramSocketGetInfoResponse{})
+
+func (msg *DatagramSocketGetInfoResponse) Marshaler() _bindings.Marshaler {
+ return _mDatagramSocketGetInfoResponse
+}
+
+type StreamSocketListenResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mStreamSocketListenResponse = _bindings.CreateLazyMarshaler(StreamSocketListenResponse{})
+
+func (msg *StreamSocketListenResponse) Marshaler() _bindings.Marshaler {
+ return _mStreamSocketListenResponse
+}
+
+type StreamSocketAcceptResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"32" fidl_alignment_v1:"8" fidl_size_v2:"24" fidl_alignment_v2:"8"`
+ Addr *fuchsianet.SocketAddress `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ S StreamSocketWithCtxInterface `fidl_offset_v1:"24" fidl_offset_v2:"16" fidl_handle_subtype:"4"`
+}
+
+var _mStreamSocketAcceptResponse = _bindings.CreateLazyMarshaler(StreamSocketAcceptResponse{})
+
+func (msg *StreamSocketAcceptResponse) Marshaler() _bindings.Marshaler {
+ return _mStreamSocketAcceptResponse
+}
+
+type StreamSocketGetInfoResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"4" fidl_size_v2:"8" fidl_alignment_v2:"4"`
+ Domain Domain `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Proto StreamSocketProtocol `fidl_offset_v1:"4" fidl_offset_v2:"4"`
+}
+
+var _mStreamSocketGetInfoResponse = _bindings.CreateLazyMarshaler(StreamSocketGetInfoResponse{})
+
+func (msg *StreamSocketGetInfoResponse) Marshaler() _bindings.Marshaler {
+ return _mStreamSocketGetInfoResponse
+}
+
+type StreamSocketSetTcpNoDelayResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mStreamSocketSetTcpNoDelayResponse = _bindings.CreateLazyMarshaler(StreamSocketSetTcpNoDelayResponse{})
+
+func (msg *StreamSocketSetTcpNoDelayResponse) Marshaler() _bindings.Marshaler {
+ return _mStreamSocketSetTcpNoDelayResponse
+}
+
+type StreamSocketGetTcpNoDelayResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mStreamSocketGetTcpNoDelayResponse = _bindings.CreateLazyMarshaler(StreamSocketGetTcpNoDelayResponse{})
+
+func (msg *StreamSocketGetTcpNoDelayResponse) Marshaler() _bindings.Marshaler {
+ return _mStreamSocketGetTcpNoDelayResponse
+}
+
+type StreamSocketSetTcpMaxSegmentResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mStreamSocketSetTcpMaxSegmentResponse = _bindings.CreateLazyMarshaler(StreamSocketSetTcpMaxSegmentResponse{})
+
+func (msg *StreamSocketSetTcpMaxSegmentResponse) Marshaler() _bindings.Marshaler {
+ return _mStreamSocketSetTcpMaxSegmentResponse
+}
+
+type StreamSocketGetTcpMaxSegmentResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"4" fidl_alignment_v1:"4" fidl_size_v2:"4" fidl_alignment_v2:"4"`
+ ValueBytes uint32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mStreamSocketGetTcpMaxSegmentResponse = _bindings.CreateLazyMarshaler(StreamSocketGetTcpMaxSegmentResponse{})
+
+func (msg *StreamSocketGetTcpMaxSegmentResponse) Marshaler() _bindings.Marshaler {
+ return _mStreamSocketGetTcpMaxSegmentResponse
+}
+
+type StreamSocketSetTcpCorkResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mStreamSocketSetTcpCorkResponse = _bindings.CreateLazyMarshaler(StreamSocketSetTcpCorkResponse{})
+
+func (msg *StreamSocketSetTcpCorkResponse) Marshaler() _bindings.Marshaler {
+ return _mStreamSocketSetTcpCorkResponse
+}
+
+type StreamSocketGetTcpCorkResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mStreamSocketGetTcpCorkResponse = _bindings.CreateLazyMarshaler(StreamSocketGetTcpCorkResponse{})
+
+func (msg *StreamSocketGetTcpCorkResponse) Marshaler() _bindings.Marshaler {
+ return _mStreamSocketGetTcpCorkResponse
+}
+
+type StreamSocketSetTcpKeepAliveIdleResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mStreamSocketSetTcpKeepAliveIdleResponse = _bindings.CreateLazyMarshaler(StreamSocketSetTcpKeepAliveIdleResponse{})
+
+func (msg *StreamSocketSetTcpKeepAliveIdleResponse) Marshaler() _bindings.Marshaler {
+ return _mStreamSocketSetTcpKeepAliveIdleResponse
+}
+
+type StreamSocketGetTcpKeepAliveIdleResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"4" fidl_alignment_v1:"4" fidl_size_v2:"4" fidl_alignment_v2:"4"`
+ ValueSecs uint32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mStreamSocketGetTcpKeepAliveIdleResponse = _bindings.CreateLazyMarshaler(StreamSocketGetTcpKeepAliveIdleResponse{})
+
+func (msg *StreamSocketGetTcpKeepAliveIdleResponse) Marshaler() _bindings.Marshaler {
+ return _mStreamSocketGetTcpKeepAliveIdleResponse
+}
+
+type StreamSocketSetTcpKeepAliveIntervalResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mStreamSocketSetTcpKeepAliveIntervalResponse = _bindings.CreateLazyMarshaler(StreamSocketSetTcpKeepAliveIntervalResponse{})
+
+func (msg *StreamSocketSetTcpKeepAliveIntervalResponse) Marshaler() _bindings.Marshaler {
+ return _mStreamSocketSetTcpKeepAliveIntervalResponse
+}
+
+type StreamSocketGetTcpKeepAliveIntervalResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"4" fidl_alignment_v1:"4" fidl_size_v2:"4" fidl_alignment_v2:"4"`
+ ValueSecs uint32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mStreamSocketGetTcpKeepAliveIntervalResponse = _bindings.CreateLazyMarshaler(StreamSocketGetTcpKeepAliveIntervalResponse{})
+
+func (msg *StreamSocketGetTcpKeepAliveIntervalResponse) Marshaler() _bindings.Marshaler {
+ return _mStreamSocketGetTcpKeepAliveIntervalResponse
+}
+
+type StreamSocketSetTcpKeepAliveCountResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mStreamSocketSetTcpKeepAliveCountResponse = _bindings.CreateLazyMarshaler(StreamSocketSetTcpKeepAliveCountResponse{})
+
+func (msg *StreamSocketSetTcpKeepAliveCountResponse) Marshaler() _bindings.Marshaler {
+ return _mStreamSocketSetTcpKeepAliveCountResponse
+}
+
+type StreamSocketGetTcpKeepAliveCountResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"4" fidl_alignment_v1:"4" fidl_size_v2:"4" fidl_alignment_v2:"4"`
+ Value uint32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mStreamSocketGetTcpKeepAliveCountResponse = _bindings.CreateLazyMarshaler(StreamSocketGetTcpKeepAliveCountResponse{})
+
+func (msg *StreamSocketGetTcpKeepAliveCountResponse) Marshaler() _bindings.Marshaler {
+ return _mStreamSocketGetTcpKeepAliveCountResponse
+}
+
+type StreamSocketSetTcpSynCountResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mStreamSocketSetTcpSynCountResponse = _bindings.CreateLazyMarshaler(StreamSocketSetTcpSynCountResponse{})
+
+func (msg *StreamSocketSetTcpSynCountResponse) Marshaler() _bindings.Marshaler {
+ return _mStreamSocketSetTcpSynCountResponse
+}
+
+type StreamSocketGetTcpSynCountResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"4" fidl_alignment_v1:"4" fidl_size_v2:"4" fidl_alignment_v2:"4"`
+ Value uint32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mStreamSocketGetTcpSynCountResponse = _bindings.CreateLazyMarshaler(StreamSocketGetTcpSynCountResponse{})
+
+func (msg *StreamSocketGetTcpSynCountResponse) Marshaler() _bindings.Marshaler {
+ return _mStreamSocketGetTcpSynCountResponse
+}
+
+type StreamSocketSetTcpLingerResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mStreamSocketSetTcpLingerResponse = _bindings.CreateLazyMarshaler(StreamSocketSetTcpLingerResponse{})
+
+func (msg *StreamSocketSetTcpLingerResponse) Marshaler() _bindings.Marshaler {
+ return _mStreamSocketSetTcpLingerResponse
+}
+
+type StreamSocketGetTcpLingerResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ ValueSecs OptionalUint32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mStreamSocketGetTcpLingerResponse = _bindings.CreateLazyMarshaler(StreamSocketGetTcpLingerResponse{})
+
+func (msg *StreamSocketGetTcpLingerResponse) Marshaler() _bindings.Marshaler {
+ return _mStreamSocketGetTcpLingerResponse
+}
+
+type StreamSocketSetTcpDeferAcceptResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mStreamSocketSetTcpDeferAcceptResponse = _bindings.CreateLazyMarshaler(StreamSocketSetTcpDeferAcceptResponse{})
+
+func (msg *StreamSocketSetTcpDeferAcceptResponse) Marshaler() _bindings.Marshaler {
+ return _mStreamSocketSetTcpDeferAcceptResponse
+}
+
+type StreamSocketGetTcpDeferAcceptResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"4" fidl_alignment_v1:"4" fidl_size_v2:"4" fidl_alignment_v2:"4"`
+ ValueSecs uint32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mStreamSocketGetTcpDeferAcceptResponse = _bindings.CreateLazyMarshaler(StreamSocketGetTcpDeferAcceptResponse{})
+
+func (msg *StreamSocketGetTcpDeferAcceptResponse) Marshaler() _bindings.Marshaler {
+ return _mStreamSocketGetTcpDeferAcceptResponse
+}
+
+type StreamSocketSetTcpWindowClampResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mStreamSocketSetTcpWindowClampResponse = _bindings.CreateLazyMarshaler(StreamSocketSetTcpWindowClampResponse{})
+
+func (msg *StreamSocketSetTcpWindowClampResponse) Marshaler() _bindings.Marshaler {
+ return _mStreamSocketSetTcpWindowClampResponse
+}
+
+type StreamSocketGetTcpWindowClampResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"4" fidl_alignment_v1:"4" fidl_size_v2:"4" fidl_alignment_v2:"4"`
+ Value uint32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mStreamSocketGetTcpWindowClampResponse = _bindings.CreateLazyMarshaler(StreamSocketGetTcpWindowClampResponse{})
+
+func (msg *StreamSocketGetTcpWindowClampResponse) Marshaler() _bindings.Marshaler {
+ return _mStreamSocketGetTcpWindowClampResponse
+}
+
+type StreamSocketGetTcpInfoResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Info TcpInfo `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mStreamSocketGetTcpInfoResponse = _bindings.CreateLazyMarshaler(StreamSocketGetTcpInfoResponse{})
+
+func (msg *StreamSocketGetTcpInfoResponse) Marshaler() _bindings.Marshaler {
+ return _mStreamSocketGetTcpInfoResponse
+}
+
+type StreamSocketSetTcpQuickAckResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mStreamSocketSetTcpQuickAckResponse = _bindings.CreateLazyMarshaler(StreamSocketSetTcpQuickAckResponse{})
+
+func (msg *StreamSocketSetTcpQuickAckResponse) Marshaler() _bindings.Marshaler {
+ return _mStreamSocketSetTcpQuickAckResponse
+}
+
+type StreamSocketGetTcpQuickAckResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mStreamSocketGetTcpQuickAckResponse = _bindings.CreateLazyMarshaler(StreamSocketGetTcpQuickAckResponse{})
+
+func (msg *StreamSocketGetTcpQuickAckResponse) Marshaler() _bindings.Marshaler {
+ return _mStreamSocketGetTcpQuickAckResponse
+}
+
+type StreamSocketSetTcpCongestionResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mStreamSocketSetTcpCongestionResponse = _bindings.CreateLazyMarshaler(StreamSocketSetTcpCongestionResponse{})
+
+func (msg *StreamSocketSetTcpCongestionResponse) Marshaler() _bindings.Marshaler {
+ return _mStreamSocketSetTcpCongestionResponse
+}
+
+type StreamSocketGetTcpCongestionResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"4" fidl_alignment_v1:"4" fidl_size_v2:"4" fidl_alignment_v2:"4"`
+ Value TcpCongestionControl `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mStreamSocketGetTcpCongestionResponse = _bindings.CreateLazyMarshaler(StreamSocketGetTcpCongestionResponse{})
+
+func (msg *StreamSocketGetTcpCongestionResponse) Marshaler() _bindings.Marshaler {
+ return _mStreamSocketGetTcpCongestionResponse
+}
+
+type StreamSocketSetTcpUserTimeoutResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mStreamSocketSetTcpUserTimeoutResponse = _bindings.CreateLazyMarshaler(StreamSocketSetTcpUserTimeoutResponse{})
+
+func (msg *StreamSocketSetTcpUserTimeoutResponse) Marshaler() _bindings.Marshaler {
+ return _mStreamSocketSetTcpUserTimeoutResponse
+}
+
+type StreamSocketGetTcpUserTimeoutResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"4" fidl_alignment_v1:"4" fidl_size_v2:"4" fidl_alignment_v2:"4"`
+ ValueMillis uint32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mStreamSocketGetTcpUserTimeoutResponse = _bindings.CreateLazyMarshaler(StreamSocketGetTcpUserTimeoutResponse{})
+
+func (msg *StreamSocketGetTcpUserTimeoutResponse) Marshaler() _bindings.Marshaler {
+ return _mStreamSocketGetTcpUserTimeoutResponse
+}
+
+type ProviderStreamSocketResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"4" fidl_alignment_v1:"4" fidl_size_v2:"4" fidl_alignment_v2:"4"`
+ S StreamSocketWithCtxInterface `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_handle_subtype:"4"`
+}
+
+var _mProviderStreamSocketResponse = _bindings.CreateLazyMarshaler(ProviderStreamSocketResponse{})
+
+func (msg *ProviderStreamSocketResponse) Marshaler() _bindings.Marshaler {
+ return _mProviderStreamSocketResponse
+}
+
+type ProviderDatagramSocketResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"4" fidl_alignment_v1:"4" fidl_size_v2:"4" fidl_alignment_v2:"4"`
+ S DatagramSocketWithCtxInterface `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_handle_subtype:"4"`
+}
+
+var _mProviderDatagramSocketResponse = _bindings.CreateLazyMarshaler(ProviderDatagramSocketResponse{})
+
+func (msg *ProviderDatagramSocketResponse) Marshaler() _bindings.Marshaler {
+ return _mProviderDatagramSocketResponse
+}
+
+type ProviderInterfaceIndexToNameResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Name string `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"15"`
+}
+
+var _mProviderInterfaceIndexToNameResponse = _bindings.CreateLazyMarshaler(ProviderInterfaceIndexToNameResponse{})
+
+func (msg *ProviderInterfaceIndexToNameResponse) Marshaler() _bindings.Marshaler {
+ return _mProviderInterfaceIndexToNameResponse
+}
+
+type ProviderInterfaceNameToIndexResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Index uint64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mProviderInterfaceNameToIndexResponse = _bindings.CreateLazyMarshaler(ProviderInterfaceNameToIndexResponse{})
+
+func (msg *ProviderInterfaceNameToIndexResponse) Marshaler() _bindings.Marshaler {
+ return _mProviderInterfaceNameToIndexResponse
+}
+
+type ProviderInterfaceNameToFlagsResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"2" fidl_alignment_v1:"2" fidl_size_v2:"2" fidl_alignment_v2:"2"`
+ Flags InterfaceFlags `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mProviderInterfaceNameToFlagsResponse = _bindings.CreateLazyMarshaler(ProviderInterfaceNameToFlagsResponse{})
+
+func (msg *ProviderInterfaceNameToFlagsResponse) Marshaler() _bindings.Marshaler {
+ return _mProviderInterfaceNameToFlagsResponse
+}
+
+// IPv4 multicast membership options.
+type IpMulticastMembership struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ // Interface index for membership.
+ Iface uint64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ // Local interface address requesting or relinquishing ownership.
+ LocalAddr fuchsianet.Ipv4Address `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+ // Address of the multicast group the membership refers to.
+ McastAddr fuchsianet.Ipv4Address `fidl_offset_v1:"12" fidl_offset_v2:"12"`
+}
+
+var _mIpMulticastMembership = _bindings.CreateLazyMarshaler(IpMulticastMembership{})
+
+func (msg *IpMulticastMembership) Marshaler() _bindings.Marshaler {
+ return _mIpMulticastMembership
+}
+
+// IPv6 multicast membership options.
+type Ipv6MulticastMembership struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"24" fidl_alignment_v2:"8"`
+ // Interface index for membership.
+ Iface uint64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ // Address of the multicast group the membership refers to.
+ McastAddr fuchsianet.Ipv6Address `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+}
+
+var _mIpv6MulticastMembership = _bindings.CreateLazyMarshaler(Ipv6MulticastMembership{})
+
+func (msg *Ipv6MulticastMembership) Marshaler() _bindings.Marshaler {
+ return _mIpv6MulticastMembership
+}
+
+type Empty struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1" fidl_size_v2:"1" fidl_alignment_v2:"1"`
+}
+
+var _mEmpty = _bindings.CreateLazyMarshaler(Empty{})
+
+func (msg *Empty) Marshaler() _bindings.Marshaler {
+ return _mEmpty
+}
+
+type baseSocketWithCtxCloneRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Flags uint32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Object fuchsiaio.NodeWithCtxInterfaceRequest `fidl_offset_v1:"4" fidl_offset_v2:"4" fidl_handle_subtype:"4" fidl_bounds:"0"`
+}
+
+var _mbaseSocketWithCtxCloneRequest = _bindings.CreateLazyMarshaler(baseSocketWithCtxCloneRequest{})
+
+func (msg *baseSocketWithCtxCloneRequest) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxCloneRequest
+}
+
+type baseSocketWithCtxCloseResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxCloseResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxCloseResponse{})
+
+func (msg *baseSocketWithCtxCloseResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxCloseResponse
+}
+
+type baseSocketWithCtxDescribeResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Info fuchsiaio.NodeInfo `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxDescribeResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxDescribeResponse{})
+
+func (msg *baseSocketWithCtxDescribeResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxDescribeResponse
+}
+
+type baseSocketWithCtxOnOpenResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"32" fidl_alignment_v1:"8" fidl_size_v2:"24" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Info *fuchsiaio.NodeInfo `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+}
+
+var _mbaseSocketWithCtxOnOpenResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxOnOpenResponse{})
+
+func (msg *baseSocketWithCtxOnOpenResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxOnOpenResponse
+}
+
+type baseSocketWithCtxSyncResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxSyncResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxSyncResponse{})
+
+func (msg *baseSocketWithCtxSyncResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSyncResponse
+}
+
+type baseSocketWithCtxGetAttrResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"64" fidl_alignment_v1:"8" fidl_size_v2:"64" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Attributes fuchsiaio.NodeAttributes `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+}
+
+var _mbaseSocketWithCtxGetAttrResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxGetAttrResponse{})
+
+func (msg *baseSocketWithCtxGetAttrResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxGetAttrResponse
+}
+
+type baseSocketWithCtxSetAttrRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"64" fidl_alignment_v1:"8" fidl_size_v2:"64" fidl_alignment_v2:"8"`
+ Flags uint32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Attributes fuchsiaio.NodeAttributes `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+}
+
+var _mbaseSocketWithCtxSetAttrRequest = _bindings.CreateLazyMarshaler(baseSocketWithCtxSetAttrRequest{})
+
+func (msg *baseSocketWithCtxSetAttrRequest) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSetAttrRequest
+}
+
+type baseSocketWithCtxSetAttrResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxSetAttrResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxSetAttrResponse{})
+
+func (msg *baseSocketWithCtxSetAttrResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSetAttrResponse
+}
+
+type baseSocketWithCtxNodeGetFlagsResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Flags uint32 `fidl_offset_v1:"4" fidl_offset_v2:"4"`
+}
+
+var _mbaseSocketWithCtxNodeGetFlagsResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxNodeGetFlagsResponse{})
+
+func (msg *baseSocketWithCtxNodeGetFlagsResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxNodeGetFlagsResponse
+}
+
+type baseSocketWithCtxNodeSetFlagsRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Flags uint32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxNodeSetFlagsRequest = _bindings.CreateLazyMarshaler(baseSocketWithCtxNodeSetFlagsRequest{})
+
+func (msg *baseSocketWithCtxNodeSetFlagsRequest) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxNodeSetFlagsRequest
+}
+
+type baseSocketWithCtxNodeSetFlagsResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxNodeSetFlagsResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxNodeSetFlagsResponse{})
+
+func (msg *baseSocketWithCtxNodeSetFlagsResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxNodeSetFlagsResponse
+}
+
+type baseSocketWithCtxBindRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Addr fuchsianet.SocketAddress `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxBindRequest = _bindings.CreateLazyMarshaler(baseSocketWithCtxBindRequest{})
+
+func (msg *baseSocketWithCtxBindRequest) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxBindRequest
+}
+
+type baseSocketWithCtxBindResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketBindResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxBindResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxBindResponse{})
+
+func (msg *baseSocketWithCtxBindResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxBindResponse
+}
+
+type baseSocketWithCtxConnectRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Addr fuchsianet.SocketAddress `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxConnectRequest = _bindings.CreateLazyMarshaler(baseSocketWithCtxConnectRequest{})
+
+func (msg *baseSocketWithCtxConnectRequest) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxConnectRequest
+}
+
+type baseSocketWithCtxConnectResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketConnectResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxConnectResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxConnectResponse{})
+
+func (msg *baseSocketWithCtxConnectResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxConnectResponse
+}
+
+type baseSocketWithCtxDisconnectResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketDisconnectResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxDisconnectResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxDisconnectResponse{})
+
+func (msg *baseSocketWithCtxDisconnectResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxDisconnectResponse
+}
+
+type baseSocketWithCtxGetSockNameResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetSockNameResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxGetSockNameResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxGetSockNameResponse{})
+
+func (msg *baseSocketWithCtxGetSockNameResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxGetSockNameResponse
+}
+
+type baseSocketWithCtxGetPeerNameResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetPeerNameResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxGetPeerNameResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxGetPeerNameResponse{})
+
+func (msg *baseSocketWithCtxGetPeerNameResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxGetPeerNameResponse
+}
+
+type baseSocketWithCtxShutdown2Request struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Mode ShutdownMode `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxShutdown2Request = _bindings.CreateLazyMarshaler(baseSocketWithCtxShutdown2Request{})
+
+func (msg *baseSocketWithCtxShutdown2Request) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxShutdown2Request
+}
+
+type baseSocketWithCtxShutdown2Response struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketShutdown2Result `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxShutdown2Response = _bindings.CreateLazyMarshaler(baseSocketWithCtxShutdown2Response{})
+
+func (msg *baseSocketWithCtxShutdown2Response) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxShutdown2Response
+}
+
+type baseSocketWithCtxSetReuseAddressRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxSetReuseAddressRequest = _bindings.CreateLazyMarshaler(baseSocketWithCtxSetReuseAddressRequest{})
+
+func (msg *baseSocketWithCtxSetReuseAddressRequest) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSetReuseAddressRequest
+}
+
+type baseSocketWithCtxSetReuseAddressResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetReuseAddressResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxSetReuseAddressResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxSetReuseAddressResponse{})
+
+func (msg *baseSocketWithCtxSetReuseAddressResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSetReuseAddressResponse
+}
+
+type baseSocketWithCtxGetReuseAddressResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetReuseAddressResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxGetReuseAddressResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxGetReuseAddressResponse{})
+
+func (msg *baseSocketWithCtxGetReuseAddressResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxGetReuseAddressResponse
+}
+
+type baseSocketWithCtxGetErrorResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetErrorResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxGetErrorResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxGetErrorResponse{})
+
+func (msg *baseSocketWithCtxGetErrorResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxGetErrorResponse
+}
+
+type baseSocketWithCtxSetBroadcastRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxSetBroadcastRequest = _bindings.CreateLazyMarshaler(baseSocketWithCtxSetBroadcastRequest{})
+
+func (msg *baseSocketWithCtxSetBroadcastRequest) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSetBroadcastRequest
+}
+
+type baseSocketWithCtxSetBroadcastResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetBroadcastResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxSetBroadcastResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxSetBroadcastResponse{})
+
+func (msg *baseSocketWithCtxSetBroadcastResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSetBroadcastResponse
+}
+
+type baseSocketWithCtxGetBroadcastResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetBroadcastResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxGetBroadcastResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxGetBroadcastResponse{})
+
+func (msg *baseSocketWithCtxGetBroadcastResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxGetBroadcastResponse
+}
+
+type baseSocketWithCtxSetSendBufferRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ ValueBytes uint64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxSetSendBufferRequest = _bindings.CreateLazyMarshaler(baseSocketWithCtxSetSendBufferRequest{})
+
+func (msg *baseSocketWithCtxSetSendBufferRequest) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSetSendBufferRequest
+}
+
+type baseSocketWithCtxSetSendBufferResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetSendBufferResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxSetSendBufferResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxSetSendBufferResponse{})
+
+func (msg *baseSocketWithCtxSetSendBufferResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSetSendBufferResponse
+}
+
+type baseSocketWithCtxGetSendBufferResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetSendBufferResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxGetSendBufferResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxGetSendBufferResponse{})
+
+func (msg *baseSocketWithCtxGetSendBufferResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxGetSendBufferResponse
+}
+
+type baseSocketWithCtxSetReceiveBufferRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ ValueBytes uint64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxSetReceiveBufferRequest = _bindings.CreateLazyMarshaler(baseSocketWithCtxSetReceiveBufferRequest{})
+
+func (msg *baseSocketWithCtxSetReceiveBufferRequest) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSetReceiveBufferRequest
+}
+
+type baseSocketWithCtxSetReceiveBufferResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetReceiveBufferResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxSetReceiveBufferResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxSetReceiveBufferResponse{})
+
+func (msg *baseSocketWithCtxSetReceiveBufferResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSetReceiveBufferResponse
+}
+
+type baseSocketWithCtxGetReceiveBufferResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetReceiveBufferResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxGetReceiveBufferResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxGetReceiveBufferResponse{})
+
+func (msg *baseSocketWithCtxGetReceiveBufferResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxGetReceiveBufferResponse
+}
+
+type baseSocketWithCtxSetKeepAliveRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxSetKeepAliveRequest = _bindings.CreateLazyMarshaler(baseSocketWithCtxSetKeepAliveRequest{})
+
+func (msg *baseSocketWithCtxSetKeepAliveRequest) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSetKeepAliveRequest
+}
+
+type baseSocketWithCtxSetKeepAliveResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetKeepAliveResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxSetKeepAliveResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxSetKeepAliveResponse{})
+
+func (msg *baseSocketWithCtxSetKeepAliveResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSetKeepAliveResponse
+}
+
+type baseSocketWithCtxGetKeepAliveResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetKeepAliveResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxGetKeepAliveResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxGetKeepAliveResponse{})
+
+func (msg *baseSocketWithCtxGetKeepAliveResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxGetKeepAliveResponse
+}
+
+type baseSocketWithCtxSetOutOfBandInlineRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxSetOutOfBandInlineRequest = _bindings.CreateLazyMarshaler(baseSocketWithCtxSetOutOfBandInlineRequest{})
+
+func (msg *baseSocketWithCtxSetOutOfBandInlineRequest) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSetOutOfBandInlineRequest
+}
+
+type baseSocketWithCtxSetOutOfBandInlineResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetOutOfBandInlineResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxSetOutOfBandInlineResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxSetOutOfBandInlineResponse{})
+
+func (msg *baseSocketWithCtxSetOutOfBandInlineResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSetOutOfBandInlineResponse
+}
+
+type baseSocketWithCtxGetOutOfBandInlineResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetOutOfBandInlineResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxGetOutOfBandInlineResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxGetOutOfBandInlineResponse{})
+
+func (msg *baseSocketWithCtxGetOutOfBandInlineResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxGetOutOfBandInlineResponse
+}
+
+type baseSocketWithCtxSetNoCheckRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxSetNoCheckRequest = _bindings.CreateLazyMarshaler(baseSocketWithCtxSetNoCheckRequest{})
+
+func (msg *baseSocketWithCtxSetNoCheckRequest) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSetNoCheckRequest
+}
+
+type baseSocketWithCtxSetNoCheckResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetNoCheckResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxSetNoCheckResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxSetNoCheckResponse{})
+
+func (msg *baseSocketWithCtxSetNoCheckResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSetNoCheckResponse
+}
+
+type baseSocketWithCtxGetNoCheckResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetNoCheckResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxGetNoCheckResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxGetNoCheckResponse{})
+
+func (msg *baseSocketWithCtxGetNoCheckResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxGetNoCheckResponse
+}
+
+type baseSocketWithCtxSetLingerRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Linger bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ LengthSecs uint32 `fidl_offset_v1:"4" fidl_offset_v2:"4"`
+}
+
+var _mbaseSocketWithCtxSetLingerRequest = _bindings.CreateLazyMarshaler(baseSocketWithCtxSetLingerRequest{})
+
+func (msg *baseSocketWithCtxSetLingerRequest) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSetLingerRequest
+}
+
+type baseSocketWithCtxSetLingerResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetLingerResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxSetLingerResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxSetLingerResponse{})
+
+func (msg *baseSocketWithCtxSetLingerResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSetLingerResponse
+}
+
+type baseSocketWithCtxGetLingerResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetLingerResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxGetLingerResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxGetLingerResponse{})
+
+func (msg *baseSocketWithCtxGetLingerResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxGetLingerResponse
+}
+
+type baseSocketWithCtxSetReusePortRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxSetReusePortRequest = _bindings.CreateLazyMarshaler(baseSocketWithCtxSetReusePortRequest{})
+
+func (msg *baseSocketWithCtxSetReusePortRequest) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSetReusePortRequest
+}
+
+type baseSocketWithCtxSetReusePortResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetReusePortResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxSetReusePortResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxSetReusePortResponse{})
+
+func (msg *baseSocketWithCtxSetReusePortResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSetReusePortResponse
+}
+
+type baseSocketWithCtxGetReusePortResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetReusePortResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxGetReusePortResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxGetReusePortResponse{})
+
+func (msg *baseSocketWithCtxGetReusePortResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxGetReusePortResponse
+}
+
+type baseSocketWithCtxGetAcceptConnResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetAcceptConnResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxGetAcceptConnResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxGetAcceptConnResponse{})
+
+func (msg *baseSocketWithCtxGetAcceptConnResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxGetAcceptConnResponse
+}
+
+type baseSocketWithCtxSetBindToDeviceRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Value string `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"15"`
+}
+
+var _mbaseSocketWithCtxSetBindToDeviceRequest = _bindings.CreateLazyMarshaler(baseSocketWithCtxSetBindToDeviceRequest{})
+
+func (msg *baseSocketWithCtxSetBindToDeviceRequest) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSetBindToDeviceRequest
+}
+
+type baseSocketWithCtxSetBindToDeviceResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetBindToDeviceResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxSetBindToDeviceResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxSetBindToDeviceResponse{})
+
+func (msg *baseSocketWithCtxSetBindToDeviceResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSetBindToDeviceResponse
+}
+
+type baseSocketWithCtxGetBindToDeviceResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetBindToDeviceResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxGetBindToDeviceResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxGetBindToDeviceResponse{})
+
+func (msg *baseSocketWithCtxGetBindToDeviceResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxGetBindToDeviceResponse
+}
+
+type baseSocketWithCtxSetTimestampRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxSetTimestampRequest = _bindings.CreateLazyMarshaler(baseSocketWithCtxSetTimestampRequest{})
+
+func (msg *baseSocketWithCtxSetTimestampRequest) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSetTimestampRequest
+}
+
+type baseSocketWithCtxSetTimestampResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetTimestampResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxSetTimestampResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxSetTimestampResponse{})
+
+func (msg *baseSocketWithCtxSetTimestampResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSetTimestampResponse
+}
+
+type baseSocketWithCtxGetTimestampResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetTimestampResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxGetTimestampResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxGetTimestampResponse{})
+
+func (msg *baseSocketWithCtxGetTimestampResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxGetTimestampResponse
+}
+
+type baseSocketWithCtxSetIpTypeOfServiceRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value uint8 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxSetIpTypeOfServiceRequest = _bindings.CreateLazyMarshaler(baseSocketWithCtxSetIpTypeOfServiceRequest{})
+
+func (msg *baseSocketWithCtxSetIpTypeOfServiceRequest) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSetIpTypeOfServiceRequest
+}
+
+type baseSocketWithCtxSetIpTypeOfServiceResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetIpTypeOfServiceResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxSetIpTypeOfServiceResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxSetIpTypeOfServiceResponse{})
+
+func (msg *baseSocketWithCtxSetIpTypeOfServiceResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSetIpTypeOfServiceResponse
+}
+
+type baseSocketWithCtxGetIpTypeOfServiceResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetIpTypeOfServiceResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxGetIpTypeOfServiceResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxGetIpTypeOfServiceResponse{})
+
+func (msg *baseSocketWithCtxGetIpTypeOfServiceResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxGetIpTypeOfServiceResponse
+}
+
+type baseSocketWithCtxSetIpTtlRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Value OptionalUint8 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxSetIpTtlRequest = _bindings.CreateLazyMarshaler(baseSocketWithCtxSetIpTtlRequest{})
+
+func (msg *baseSocketWithCtxSetIpTtlRequest) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSetIpTtlRequest
+}
+
+type baseSocketWithCtxSetIpTtlResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetIpTtlResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxSetIpTtlResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxSetIpTtlResponse{})
+
+func (msg *baseSocketWithCtxSetIpTtlResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSetIpTtlResponse
+}
+
+type baseSocketWithCtxGetIpTtlResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetIpTtlResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxGetIpTtlResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxGetIpTtlResponse{})
+
+func (msg *baseSocketWithCtxGetIpTtlResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxGetIpTtlResponse
+}
+
+type baseSocketWithCtxSetIpPacketInfoRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxSetIpPacketInfoRequest = _bindings.CreateLazyMarshaler(baseSocketWithCtxSetIpPacketInfoRequest{})
+
+func (msg *baseSocketWithCtxSetIpPacketInfoRequest) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSetIpPacketInfoRequest
+}
+
+type baseSocketWithCtxSetIpPacketInfoResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetIpPacketInfoResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxSetIpPacketInfoResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxSetIpPacketInfoResponse{})
+
+func (msg *baseSocketWithCtxSetIpPacketInfoResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSetIpPacketInfoResponse
+}
+
+type baseSocketWithCtxGetIpPacketInfoResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetIpPacketInfoResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxGetIpPacketInfoResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxGetIpPacketInfoResponse{})
+
+func (msg *baseSocketWithCtxGetIpPacketInfoResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxGetIpPacketInfoResponse
+}
+
+type baseSocketWithCtxSetIpReceiveTypeOfServiceRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxSetIpReceiveTypeOfServiceRequest = _bindings.CreateLazyMarshaler(baseSocketWithCtxSetIpReceiveTypeOfServiceRequest{})
+
+func (msg *baseSocketWithCtxSetIpReceiveTypeOfServiceRequest) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSetIpReceiveTypeOfServiceRequest
+}
+
+type baseSocketWithCtxSetIpReceiveTypeOfServiceResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetIpReceiveTypeOfServiceResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxSetIpReceiveTypeOfServiceResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxSetIpReceiveTypeOfServiceResponse{})
+
+func (msg *baseSocketWithCtxSetIpReceiveTypeOfServiceResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSetIpReceiveTypeOfServiceResponse
+}
+
+type baseSocketWithCtxGetIpReceiveTypeOfServiceResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetIpReceiveTypeOfServiceResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxGetIpReceiveTypeOfServiceResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxGetIpReceiveTypeOfServiceResponse{})
+
+func (msg *baseSocketWithCtxGetIpReceiveTypeOfServiceResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxGetIpReceiveTypeOfServiceResponse
+}
+
+type baseSocketWithCtxSetIpMulticastInterfaceRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Iface uint64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Address fuchsianet.Ipv4Address `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+}
+
+var _mbaseSocketWithCtxSetIpMulticastInterfaceRequest = _bindings.CreateLazyMarshaler(baseSocketWithCtxSetIpMulticastInterfaceRequest{})
+
+func (msg *baseSocketWithCtxSetIpMulticastInterfaceRequest) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSetIpMulticastInterfaceRequest
+}
+
+type baseSocketWithCtxSetIpMulticastInterfaceResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetIpMulticastInterfaceResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxSetIpMulticastInterfaceResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxSetIpMulticastInterfaceResponse{})
+
+func (msg *baseSocketWithCtxSetIpMulticastInterfaceResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSetIpMulticastInterfaceResponse
+}
+
+type baseSocketWithCtxGetIpMulticastInterfaceResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetIpMulticastInterfaceResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxGetIpMulticastInterfaceResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxGetIpMulticastInterfaceResponse{})
+
+func (msg *baseSocketWithCtxGetIpMulticastInterfaceResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxGetIpMulticastInterfaceResponse
+}
+
+type baseSocketWithCtxSetIpMulticastTtlRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Value OptionalUint8 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxSetIpMulticastTtlRequest = _bindings.CreateLazyMarshaler(baseSocketWithCtxSetIpMulticastTtlRequest{})
+
+func (msg *baseSocketWithCtxSetIpMulticastTtlRequest) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSetIpMulticastTtlRequest
+}
+
+type baseSocketWithCtxSetIpMulticastTtlResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetIpMulticastTtlResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxSetIpMulticastTtlResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxSetIpMulticastTtlResponse{})
+
+func (msg *baseSocketWithCtxSetIpMulticastTtlResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSetIpMulticastTtlResponse
+}
+
+type baseSocketWithCtxGetIpMulticastTtlResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetIpMulticastTtlResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxGetIpMulticastTtlResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxGetIpMulticastTtlResponse{})
+
+func (msg *baseSocketWithCtxGetIpMulticastTtlResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxGetIpMulticastTtlResponse
+}
+
+type baseSocketWithCtxSetIpMulticastLoopbackRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxSetIpMulticastLoopbackRequest = _bindings.CreateLazyMarshaler(baseSocketWithCtxSetIpMulticastLoopbackRequest{})
+
+func (msg *baseSocketWithCtxSetIpMulticastLoopbackRequest) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSetIpMulticastLoopbackRequest
+}
+
+type baseSocketWithCtxSetIpMulticastLoopbackResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetIpMulticastLoopbackResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxSetIpMulticastLoopbackResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxSetIpMulticastLoopbackResponse{})
+
+func (msg *baseSocketWithCtxSetIpMulticastLoopbackResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSetIpMulticastLoopbackResponse
+}
+
+type baseSocketWithCtxGetIpMulticastLoopbackResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetIpMulticastLoopbackResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxGetIpMulticastLoopbackResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxGetIpMulticastLoopbackResponse{})
+
+func (msg *baseSocketWithCtxGetIpMulticastLoopbackResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxGetIpMulticastLoopbackResponse
+}
+
+type baseSocketWithCtxAddIpMembershipRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Membership IpMulticastMembership `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxAddIpMembershipRequest = _bindings.CreateLazyMarshaler(baseSocketWithCtxAddIpMembershipRequest{})
+
+func (msg *baseSocketWithCtxAddIpMembershipRequest) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxAddIpMembershipRequest
+}
+
+type baseSocketWithCtxAddIpMembershipResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketAddIpMembershipResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxAddIpMembershipResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxAddIpMembershipResponse{})
+
+func (msg *baseSocketWithCtxAddIpMembershipResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxAddIpMembershipResponse
+}
+
+type baseSocketWithCtxDropIpMembershipRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Membership IpMulticastMembership `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxDropIpMembershipRequest = _bindings.CreateLazyMarshaler(baseSocketWithCtxDropIpMembershipRequest{})
+
+func (msg *baseSocketWithCtxDropIpMembershipRequest) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxDropIpMembershipRequest
+}
+
+type baseSocketWithCtxDropIpMembershipResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketDropIpMembershipResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxDropIpMembershipResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxDropIpMembershipResponse{})
+
+func (msg *baseSocketWithCtxDropIpMembershipResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxDropIpMembershipResponse
+}
+
+type baseSocketWithCtxAddIpv6MembershipRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"24" fidl_alignment_v2:"8"`
+ Membership Ipv6MulticastMembership `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxAddIpv6MembershipRequest = _bindings.CreateLazyMarshaler(baseSocketWithCtxAddIpv6MembershipRequest{})
+
+func (msg *baseSocketWithCtxAddIpv6MembershipRequest) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxAddIpv6MembershipRequest
+}
+
+type baseSocketWithCtxAddIpv6MembershipResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketAddIpv6MembershipResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxAddIpv6MembershipResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxAddIpv6MembershipResponse{})
+
+func (msg *baseSocketWithCtxAddIpv6MembershipResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxAddIpv6MembershipResponse
+}
+
+type baseSocketWithCtxDropIpv6MembershipRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"24" fidl_alignment_v2:"8"`
+ Membership Ipv6MulticastMembership `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxDropIpv6MembershipRequest = _bindings.CreateLazyMarshaler(baseSocketWithCtxDropIpv6MembershipRequest{})
+
+func (msg *baseSocketWithCtxDropIpv6MembershipRequest) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxDropIpv6MembershipRequest
+}
+
+type baseSocketWithCtxDropIpv6MembershipResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketDropIpv6MembershipResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxDropIpv6MembershipResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxDropIpv6MembershipResponse{})
+
+func (msg *baseSocketWithCtxDropIpv6MembershipResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxDropIpv6MembershipResponse
+}
+
+type baseSocketWithCtxSetIpv6MulticastInterfaceRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value uint64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxSetIpv6MulticastInterfaceRequest = _bindings.CreateLazyMarshaler(baseSocketWithCtxSetIpv6MulticastInterfaceRequest{})
+
+func (msg *baseSocketWithCtxSetIpv6MulticastInterfaceRequest) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSetIpv6MulticastInterfaceRequest
+}
+
+type baseSocketWithCtxSetIpv6MulticastInterfaceResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetIpv6MulticastInterfaceResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxSetIpv6MulticastInterfaceResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxSetIpv6MulticastInterfaceResponse{})
+
+func (msg *baseSocketWithCtxSetIpv6MulticastInterfaceResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSetIpv6MulticastInterfaceResponse
+}
+
+type baseSocketWithCtxGetIpv6MulticastInterfaceResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetIpv6MulticastInterfaceResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxGetIpv6MulticastInterfaceResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxGetIpv6MulticastInterfaceResponse{})
+
+func (msg *baseSocketWithCtxGetIpv6MulticastInterfaceResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxGetIpv6MulticastInterfaceResponse
+}
+
+type baseSocketWithCtxSetIpv6MulticastHopsRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Value OptionalUint8 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxSetIpv6MulticastHopsRequest = _bindings.CreateLazyMarshaler(baseSocketWithCtxSetIpv6MulticastHopsRequest{})
+
+func (msg *baseSocketWithCtxSetIpv6MulticastHopsRequest) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSetIpv6MulticastHopsRequest
+}
+
+type baseSocketWithCtxSetIpv6MulticastHopsResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetIpv6MulticastHopsResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxSetIpv6MulticastHopsResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxSetIpv6MulticastHopsResponse{})
+
+func (msg *baseSocketWithCtxSetIpv6MulticastHopsResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSetIpv6MulticastHopsResponse
+}
+
+type baseSocketWithCtxGetIpv6MulticastHopsResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetIpv6MulticastHopsResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxGetIpv6MulticastHopsResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxGetIpv6MulticastHopsResponse{})
+
+func (msg *baseSocketWithCtxGetIpv6MulticastHopsResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxGetIpv6MulticastHopsResponse
+}
+
+type baseSocketWithCtxSetIpv6MulticastLoopbackRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxSetIpv6MulticastLoopbackRequest = _bindings.CreateLazyMarshaler(baseSocketWithCtxSetIpv6MulticastLoopbackRequest{})
+
+func (msg *baseSocketWithCtxSetIpv6MulticastLoopbackRequest) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSetIpv6MulticastLoopbackRequest
+}
+
+type baseSocketWithCtxSetIpv6MulticastLoopbackResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetIpv6MulticastLoopbackResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxSetIpv6MulticastLoopbackResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxSetIpv6MulticastLoopbackResponse{})
+
+func (msg *baseSocketWithCtxSetIpv6MulticastLoopbackResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSetIpv6MulticastLoopbackResponse
+}
+
+type baseSocketWithCtxGetIpv6MulticastLoopbackResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetIpv6MulticastLoopbackResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxGetIpv6MulticastLoopbackResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxGetIpv6MulticastLoopbackResponse{})
+
+func (msg *baseSocketWithCtxGetIpv6MulticastLoopbackResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxGetIpv6MulticastLoopbackResponse
+}
+
+type baseSocketWithCtxSetIpv6OnlyRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxSetIpv6OnlyRequest = _bindings.CreateLazyMarshaler(baseSocketWithCtxSetIpv6OnlyRequest{})
+
+func (msg *baseSocketWithCtxSetIpv6OnlyRequest) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSetIpv6OnlyRequest
+}
+
+type baseSocketWithCtxSetIpv6OnlyResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetIpv6OnlyResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxSetIpv6OnlyResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxSetIpv6OnlyResponse{})
+
+func (msg *baseSocketWithCtxSetIpv6OnlyResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSetIpv6OnlyResponse
+}
+
+type baseSocketWithCtxGetIpv6OnlyResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetIpv6OnlyResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxGetIpv6OnlyResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxGetIpv6OnlyResponse{})
+
+func (msg *baseSocketWithCtxGetIpv6OnlyResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxGetIpv6OnlyResponse
+}
+
+type baseSocketWithCtxSetIpv6ReceiveTrafficClassRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxSetIpv6ReceiveTrafficClassRequest = _bindings.CreateLazyMarshaler(baseSocketWithCtxSetIpv6ReceiveTrafficClassRequest{})
+
+func (msg *baseSocketWithCtxSetIpv6ReceiveTrafficClassRequest) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSetIpv6ReceiveTrafficClassRequest
+}
+
+type baseSocketWithCtxSetIpv6ReceiveTrafficClassResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetIpv6ReceiveTrafficClassResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxSetIpv6ReceiveTrafficClassResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxSetIpv6ReceiveTrafficClassResponse{})
+
+func (msg *baseSocketWithCtxSetIpv6ReceiveTrafficClassResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSetIpv6ReceiveTrafficClassResponse
+}
+
+type baseSocketWithCtxGetIpv6ReceiveTrafficClassResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetIpv6ReceiveTrafficClassResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxGetIpv6ReceiveTrafficClassResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxGetIpv6ReceiveTrafficClassResponse{})
+
+func (msg *baseSocketWithCtxGetIpv6ReceiveTrafficClassResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxGetIpv6ReceiveTrafficClassResponse
+}
+
+type baseSocketWithCtxSetIpv6TrafficClassRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Value OptionalUint8 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxSetIpv6TrafficClassRequest = _bindings.CreateLazyMarshaler(baseSocketWithCtxSetIpv6TrafficClassRequest{})
+
+func (msg *baseSocketWithCtxSetIpv6TrafficClassRequest) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSetIpv6TrafficClassRequest
+}
+
+type baseSocketWithCtxSetIpv6TrafficClassResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetIpv6TrafficClassResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxSetIpv6TrafficClassResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxSetIpv6TrafficClassResponse{})
+
+func (msg *baseSocketWithCtxSetIpv6TrafficClassResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxSetIpv6TrafficClassResponse
+}
+
+type baseSocketWithCtxGetIpv6TrafficClassResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetIpv6TrafficClassResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mbaseSocketWithCtxGetIpv6TrafficClassResponse = _bindings.CreateLazyMarshaler(baseSocketWithCtxGetIpv6TrafficClassResponse{})
+
+func (msg *baseSocketWithCtxGetIpv6TrafficClassResponse) Marshaler() _bindings.Marshaler {
+ return _mbaseSocketWithCtxGetIpv6TrafficClassResponse
+}
+
+type datagramSocketWithCtxCloneRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Flags uint32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Object fuchsiaio.NodeWithCtxInterfaceRequest `fidl_offset_v1:"4" fidl_offset_v2:"4" fidl_handle_subtype:"4" fidl_bounds:"0"`
+}
+
+var _mdatagramSocketWithCtxCloneRequest = _bindings.CreateLazyMarshaler(datagramSocketWithCtxCloneRequest{})
+
+func (msg *datagramSocketWithCtxCloneRequest) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxCloneRequest
+}
+
+type datagramSocketWithCtxCloseResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxCloseResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxCloseResponse{})
+
+func (msg *datagramSocketWithCtxCloseResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxCloseResponse
+}
+
+type datagramSocketWithCtxDescribeResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Info fuchsiaio.NodeInfo `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxDescribeResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxDescribeResponse{})
+
+func (msg *datagramSocketWithCtxDescribeResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxDescribeResponse
+}
+
+type datagramSocketWithCtxOnOpenResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"32" fidl_alignment_v1:"8" fidl_size_v2:"24" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Info *fuchsiaio.NodeInfo `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+}
+
+var _mdatagramSocketWithCtxOnOpenResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxOnOpenResponse{})
+
+func (msg *datagramSocketWithCtxOnOpenResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxOnOpenResponse
+}
+
+type datagramSocketWithCtxSyncResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxSyncResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSyncResponse{})
+
+func (msg *datagramSocketWithCtxSyncResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSyncResponse
+}
+
+type datagramSocketWithCtxGetAttrResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"64" fidl_alignment_v1:"8" fidl_size_v2:"64" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Attributes fuchsiaio.NodeAttributes `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+}
+
+var _mdatagramSocketWithCtxGetAttrResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxGetAttrResponse{})
+
+func (msg *datagramSocketWithCtxGetAttrResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxGetAttrResponse
+}
+
+type datagramSocketWithCtxSetAttrRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"64" fidl_alignment_v1:"8" fidl_size_v2:"64" fidl_alignment_v2:"8"`
+ Flags uint32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Attributes fuchsiaio.NodeAttributes `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+}
+
+var _mdatagramSocketWithCtxSetAttrRequest = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSetAttrRequest{})
+
+func (msg *datagramSocketWithCtxSetAttrRequest) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSetAttrRequest
+}
+
+type datagramSocketWithCtxSetAttrResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxSetAttrResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSetAttrResponse{})
+
+func (msg *datagramSocketWithCtxSetAttrResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSetAttrResponse
+}
+
+type datagramSocketWithCtxNodeGetFlagsResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Flags uint32 `fidl_offset_v1:"4" fidl_offset_v2:"4"`
+}
+
+var _mdatagramSocketWithCtxNodeGetFlagsResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxNodeGetFlagsResponse{})
+
+func (msg *datagramSocketWithCtxNodeGetFlagsResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxNodeGetFlagsResponse
+}
+
+type datagramSocketWithCtxNodeSetFlagsRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Flags uint32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxNodeSetFlagsRequest = _bindings.CreateLazyMarshaler(datagramSocketWithCtxNodeSetFlagsRequest{})
+
+func (msg *datagramSocketWithCtxNodeSetFlagsRequest) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxNodeSetFlagsRequest
+}
+
+type datagramSocketWithCtxNodeSetFlagsResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxNodeSetFlagsResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxNodeSetFlagsResponse{})
+
+func (msg *datagramSocketWithCtxNodeSetFlagsResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxNodeSetFlagsResponse
+}
+
+type datagramSocketWithCtxBindRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Addr fuchsianet.SocketAddress `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxBindRequest = _bindings.CreateLazyMarshaler(datagramSocketWithCtxBindRequest{})
+
+func (msg *datagramSocketWithCtxBindRequest) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxBindRequest
+}
+
+type datagramSocketWithCtxBindResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketBindResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxBindResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxBindResponse{})
+
+func (msg *datagramSocketWithCtxBindResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxBindResponse
+}
+
+type datagramSocketWithCtxConnectRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Addr fuchsianet.SocketAddress `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxConnectRequest = _bindings.CreateLazyMarshaler(datagramSocketWithCtxConnectRequest{})
+
+func (msg *datagramSocketWithCtxConnectRequest) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxConnectRequest
+}
+
+type datagramSocketWithCtxConnectResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketConnectResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxConnectResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxConnectResponse{})
+
+func (msg *datagramSocketWithCtxConnectResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxConnectResponse
+}
+
+type datagramSocketWithCtxDisconnectResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketDisconnectResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxDisconnectResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxDisconnectResponse{})
+
+func (msg *datagramSocketWithCtxDisconnectResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxDisconnectResponse
+}
+
+type datagramSocketWithCtxGetSockNameResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetSockNameResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxGetSockNameResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxGetSockNameResponse{})
+
+func (msg *datagramSocketWithCtxGetSockNameResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxGetSockNameResponse
+}
+
+type datagramSocketWithCtxGetPeerNameResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetPeerNameResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxGetPeerNameResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxGetPeerNameResponse{})
+
+func (msg *datagramSocketWithCtxGetPeerNameResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxGetPeerNameResponse
+}
+
+type datagramSocketWithCtxShutdown2Request struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Mode ShutdownMode `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxShutdown2Request = _bindings.CreateLazyMarshaler(datagramSocketWithCtxShutdown2Request{})
+
+func (msg *datagramSocketWithCtxShutdown2Request) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxShutdown2Request
+}
+
+type datagramSocketWithCtxShutdown2Response struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketShutdown2Result `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxShutdown2Response = _bindings.CreateLazyMarshaler(datagramSocketWithCtxShutdown2Response{})
+
+func (msg *datagramSocketWithCtxShutdown2Response) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxShutdown2Response
+}
+
+type datagramSocketWithCtxSetReuseAddressRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxSetReuseAddressRequest = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSetReuseAddressRequest{})
+
+func (msg *datagramSocketWithCtxSetReuseAddressRequest) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSetReuseAddressRequest
+}
+
+type datagramSocketWithCtxSetReuseAddressResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetReuseAddressResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxSetReuseAddressResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSetReuseAddressResponse{})
+
+func (msg *datagramSocketWithCtxSetReuseAddressResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSetReuseAddressResponse
+}
+
+type datagramSocketWithCtxGetReuseAddressResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetReuseAddressResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxGetReuseAddressResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxGetReuseAddressResponse{})
+
+func (msg *datagramSocketWithCtxGetReuseAddressResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxGetReuseAddressResponse
+}
+
+type datagramSocketWithCtxGetErrorResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetErrorResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxGetErrorResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxGetErrorResponse{})
+
+func (msg *datagramSocketWithCtxGetErrorResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxGetErrorResponse
+}
+
+type datagramSocketWithCtxSetBroadcastRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxSetBroadcastRequest = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSetBroadcastRequest{})
+
+func (msg *datagramSocketWithCtxSetBroadcastRequest) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSetBroadcastRequest
+}
+
+type datagramSocketWithCtxSetBroadcastResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetBroadcastResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxSetBroadcastResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSetBroadcastResponse{})
+
+func (msg *datagramSocketWithCtxSetBroadcastResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSetBroadcastResponse
+}
+
+type datagramSocketWithCtxGetBroadcastResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetBroadcastResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxGetBroadcastResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxGetBroadcastResponse{})
+
+func (msg *datagramSocketWithCtxGetBroadcastResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxGetBroadcastResponse
+}
+
+type datagramSocketWithCtxSetSendBufferRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ ValueBytes uint64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxSetSendBufferRequest = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSetSendBufferRequest{})
+
+func (msg *datagramSocketWithCtxSetSendBufferRequest) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSetSendBufferRequest
+}
+
+type datagramSocketWithCtxSetSendBufferResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetSendBufferResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxSetSendBufferResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSetSendBufferResponse{})
+
+func (msg *datagramSocketWithCtxSetSendBufferResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSetSendBufferResponse
+}
+
+type datagramSocketWithCtxGetSendBufferResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetSendBufferResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxGetSendBufferResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxGetSendBufferResponse{})
+
+func (msg *datagramSocketWithCtxGetSendBufferResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxGetSendBufferResponse
+}
+
+type datagramSocketWithCtxSetReceiveBufferRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ ValueBytes uint64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxSetReceiveBufferRequest = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSetReceiveBufferRequest{})
+
+func (msg *datagramSocketWithCtxSetReceiveBufferRequest) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSetReceiveBufferRequest
+}
+
+type datagramSocketWithCtxSetReceiveBufferResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetReceiveBufferResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxSetReceiveBufferResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSetReceiveBufferResponse{})
+
+func (msg *datagramSocketWithCtxSetReceiveBufferResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSetReceiveBufferResponse
+}
+
+type datagramSocketWithCtxGetReceiveBufferResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetReceiveBufferResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxGetReceiveBufferResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxGetReceiveBufferResponse{})
+
+func (msg *datagramSocketWithCtxGetReceiveBufferResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxGetReceiveBufferResponse
+}
+
+type datagramSocketWithCtxSetKeepAliveRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxSetKeepAliveRequest = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSetKeepAliveRequest{})
+
+func (msg *datagramSocketWithCtxSetKeepAliveRequest) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSetKeepAliveRequest
+}
+
+type datagramSocketWithCtxSetKeepAliveResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetKeepAliveResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxSetKeepAliveResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSetKeepAliveResponse{})
+
+func (msg *datagramSocketWithCtxSetKeepAliveResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSetKeepAliveResponse
+}
+
+type datagramSocketWithCtxGetKeepAliveResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetKeepAliveResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxGetKeepAliveResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxGetKeepAliveResponse{})
+
+func (msg *datagramSocketWithCtxGetKeepAliveResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxGetKeepAliveResponse
+}
+
+type datagramSocketWithCtxSetOutOfBandInlineRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxSetOutOfBandInlineRequest = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSetOutOfBandInlineRequest{})
+
+func (msg *datagramSocketWithCtxSetOutOfBandInlineRequest) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSetOutOfBandInlineRequest
+}
+
+type datagramSocketWithCtxSetOutOfBandInlineResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetOutOfBandInlineResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxSetOutOfBandInlineResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSetOutOfBandInlineResponse{})
+
+func (msg *datagramSocketWithCtxSetOutOfBandInlineResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSetOutOfBandInlineResponse
+}
+
+type datagramSocketWithCtxGetOutOfBandInlineResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetOutOfBandInlineResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxGetOutOfBandInlineResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxGetOutOfBandInlineResponse{})
+
+func (msg *datagramSocketWithCtxGetOutOfBandInlineResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxGetOutOfBandInlineResponse
+}
+
+type datagramSocketWithCtxSetNoCheckRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxSetNoCheckRequest = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSetNoCheckRequest{})
+
+func (msg *datagramSocketWithCtxSetNoCheckRequest) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSetNoCheckRequest
+}
+
+type datagramSocketWithCtxSetNoCheckResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetNoCheckResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxSetNoCheckResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSetNoCheckResponse{})
+
+func (msg *datagramSocketWithCtxSetNoCheckResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSetNoCheckResponse
+}
+
+type datagramSocketWithCtxGetNoCheckResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetNoCheckResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxGetNoCheckResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxGetNoCheckResponse{})
+
+func (msg *datagramSocketWithCtxGetNoCheckResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxGetNoCheckResponse
+}
+
+type datagramSocketWithCtxSetLingerRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Linger bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ LengthSecs uint32 `fidl_offset_v1:"4" fidl_offset_v2:"4"`
+}
+
+var _mdatagramSocketWithCtxSetLingerRequest = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSetLingerRequest{})
+
+func (msg *datagramSocketWithCtxSetLingerRequest) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSetLingerRequest
+}
+
+type datagramSocketWithCtxSetLingerResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetLingerResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxSetLingerResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSetLingerResponse{})
+
+func (msg *datagramSocketWithCtxSetLingerResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSetLingerResponse
+}
+
+type datagramSocketWithCtxGetLingerResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetLingerResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxGetLingerResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxGetLingerResponse{})
+
+func (msg *datagramSocketWithCtxGetLingerResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxGetLingerResponse
+}
+
+type datagramSocketWithCtxSetReusePortRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxSetReusePortRequest = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSetReusePortRequest{})
+
+func (msg *datagramSocketWithCtxSetReusePortRequest) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSetReusePortRequest
+}
+
+type datagramSocketWithCtxSetReusePortResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetReusePortResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxSetReusePortResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSetReusePortResponse{})
+
+func (msg *datagramSocketWithCtxSetReusePortResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSetReusePortResponse
+}
+
+type datagramSocketWithCtxGetReusePortResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetReusePortResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxGetReusePortResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxGetReusePortResponse{})
+
+func (msg *datagramSocketWithCtxGetReusePortResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxGetReusePortResponse
+}
+
+type datagramSocketWithCtxGetAcceptConnResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetAcceptConnResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxGetAcceptConnResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxGetAcceptConnResponse{})
+
+func (msg *datagramSocketWithCtxGetAcceptConnResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxGetAcceptConnResponse
+}
+
+type datagramSocketWithCtxSetBindToDeviceRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Value string `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"15"`
+}
+
+var _mdatagramSocketWithCtxSetBindToDeviceRequest = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSetBindToDeviceRequest{})
+
+func (msg *datagramSocketWithCtxSetBindToDeviceRequest) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSetBindToDeviceRequest
+}
+
+type datagramSocketWithCtxSetBindToDeviceResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetBindToDeviceResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxSetBindToDeviceResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSetBindToDeviceResponse{})
+
+func (msg *datagramSocketWithCtxSetBindToDeviceResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSetBindToDeviceResponse
+}
+
+type datagramSocketWithCtxGetBindToDeviceResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetBindToDeviceResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxGetBindToDeviceResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxGetBindToDeviceResponse{})
+
+func (msg *datagramSocketWithCtxGetBindToDeviceResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxGetBindToDeviceResponse
+}
+
+type datagramSocketWithCtxSetTimestampRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxSetTimestampRequest = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSetTimestampRequest{})
+
+func (msg *datagramSocketWithCtxSetTimestampRequest) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSetTimestampRequest
+}
+
+type datagramSocketWithCtxSetTimestampResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetTimestampResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxSetTimestampResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSetTimestampResponse{})
+
+func (msg *datagramSocketWithCtxSetTimestampResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSetTimestampResponse
+}
+
+type datagramSocketWithCtxGetTimestampResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetTimestampResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxGetTimestampResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxGetTimestampResponse{})
+
+func (msg *datagramSocketWithCtxGetTimestampResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxGetTimestampResponse
+}
+
+type datagramSocketWithCtxSetIpTypeOfServiceRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value uint8 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxSetIpTypeOfServiceRequest = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSetIpTypeOfServiceRequest{})
+
+func (msg *datagramSocketWithCtxSetIpTypeOfServiceRequest) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSetIpTypeOfServiceRequest
+}
+
+type datagramSocketWithCtxSetIpTypeOfServiceResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetIpTypeOfServiceResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxSetIpTypeOfServiceResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSetIpTypeOfServiceResponse{})
+
+func (msg *datagramSocketWithCtxSetIpTypeOfServiceResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSetIpTypeOfServiceResponse
+}
+
+type datagramSocketWithCtxGetIpTypeOfServiceResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetIpTypeOfServiceResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxGetIpTypeOfServiceResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxGetIpTypeOfServiceResponse{})
+
+func (msg *datagramSocketWithCtxGetIpTypeOfServiceResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxGetIpTypeOfServiceResponse
+}
+
+type datagramSocketWithCtxSetIpTtlRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Value OptionalUint8 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxSetIpTtlRequest = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSetIpTtlRequest{})
+
+func (msg *datagramSocketWithCtxSetIpTtlRequest) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSetIpTtlRequest
+}
+
+type datagramSocketWithCtxSetIpTtlResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetIpTtlResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxSetIpTtlResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSetIpTtlResponse{})
+
+func (msg *datagramSocketWithCtxSetIpTtlResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSetIpTtlResponse
+}
+
+type datagramSocketWithCtxGetIpTtlResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetIpTtlResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxGetIpTtlResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxGetIpTtlResponse{})
+
+func (msg *datagramSocketWithCtxGetIpTtlResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxGetIpTtlResponse
+}
+
+type datagramSocketWithCtxSetIpPacketInfoRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxSetIpPacketInfoRequest = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSetIpPacketInfoRequest{})
+
+func (msg *datagramSocketWithCtxSetIpPacketInfoRequest) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSetIpPacketInfoRequest
+}
+
+type datagramSocketWithCtxSetIpPacketInfoResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetIpPacketInfoResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxSetIpPacketInfoResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSetIpPacketInfoResponse{})
+
+func (msg *datagramSocketWithCtxSetIpPacketInfoResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSetIpPacketInfoResponse
+}
+
+type datagramSocketWithCtxGetIpPacketInfoResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetIpPacketInfoResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxGetIpPacketInfoResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxGetIpPacketInfoResponse{})
+
+func (msg *datagramSocketWithCtxGetIpPacketInfoResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxGetIpPacketInfoResponse
+}
+
+type datagramSocketWithCtxSetIpReceiveTypeOfServiceRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxSetIpReceiveTypeOfServiceRequest = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSetIpReceiveTypeOfServiceRequest{})
+
+func (msg *datagramSocketWithCtxSetIpReceiveTypeOfServiceRequest) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSetIpReceiveTypeOfServiceRequest
+}
+
+type datagramSocketWithCtxSetIpReceiveTypeOfServiceResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetIpReceiveTypeOfServiceResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxSetIpReceiveTypeOfServiceResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSetIpReceiveTypeOfServiceResponse{})
+
+func (msg *datagramSocketWithCtxSetIpReceiveTypeOfServiceResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSetIpReceiveTypeOfServiceResponse
+}
+
+type datagramSocketWithCtxGetIpReceiveTypeOfServiceResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetIpReceiveTypeOfServiceResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxGetIpReceiveTypeOfServiceResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxGetIpReceiveTypeOfServiceResponse{})
+
+func (msg *datagramSocketWithCtxGetIpReceiveTypeOfServiceResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxGetIpReceiveTypeOfServiceResponse
+}
+
+type datagramSocketWithCtxSetIpMulticastInterfaceRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Iface uint64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Address fuchsianet.Ipv4Address `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+}
+
+var _mdatagramSocketWithCtxSetIpMulticastInterfaceRequest = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSetIpMulticastInterfaceRequest{})
+
+func (msg *datagramSocketWithCtxSetIpMulticastInterfaceRequest) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSetIpMulticastInterfaceRequest
+}
+
+type datagramSocketWithCtxSetIpMulticastInterfaceResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetIpMulticastInterfaceResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxSetIpMulticastInterfaceResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSetIpMulticastInterfaceResponse{})
+
+func (msg *datagramSocketWithCtxSetIpMulticastInterfaceResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSetIpMulticastInterfaceResponse
+}
+
+type datagramSocketWithCtxGetIpMulticastInterfaceResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetIpMulticastInterfaceResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxGetIpMulticastInterfaceResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxGetIpMulticastInterfaceResponse{})
+
+func (msg *datagramSocketWithCtxGetIpMulticastInterfaceResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxGetIpMulticastInterfaceResponse
+}
+
+type datagramSocketWithCtxSetIpMulticastTtlRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Value OptionalUint8 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxSetIpMulticastTtlRequest = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSetIpMulticastTtlRequest{})
+
+func (msg *datagramSocketWithCtxSetIpMulticastTtlRequest) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSetIpMulticastTtlRequest
+}
+
+type datagramSocketWithCtxSetIpMulticastTtlResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetIpMulticastTtlResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxSetIpMulticastTtlResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSetIpMulticastTtlResponse{})
+
+func (msg *datagramSocketWithCtxSetIpMulticastTtlResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSetIpMulticastTtlResponse
+}
+
+type datagramSocketWithCtxGetIpMulticastTtlResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetIpMulticastTtlResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxGetIpMulticastTtlResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxGetIpMulticastTtlResponse{})
+
+func (msg *datagramSocketWithCtxGetIpMulticastTtlResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxGetIpMulticastTtlResponse
+}
+
+type datagramSocketWithCtxSetIpMulticastLoopbackRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxSetIpMulticastLoopbackRequest = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSetIpMulticastLoopbackRequest{})
+
+func (msg *datagramSocketWithCtxSetIpMulticastLoopbackRequest) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSetIpMulticastLoopbackRequest
+}
+
+type datagramSocketWithCtxSetIpMulticastLoopbackResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetIpMulticastLoopbackResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxSetIpMulticastLoopbackResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSetIpMulticastLoopbackResponse{})
+
+func (msg *datagramSocketWithCtxSetIpMulticastLoopbackResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSetIpMulticastLoopbackResponse
+}
+
+type datagramSocketWithCtxGetIpMulticastLoopbackResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetIpMulticastLoopbackResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxGetIpMulticastLoopbackResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxGetIpMulticastLoopbackResponse{})
+
+func (msg *datagramSocketWithCtxGetIpMulticastLoopbackResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxGetIpMulticastLoopbackResponse
+}
+
+type datagramSocketWithCtxAddIpMembershipRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Membership IpMulticastMembership `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxAddIpMembershipRequest = _bindings.CreateLazyMarshaler(datagramSocketWithCtxAddIpMembershipRequest{})
+
+func (msg *datagramSocketWithCtxAddIpMembershipRequest) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxAddIpMembershipRequest
+}
+
+type datagramSocketWithCtxAddIpMembershipResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketAddIpMembershipResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxAddIpMembershipResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxAddIpMembershipResponse{})
+
+func (msg *datagramSocketWithCtxAddIpMembershipResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxAddIpMembershipResponse
+}
+
+type datagramSocketWithCtxDropIpMembershipRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Membership IpMulticastMembership `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxDropIpMembershipRequest = _bindings.CreateLazyMarshaler(datagramSocketWithCtxDropIpMembershipRequest{})
+
+func (msg *datagramSocketWithCtxDropIpMembershipRequest) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxDropIpMembershipRequest
+}
+
+type datagramSocketWithCtxDropIpMembershipResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketDropIpMembershipResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxDropIpMembershipResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxDropIpMembershipResponse{})
+
+func (msg *datagramSocketWithCtxDropIpMembershipResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxDropIpMembershipResponse
+}
+
+type datagramSocketWithCtxAddIpv6MembershipRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"24" fidl_alignment_v2:"8"`
+ Membership Ipv6MulticastMembership `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxAddIpv6MembershipRequest = _bindings.CreateLazyMarshaler(datagramSocketWithCtxAddIpv6MembershipRequest{})
+
+func (msg *datagramSocketWithCtxAddIpv6MembershipRequest) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxAddIpv6MembershipRequest
+}
+
+type datagramSocketWithCtxAddIpv6MembershipResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketAddIpv6MembershipResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxAddIpv6MembershipResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxAddIpv6MembershipResponse{})
+
+func (msg *datagramSocketWithCtxAddIpv6MembershipResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxAddIpv6MembershipResponse
+}
+
+type datagramSocketWithCtxDropIpv6MembershipRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"24" fidl_alignment_v2:"8"`
+ Membership Ipv6MulticastMembership `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxDropIpv6MembershipRequest = _bindings.CreateLazyMarshaler(datagramSocketWithCtxDropIpv6MembershipRequest{})
+
+func (msg *datagramSocketWithCtxDropIpv6MembershipRequest) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxDropIpv6MembershipRequest
+}
+
+type datagramSocketWithCtxDropIpv6MembershipResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketDropIpv6MembershipResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxDropIpv6MembershipResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxDropIpv6MembershipResponse{})
+
+func (msg *datagramSocketWithCtxDropIpv6MembershipResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxDropIpv6MembershipResponse
+}
+
+type datagramSocketWithCtxSetIpv6MulticastInterfaceRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value uint64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxSetIpv6MulticastInterfaceRequest = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSetIpv6MulticastInterfaceRequest{})
+
+func (msg *datagramSocketWithCtxSetIpv6MulticastInterfaceRequest) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSetIpv6MulticastInterfaceRequest
+}
+
+type datagramSocketWithCtxSetIpv6MulticastInterfaceResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetIpv6MulticastInterfaceResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxSetIpv6MulticastInterfaceResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSetIpv6MulticastInterfaceResponse{})
+
+func (msg *datagramSocketWithCtxSetIpv6MulticastInterfaceResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSetIpv6MulticastInterfaceResponse
+}
+
+type datagramSocketWithCtxGetIpv6MulticastInterfaceResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetIpv6MulticastInterfaceResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxGetIpv6MulticastInterfaceResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxGetIpv6MulticastInterfaceResponse{})
+
+func (msg *datagramSocketWithCtxGetIpv6MulticastInterfaceResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxGetIpv6MulticastInterfaceResponse
+}
+
+type datagramSocketWithCtxSetIpv6MulticastHopsRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Value OptionalUint8 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxSetIpv6MulticastHopsRequest = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSetIpv6MulticastHopsRequest{})
+
+func (msg *datagramSocketWithCtxSetIpv6MulticastHopsRequest) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSetIpv6MulticastHopsRequest
+}
+
+type datagramSocketWithCtxSetIpv6MulticastHopsResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetIpv6MulticastHopsResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxSetIpv6MulticastHopsResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSetIpv6MulticastHopsResponse{})
+
+func (msg *datagramSocketWithCtxSetIpv6MulticastHopsResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSetIpv6MulticastHopsResponse
+}
+
+type datagramSocketWithCtxGetIpv6MulticastHopsResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetIpv6MulticastHopsResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxGetIpv6MulticastHopsResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxGetIpv6MulticastHopsResponse{})
+
+func (msg *datagramSocketWithCtxGetIpv6MulticastHopsResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxGetIpv6MulticastHopsResponse
+}
+
+type datagramSocketWithCtxSetIpv6MulticastLoopbackRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxSetIpv6MulticastLoopbackRequest = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSetIpv6MulticastLoopbackRequest{})
+
+func (msg *datagramSocketWithCtxSetIpv6MulticastLoopbackRequest) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSetIpv6MulticastLoopbackRequest
+}
+
+type datagramSocketWithCtxSetIpv6MulticastLoopbackResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetIpv6MulticastLoopbackResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxSetIpv6MulticastLoopbackResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSetIpv6MulticastLoopbackResponse{})
+
+func (msg *datagramSocketWithCtxSetIpv6MulticastLoopbackResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSetIpv6MulticastLoopbackResponse
+}
+
+type datagramSocketWithCtxGetIpv6MulticastLoopbackResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetIpv6MulticastLoopbackResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxGetIpv6MulticastLoopbackResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxGetIpv6MulticastLoopbackResponse{})
+
+func (msg *datagramSocketWithCtxGetIpv6MulticastLoopbackResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxGetIpv6MulticastLoopbackResponse
+}
+
+type datagramSocketWithCtxSetIpv6OnlyRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxSetIpv6OnlyRequest = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSetIpv6OnlyRequest{})
+
+func (msg *datagramSocketWithCtxSetIpv6OnlyRequest) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSetIpv6OnlyRequest
+}
+
+type datagramSocketWithCtxSetIpv6OnlyResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetIpv6OnlyResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxSetIpv6OnlyResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSetIpv6OnlyResponse{})
+
+func (msg *datagramSocketWithCtxSetIpv6OnlyResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSetIpv6OnlyResponse
+}
+
+type datagramSocketWithCtxGetIpv6OnlyResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetIpv6OnlyResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxGetIpv6OnlyResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxGetIpv6OnlyResponse{})
+
+func (msg *datagramSocketWithCtxGetIpv6OnlyResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxGetIpv6OnlyResponse
+}
+
+type datagramSocketWithCtxSetIpv6ReceiveTrafficClassRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxSetIpv6ReceiveTrafficClassRequest = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSetIpv6ReceiveTrafficClassRequest{})
+
+func (msg *datagramSocketWithCtxSetIpv6ReceiveTrafficClassRequest) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSetIpv6ReceiveTrafficClassRequest
+}
+
+type datagramSocketWithCtxSetIpv6ReceiveTrafficClassResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetIpv6ReceiveTrafficClassResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxSetIpv6ReceiveTrafficClassResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSetIpv6ReceiveTrafficClassResponse{})
+
+func (msg *datagramSocketWithCtxSetIpv6ReceiveTrafficClassResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSetIpv6ReceiveTrafficClassResponse
+}
+
+type datagramSocketWithCtxGetIpv6ReceiveTrafficClassResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetIpv6ReceiveTrafficClassResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxGetIpv6ReceiveTrafficClassResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxGetIpv6ReceiveTrafficClassResponse{})
+
+func (msg *datagramSocketWithCtxGetIpv6ReceiveTrafficClassResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxGetIpv6ReceiveTrafficClassResponse
+}
+
+type datagramSocketWithCtxSetIpv6TrafficClassRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Value OptionalUint8 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxSetIpv6TrafficClassRequest = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSetIpv6TrafficClassRequest{})
+
+func (msg *datagramSocketWithCtxSetIpv6TrafficClassRequest) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSetIpv6TrafficClassRequest
+}
+
+type datagramSocketWithCtxSetIpv6TrafficClassResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetIpv6TrafficClassResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxSetIpv6TrafficClassResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSetIpv6TrafficClassResponse{})
+
+func (msg *datagramSocketWithCtxSetIpv6TrafficClassResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSetIpv6TrafficClassResponse
+}
+
+type datagramSocketWithCtxGetIpv6TrafficClassResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetIpv6TrafficClassResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxGetIpv6TrafficClassResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxGetIpv6TrafficClassResponse{})
+
+func (msg *datagramSocketWithCtxGetIpv6TrafficClassResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxGetIpv6TrafficClassResponse
+}
+
+type datagramSocketWithCtxShutdownRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Mode ShutdownMode `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxShutdownRequest = _bindings.CreateLazyMarshaler(datagramSocketWithCtxShutdownRequest{})
+
+func (msg *datagramSocketWithCtxShutdownRequest) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxShutdownRequest
+}
+
+type datagramSocketWithCtxShutdownResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result DatagramSocketShutdownResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxShutdownResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxShutdownResponse{})
+
+func (msg *datagramSocketWithCtxShutdownResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxShutdownResponse
+}
+
+type datagramSocketWithCtxRecvMsgRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ WantAddr bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ DataLen uint32 `fidl_offset_v1:"4" fidl_offset_v2:"4"`
+ WantControl bool `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+ Flags RecvMsgFlags `fidl_offset_v1:"10" fidl_offset_v2:"10"`
+}
+
+var _mdatagramSocketWithCtxRecvMsgRequest = _bindings.CreateLazyMarshaler(datagramSocketWithCtxRecvMsgRequest{})
+
+func (msg *datagramSocketWithCtxRecvMsgRequest) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxRecvMsgRequest
+}
+
+type datagramSocketWithCtxRecvMsgResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result DatagramSocketRecvMsgResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxRecvMsgResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxRecvMsgResponse{})
+
+func (msg *datagramSocketWithCtxRecvMsgResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxRecvMsgResponse
+}
+
+type datagramSocketWithCtxSendMsgRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"64" fidl_alignment_v1:"8" fidl_size_v2:"56" fidl_alignment_v2:"8"`
+ Addr *fuchsianet.SocketAddress `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Data []uint8 `fidl_offset_v1:"24" fidl_offset_v2:"16" fidl_bounds:""`
+ Control SendControlData `fidl_offset_v1:"40" fidl_offset_v2:"32"`
+ Flags SendMsgFlags `fidl_offset_v1:"56" fidl_offset_v2:"48"`
+}
+
+var _mdatagramSocketWithCtxSendMsgRequest = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSendMsgRequest{})
+
+func (msg *datagramSocketWithCtxSendMsgRequest) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSendMsgRequest
+}
+
+type datagramSocketWithCtxSendMsgResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result DatagramSocketSendMsgResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxSendMsgResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxSendMsgResponse{})
+
+func (msg *datagramSocketWithCtxSendMsgResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxSendMsgResponse
+}
+
+type datagramSocketWithCtxGetInfoResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result DatagramSocketGetInfoResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mdatagramSocketWithCtxGetInfoResponse = _bindings.CreateLazyMarshaler(datagramSocketWithCtxGetInfoResponse{})
+
+func (msg *datagramSocketWithCtxGetInfoResponse) Marshaler() _bindings.Marshaler {
+ return _mdatagramSocketWithCtxGetInfoResponse
+}
+
+type streamSocketWithCtxCloneRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Flags uint32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Object fuchsiaio.NodeWithCtxInterfaceRequest `fidl_offset_v1:"4" fidl_offset_v2:"4" fidl_handle_subtype:"4" fidl_bounds:"0"`
+}
+
+var _mstreamSocketWithCtxCloneRequest = _bindings.CreateLazyMarshaler(streamSocketWithCtxCloneRequest{})
+
+func (msg *streamSocketWithCtxCloneRequest) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxCloneRequest
+}
+
+type streamSocketWithCtxCloseResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxCloseResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxCloseResponse{})
+
+func (msg *streamSocketWithCtxCloseResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxCloseResponse
+}
+
+type streamSocketWithCtxDescribeResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Info fuchsiaio.NodeInfo `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxDescribeResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxDescribeResponse{})
+
+func (msg *streamSocketWithCtxDescribeResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxDescribeResponse
+}
+
+type streamSocketWithCtxOnOpenResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"32" fidl_alignment_v1:"8" fidl_size_v2:"24" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Info *fuchsiaio.NodeInfo `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+}
+
+var _mstreamSocketWithCtxOnOpenResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxOnOpenResponse{})
+
+func (msg *streamSocketWithCtxOnOpenResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxOnOpenResponse
+}
+
+type streamSocketWithCtxSyncResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSyncResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxSyncResponse{})
+
+func (msg *streamSocketWithCtxSyncResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSyncResponse
+}
+
+type streamSocketWithCtxGetAttrResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"64" fidl_alignment_v1:"8" fidl_size_v2:"64" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Attributes fuchsiaio.NodeAttributes `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+}
+
+var _mstreamSocketWithCtxGetAttrResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxGetAttrResponse{})
+
+func (msg *streamSocketWithCtxGetAttrResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxGetAttrResponse
+}
+
+type streamSocketWithCtxSetAttrRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"64" fidl_alignment_v1:"8" fidl_size_v2:"64" fidl_alignment_v2:"8"`
+ Flags uint32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Attributes fuchsiaio.NodeAttributes `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+}
+
+var _mstreamSocketWithCtxSetAttrRequest = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetAttrRequest{})
+
+func (msg *streamSocketWithCtxSetAttrRequest) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetAttrRequest
+}
+
+type streamSocketWithCtxSetAttrResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetAttrResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetAttrResponse{})
+
+func (msg *streamSocketWithCtxSetAttrResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetAttrResponse
+}
+
+type streamSocketWithCtxNodeGetFlagsResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Flags uint32 `fidl_offset_v1:"4" fidl_offset_v2:"4"`
+}
+
+var _mstreamSocketWithCtxNodeGetFlagsResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxNodeGetFlagsResponse{})
+
+func (msg *streamSocketWithCtxNodeGetFlagsResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxNodeGetFlagsResponse
+}
+
+type streamSocketWithCtxNodeSetFlagsRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Flags uint32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxNodeSetFlagsRequest = _bindings.CreateLazyMarshaler(streamSocketWithCtxNodeSetFlagsRequest{})
+
+func (msg *streamSocketWithCtxNodeSetFlagsRequest) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxNodeSetFlagsRequest
+}
+
+type streamSocketWithCtxNodeSetFlagsResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ S int32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxNodeSetFlagsResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxNodeSetFlagsResponse{})
+
+func (msg *streamSocketWithCtxNodeSetFlagsResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxNodeSetFlagsResponse
+}
+
+type streamSocketWithCtxBindRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Addr fuchsianet.SocketAddress `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxBindRequest = _bindings.CreateLazyMarshaler(streamSocketWithCtxBindRequest{})
+
+func (msg *streamSocketWithCtxBindRequest) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxBindRequest
+}
+
+type streamSocketWithCtxBindResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketBindResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxBindResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxBindResponse{})
+
+func (msg *streamSocketWithCtxBindResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxBindResponse
+}
+
+type streamSocketWithCtxConnectRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Addr fuchsianet.SocketAddress `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxConnectRequest = _bindings.CreateLazyMarshaler(streamSocketWithCtxConnectRequest{})
+
+func (msg *streamSocketWithCtxConnectRequest) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxConnectRequest
+}
+
+type streamSocketWithCtxConnectResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketConnectResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxConnectResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxConnectResponse{})
+
+func (msg *streamSocketWithCtxConnectResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxConnectResponse
+}
+
+type streamSocketWithCtxDisconnectResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketDisconnectResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxDisconnectResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxDisconnectResponse{})
+
+func (msg *streamSocketWithCtxDisconnectResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxDisconnectResponse
+}
+
+type streamSocketWithCtxGetSockNameResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetSockNameResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxGetSockNameResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxGetSockNameResponse{})
+
+func (msg *streamSocketWithCtxGetSockNameResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxGetSockNameResponse
+}
+
+type streamSocketWithCtxGetPeerNameResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetPeerNameResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxGetPeerNameResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxGetPeerNameResponse{})
+
+func (msg *streamSocketWithCtxGetPeerNameResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxGetPeerNameResponse
+}
+
+type streamSocketWithCtxShutdown2Request struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Mode ShutdownMode `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxShutdown2Request = _bindings.CreateLazyMarshaler(streamSocketWithCtxShutdown2Request{})
+
+func (msg *streamSocketWithCtxShutdown2Request) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxShutdown2Request
+}
+
+type streamSocketWithCtxShutdown2Response struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketShutdown2Result `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxShutdown2Response = _bindings.CreateLazyMarshaler(streamSocketWithCtxShutdown2Response{})
+
+func (msg *streamSocketWithCtxShutdown2Response) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxShutdown2Response
+}
+
+type streamSocketWithCtxSetReuseAddressRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetReuseAddressRequest = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetReuseAddressRequest{})
+
+func (msg *streamSocketWithCtxSetReuseAddressRequest) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetReuseAddressRequest
+}
+
+type streamSocketWithCtxSetReuseAddressResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetReuseAddressResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetReuseAddressResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetReuseAddressResponse{})
+
+func (msg *streamSocketWithCtxSetReuseAddressResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetReuseAddressResponse
+}
+
+type streamSocketWithCtxGetReuseAddressResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetReuseAddressResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxGetReuseAddressResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxGetReuseAddressResponse{})
+
+func (msg *streamSocketWithCtxGetReuseAddressResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxGetReuseAddressResponse
+}
+
+type streamSocketWithCtxGetErrorResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetErrorResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxGetErrorResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxGetErrorResponse{})
+
+func (msg *streamSocketWithCtxGetErrorResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxGetErrorResponse
+}
+
+type streamSocketWithCtxSetBroadcastRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetBroadcastRequest = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetBroadcastRequest{})
+
+func (msg *streamSocketWithCtxSetBroadcastRequest) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetBroadcastRequest
+}
+
+type streamSocketWithCtxSetBroadcastResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetBroadcastResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetBroadcastResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetBroadcastResponse{})
+
+func (msg *streamSocketWithCtxSetBroadcastResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetBroadcastResponse
+}
+
+type streamSocketWithCtxGetBroadcastResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetBroadcastResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxGetBroadcastResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxGetBroadcastResponse{})
+
+func (msg *streamSocketWithCtxGetBroadcastResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxGetBroadcastResponse
+}
+
+type streamSocketWithCtxSetSendBufferRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ ValueBytes uint64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetSendBufferRequest = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetSendBufferRequest{})
+
+func (msg *streamSocketWithCtxSetSendBufferRequest) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetSendBufferRequest
+}
+
+type streamSocketWithCtxSetSendBufferResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetSendBufferResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetSendBufferResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetSendBufferResponse{})
+
+func (msg *streamSocketWithCtxSetSendBufferResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetSendBufferResponse
+}
+
+type streamSocketWithCtxGetSendBufferResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetSendBufferResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxGetSendBufferResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxGetSendBufferResponse{})
+
+func (msg *streamSocketWithCtxGetSendBufferResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxGetSendBufferResponse
+}
+
+type streamSocketWithCtxSetReceiveBufferRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ ValueBytes uint64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetReceiveBufferRequest = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetReceiveBufferRequest{})
+
+func (msg *streamSocketWithCtxSetReceiveBufferRequest) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetReceiveBufferRequest
+}
+
+type streamSocketWithCtxSetReceiveBufferResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetReceiveBufferResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetReceiveBufferResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetReceiveBufferResponse{})
+
+func (msg *streamSocketWithCtxSetReceiveBufferResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetReceiveBufferResponse
+}
+
+type streamSocketWithCtxGetReceiveBufferResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetReceiveBufferResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxGetReceiveBufferResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxGetReceiveBufferResponse{})
+
+func (msg *streamSocketWithCtxGetReceiveBufferResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxGetReceiveBufferResponse
+}
+
+type streamSocketWithCtxSetKeepAliveRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetKeepAliveRequest = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetKeepAliveRequest{})
+
+func (msg *streamSocketWithCtxSetKeepAliveRequest) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetKeepAliveRequest
+}
+
+type streamSocketWithCtxSetKeepAliveResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetKeepAliveResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetKeepAliveResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetKeepAliveResponse{})
+
+func (msg *streamSocketWithCtxSetKeepAliveResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetKeepAliveResponse
+}
+
+type streamSocketWithCtxGetKeepAliveResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetKeepAliveResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxGetKeepAliveResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxGetKeepAliveResponse{})
+
+func (msg *streamSocketWithCtxGetKeepAliveResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxGetKeepAliveResponse
+}
+
+type streamSocketWithCtxSetOutOfBandInlineRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetOutOfBandInlineRequest = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetOutOfBandInlineRequest{})
+
+func (msg *streamSocketWithCtxSetOutOfBandInlineRequest) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetOutOfBandInlineRequest
+}
+
+type streamSocketWithCtxSetOutOfBandInlineResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetOutOfBandInlineResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetOutOfBandInlineResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetOutOfBandInlineResponse{})
+
+func (msg *streamSocketWithCtxSetOutOfBandInlineResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetOutOfBandInlineResponse
+}
+
+type streamSocketWithCtxGetOutOfBandInlineResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetOutOfBandInlineResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxGetOutOfBandInlineResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxGetOutOfBandInlineResponse{})
+
+func (msg *streamSocketWithCtxGetOutOfBandInlineResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxGetOutOfBandInlineResponse
+}
+
+type streamSocketWithCtxSetNoCheckRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetNoCheckRequest = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetNoCheckRequest{})
+
+func (msg *streamSocketWithCtxSetNoCheckRequest) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetNoCheckRequest
+}
+
+type streamSocketWithCtxSetNoCheckResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetNoCheckResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetNoCheckResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetNoCheckResponse{})
+
+func (msg *streamSocketWithCtxSetNoCheckResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetNoCheckResponse
+}
+
+type streamSocketWithCtxGetNoCheckResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetNoCheckResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxGetNoCheckResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxGetNoCheckResponse{})
+
+func (msg *streamSocketWithCtxGetNoCheckResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxGetNoCheckResponse
+}
+
+type streamSocketWithCtxSetLingerRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Linger bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ LengthSecs uint32 `fidl_offset_v1:"4" fidl_offset_v2:"4"`
+}
+
+var _mstreamSocketWithCtxSetLingerRequest = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetLingerRequest{})
+
+func (msg *streamSocketWithCtxSetLingerRequest) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetLingerRequest
+}
+
+type streamSocketWithCtxSetLingerResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetLingerResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetLingerResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetLingerResponse{})
+
+func (msg *streamSocketWithCtxSetLingerResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetLingerResponse
+}
+
+type streamSocketWithCtxGetLingerResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetLingerResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxGetLingerResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxGetLingerResponse{})
+
+func (msg *streamSocketWithCtxGetLingerResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxGetLingerResponse
+}
+
+type streamSocketWithCtxSetReusePortRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetReusePortRequest = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetReusePortRequest{})
+
+func (msg *streamSocketWithCtxSetReusePortRequest) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetReusePortRequest
+}
+
+type streamSocketWithCtxSetReusePortResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetReusePortResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetReusePortResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetReusePortResponse{})
+
+func (msg *streamSocketWithCtxSetReusePortResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetReusePortResponse
+}
+
+type streamSocketWithCtxGetReusePortResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetReusePortResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxGetReusePortResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxGetReusePortResponse{})
+
+func (msg *streamSocketWithCtxGetReusePortResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxGetReusePortResponse
+}
+
+type streamSocketWithCtxGetAcceptConnResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetAcceptConnResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxGetAcceptConnResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxGetAcceptConnResponse{})
+
+func (msg *streamSocketWithCtxGetAcceptConnResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxGetAcceptConnResponse
+}
+
+type streamSocketWithCtxSetBindToDeviceRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Value string `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"15"`
+}
+
+var _mstreamSocketWithCtxSetBindToDeviceRequest = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetBindToDeviceRequest{})
+
+func (msg *streamSocketWithCtxSetBindToDeviceRequest) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetBindToDeviceRequest
+}
+
+type streamSocketWithCtxSetBindToDeviceResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetBindToDeviceResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetBindToDeviceResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetBindToDeviceResponse{})
+
+func (msg *streamSocketWithCtxSetBindToDeviceResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetBindToDeviceResponse
+}
+
+type streamSocketWithCtxGetBindToDeviceResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetBindToDeviceResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxGetBindToDeviceResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxGetBindToDeviceResponse{})
+
+func (msg *streamSocketWithCtxGetBindToDeviceResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxGetBindToDeviceResponse
+}
+
+type streamSocketWithCtxSetTimestampRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetTimestampRequest = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetTimestampRequest{})
+
+func (msg *streamSocketWithCtxSetTimestampRequest) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetTimestampRequest
+}
+
+type streamSocketWithCtxSetTimestampResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetTimestampResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetTimestampResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetTimestampResponse{})
+
+func (msg *streamSocketWithCtxSetTimestampResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetTimestampResponse
+}
+
+type streamSocketWithCtxGetTimestampResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetTimestampResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxGetTimestampResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxGetTimestampResponse{})
+
+func (msg *streamSocketWithCtxGetTimestampResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxGetTimestampResponse
+}
+
+type streamSocketWithCtxSetIpTypeOfServiceRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value uint8 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetIpTypeOfServiceRequest = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetIpTypeOfServiceRequest{})
+
+func (msg *streamSocketWithCtxSetIpTypeOfServiceRequest) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetIpTypeOfServiceRequest
+}
+
+type streamSocketWithCtxSetIpTypeOfServiceResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetIpTypeOfServiceResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetIpTypeOfServiceResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetIpTypeOfServiceResponse{})
+
+func (msg *streamSocketWithCtxSetIpTypeOfServiceResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetIpTypeOfServiceResponse
+}
+
+type streamSocketWithCtxGetIpTypeOfServiceResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetIpTypeOfServiceResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxGetIpTypeOfServiceResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxGetIpTypeOfServiceResponse{})
+
+func (msg *streamSocketWithCtxGetIpTypeOfServiceResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxGetIpTypeOfServiceResponse
+}
+
+type streamSocketWithCtxSetIpTtlRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Value OptionalUint8 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetIpTtlRequest = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetIpTtlRequest{})
+
+func (msg *streamSocketWithCtxSetIpTtlRequest) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetIpTtlRequest
+}
+
+type streamSocketWithCtxSetIpTtlResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetIpTtlResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetIpTtlResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetIpTtlResponse{})
+
+func (msg *streamSocketWithCtxSetIpTtlResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetIpTtlResponse
+}
+
+type streamSocketWithCtxGetIpTtlResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetIpTtlResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxGetIpTtlResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxGetIpTtlResponse{})
+
+func (msg *streamSocketWithCtxGetIpTtlResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxGetIpTtlResponse
+}
+
+type streamSocketWithCtxSetIpPacketInfoRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetIpPacketInfoRequest = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetIpPacketInfoRequest{})
+
+func (msg *streamSocketWithCtxSetIpPacketInfoRequest) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetIpPacketInfoRequest
+}
+
+type streamSocketWithCtxSetIpPacketInfoResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetIpPacketInfoResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetIpPacketInfoResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetIpPacketInfoResponse{})
+
+func (msg *streamSocketWithCtxSetIpPacketInfoResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetIpPacketInfoResponse
+}
+
+type streamSocketWithCtxGetIpPacketInfoResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetIpPacketInfoResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxGetIpPacketInfoResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxGetIpPacketInfoResponse{})
+
+func (msg *streamSocketWithCtxGetIpPacketInfoResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxGetIpPacketInfoResponse
+}
+
+type streamSocketWithCtxSetIpReceiveTypeOfServiceRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetIpReceiveTypeOfServiceRequest = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetIpReceiveTypeOfServiceRequest{})
+
+func (msg *streamSocketWithCtxSetIpReceiveTypeOfServiceRequest) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetIpReceiveTypeOfServiceRequest
+}
+
+type streamSocketWithCtxSetIpReceiveTypeOfServiceResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetIpReceiveTypeOfServiceResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetIpReceiveTypeOfServiceResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetIpReceiveTypeOfServiceResponse{})
+
+func (msg *streamSocketWithCtxSetIpReceiveTypeOfServiceResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetIpReceiveTypeOfServiceResponse
+}
+
+type streamSocketWithCtxGetIpReceiveTypeOfServiceResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetIpReceiveTypeOfServiceResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxGetIpReceiveTypeOfServiceResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxGetIpReceiveTypeOfServiceResponse{})
+
+func (msg *streamSocketWithCtxGetIpReceiveTypeOfServiceResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxGetIpReceiveTypeOfServiceResponse
+}
+
+type streamSocketWithCtxSetIpMulticastInterfaceRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Iface uint64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Address fuchsianet.Ipv4Address `fidl_offset_v1:"8" fidl_offset_v2:"8"`
+}
+
+var _mstreamSocketWithCtxSetIpMulticastInterfaceRequest = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetIpMulticastInterfaceRequest{})
+
+func (msg *streamSocketWithCtxSetIpMulticastInterfaceRequest) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetIpMulticastInterfaceRequest
+}
+
+type streamSocketWithCtxSetIpMulticastInterfaceResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetIpMulticastInterfaceResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetIpMulticastInterfaceResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetIpMulticastInterfaceResponse{})
+
+func (msg *streamSocketWithCtxSetIpMulticastInterfaceResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetIpMulticastInterfaceResponse
+}
+
+type streamSocketWithCtxGetIpMulticastInterfaceResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetIpMulticastInterfaceResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxGetIpMulticastInterfaceResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxGetIpMulticastInterfaceResponse{})
+
+func (msg *streamSocketWithCtxGetIpMulticastInterfaceResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxGetIpMulticastInterfaceResponse
+}
+
+type streamSocketWithCtxSetIpMulticastTtlRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Value OptionalUint8 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetIpMulticastTtlRequest = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetIpMulticastTtlRequest{})
+
+func (msg *streamSocketWithCtxSetIpMulticastTtlRequest) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetIpMulticastTtlRequest
+}
+
+type streamSocketWithCtxSetIpMulticastTtlResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetIpMulticastTtlResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetIpMulticastTtlResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetIpMulticastTtlResponse{})
+
+func (msg *streamSocketWithCtxSetIpMulticastTtlResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetIpMulticastTtlResponse
+}
+
+type streamSocketWithCtxGetIpMulticastTtlResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetIpMulticastTtlResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxGetIpMulticastTtlResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxGetIpMulticastTtlResponse{})
+
+func (msg *streamSocketWithCtxGetIpMulticastTtlResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxGetIpMulticastTtlResponse
+}
+
+type streamSocketWithCtxSetIpMulticastLoopbackRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetIpMulticastLoopbackRequest = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetIpMulticastLoopbackRequest{})
+
+func (msg *streamSocketWithCtxSetIpMulticastLoopbackRequest) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetIpMulticastLoopbackRequest
+}
+
+type streamSocketWithCtxSetIpMulticastLoopbackResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetIpMulticastLoopbackResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetIpMulticastLoopbackResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetIpMulticastLoopbackResponse{})
+
+func (msg *streamSocketWithCtxSetIpMulticastLoopbackResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetIpMulticastLoopbackResponse
+}
+
+type streamSocketWithCtxGetIpMulticastLoopbackResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetIpMulticastLoopbackResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxGetIpMulticastLoopbackResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxGetIpMulticastLoopbackResponse{})
+
+func (msg *streamSocketWithCtxGetIpMulticastLoopbackResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxGetIpMulticastLoopbackResponse
+}
+
+type streamSocketWithCtxAddIpMembershipRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Membership IpMulticastMembership `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxAddIpMembershipRequest = _bindings.CreateLazyMarshaler(streamSocketWithCtxAddIpMembershipRequest{})
+
+func (msg *streamSocketWithCtxAddIpMembershipRequest) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxAddIpMembershipRequest
+}
+
+type streamSocketWithCtxAddIpMembershipResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketAddIpMembershipResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxAddIpMembershipResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxAddIpMembershipResponse{})
+
+func (msg *streamSocketWithCtxAddIpMembershipResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxAddIpMembershipResponse
+}
+
+type streamSocketWithCtxDropIpMembershipRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Membership IpMulticastMembership `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxDropIpMembershipRequest = _bindings.CreateLazyMarshaler(streamSocketWithCtxDropIpMembershipRequest{})
+
+func (msg *streamSocketWithCtxDropIpMembershipRequest) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxDropIpMembershipRequest
+}
+
+type streamSocketWithCtxDropIpMembershipResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketDropIpMembershipResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxDropIpMembershipResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxDropIpMembershipResponse{})
+
+func (msg *streamSocketWithCtxDropIpMembershipResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxDropIpMembershipResponse
+}
+
+type streamSocketWithCtxAddIpv6MembershipRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"24" fidl_alignment_v2:"8"`
+ Membership Ipv6MulticastMembership `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxAddIpv6MembershipRequest = _bindings.CreateLazyMarshaler(streamSocketWithCtxAddIpv6MembershipRequest{})
+
+func (msg *streamSocketWithCtxAddIpv6MembershipRequest) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxAddIpv6MembershipRequest
+}
+
+type streamSocketWithCtxAddIpv6MembershipResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketAddIpv6MembershipResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxAddIpv6MembershipResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxAddIpv6MembershipResponse{})
+
+func (msg *streamSocketWithCtxAddIpv6MembershipResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxAddIpv6MembershipResponse
+}
+
+type streamSocketWithCtxDropIpv6MembershipRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"24" fidl_alignment_v2:"8"`
+ Membership Ipv6MulticastMembership `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxDropIpv6MembershipRequest = _bindings.CreateLazyMarshaler(streamSocketWithCtxDropIpv6MembershipRequest{})
+
+func (msg *streamSocketWithCtxDropIpv6MembershipRequest) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxDropIpv6MembershipRequest
+}
+
+type streamSocketWithCtxDropIpv6MembershipResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketDropIpv6MembershipResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxDropIpv6MembershipResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxDropIpv6MembershipResponse{})
+
+func (msg *streamSocketWithCtxDropIpv6MembershipResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxDropIpv6MembershipResponse
+}
+
+type streamSocketWithCtxSetIpv6MulticastInterfaceRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value uint64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetIpv6MulticastInterfaceRequest = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetIpv6MulticastInterfaceRequest{})
+
+func (msg *streamSocketWithCtxSetIpv6MulticastInterfaceRequest) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetIpv6MulticastInterfaceRequest
+}
+
+type streamSocketWithCtxSetIpv6MulticastInterfaceResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetIpv6MulticastInterfaceResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetIpv6MulticastInterfaceResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetIpv6MulticastInterfaceResponse{})
+
+func (msg *streamSocketWithCtxSetIpv6MulticastInterfaceResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetIpv6MulticastInterfaceResponse
+}
+
+type streamSocketWithCtxGetIpv6MulticastInterfaceResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetIpv6MulticastInterfaceResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxGetIpv6MulticastInterfaceResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxGetIpv6MulticastInterfaceResponse{})
+
+func (msg *streamSocketWithCtxGetIpv6MulticastInterfaceResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxGetIpv6MulticastInterfaceResponse
+}
+
+type streamSocketWithCtxSetIpv6MulticastHopsRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Value OptionalUint8 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetIpv6MulticastHopsRequest = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetIpv6MulticastHopsRequest{})
+
+func (msg *streamSocketWithCtxSetIpv6MulticastHopsRequest) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetIpv6MulticastHopsRequest
+}
+
+type streamSocketWithCtxSetIpv6MulticastHopsResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetIpv6MulticastHopsResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetIpv6MulticastHopsResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetIpv6MulticastHopsResponse{})
+
+func (msg *streamSocketWithCtxSetIpv6MulticastHopsResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetIpv6MulticastHopsResponse
+}
+
+type streamSocketWithCtxGetIpv6MulticastHopsResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetIpv6MulticastHopsResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxGetIpv6MulticastHopsResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxGetIpv6MulticastHopsResponse{})
+
+func (msg *streamSocketWithCtxGetIpv6MulticastHopsResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxGetIpv6MulticastHopsResponse
+}
+
+type streamSocketWithCtxSetIpv6MulticastLoopbackRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetIpv6MulticastLoopbackRequest = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetIpv6MulticastLoopbackRequest{})
+
+func (msg *streamSocketWithCtxSetIpv6MulticastLoopbackRequest) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetIpv6MulticastLoopbackRequest
+}
+
+type streamSocketWithCtxSetIpv6MulticastLoopbackResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetIpv6MulticastLoopbackResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetIpv6MulticastLoopbackResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetIpv6MulticastLoopbackResponse{})
+
+func (msg *streamSocketWithCtxSetIpv6MulticastLoopbackResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetIpv6MulticastLoopbackResponse
+}
+
+type streamSocketWithCtxGetIpv6MulticastLoopbackResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetIpv6MulticastLoopbackResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxGetIpv6MulticastLoopbackResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxGetIpv6MulticastLoopbackResponse{})
+
+func (msg *streamSocketWithCtxGetIpv6MulticastLoopbackResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxGetIpv6MulticastLoopbackResponse
+}
+
+type streamSocketWithCtxSetIpv6OnlyRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetIpv6OnlyRequest = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetIpv6OnlyRequest{})
+
+func (msg *streamSocketWithCtxSetIpv6OnlyRequest) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetIpv6OnlyRequest
+}
+
+type streamSocketWithCtxSetIpv6OnlyResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetIpv6OnlyResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetIpv6OnlyResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetIpv6OnlyResponse{})
+
+func (msg *streamSocketWithCtxSetIpv6OnlyResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetIpv6OnlyResponse
+}
+
+type streamSocketWithCtxGetIpv6OnlyResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetIpv6OnlyResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxGetIpv6OnlyResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxGetIpv6OnlyResponse{})
+
+func (msg *streamSocketWithCtxGetIpv6OnlyResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxGetIpv6OnlyResponse
+}
+
+type streamSocketWithCtxSetIpv6ReceiveTrafficClassRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetIpv6ReceiveTrafficClassRequest = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetIpv6ReceiveTrafficClassRequest{})
+
+func (msg *streamSocketWithCtxSetIpv6ReceiveTrafficClassRequest) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetIpv6ReceiveTrafficClassRequest
+}
+
+type streamSocketWithCtxSetIpv6ReceiveTrafficClassResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetIpv6ReceiveTrafficClassResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetIpv6ReceiveTrafficClassResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetIpv6ReceiveTrafficClassResponse{})
+
+func (msg *streamSocketWithCtxSetIpv6ReceiveTrafficClassResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetIpv6ReceiveTrafficClassResponse
+}
+
+type streamSocketWithCtxGetIpv6ReceiveTrafficClassResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetIpv6ReceiveTrafficClassResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxGetIpv6ReceiveTrafficClassResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxGetIpv6ReceiveTrafficClassResponse{})
+
+func (msg *streamSocketWithCtxGetIpv6ReceiveTrafficClassResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxGetIpv6ReceiveTrafficClassResponse
+}
+
+type streamSocketWithCtxSetIpv6TrafficClassRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Value OptionalUint8 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetIpv6TrafficClassRequest = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetIpv6TrafficClassRequest{})
+
+func (msg *streamSocketWithCtxSetIpv6TrafficClassRequest) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetIpv6TrafficClassRequest
+}
+
+type streamSocketWithCtxSetIpv6TrafficClassResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketSetIpv6TrafficClassResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetIpv6TrafficClassResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetIpv6TrafficClassResponse{})
+
+func (msg *streamSocketWithCtxSetIpv6TrafficClassResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetIpv6TrafficClassResponse
+}
+
+type streamSocketWithCtxGetIpv6TrafficClassResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result BaseSocketGetIpv6TrafficClassResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxGetIpv6TrafficClassResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxGetIpv6TrafficClassResponse{})
+
+func (msg *streamSocketWithCtxGetIpv6TrafficClassResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxGetIpv6TrafficClassResponse
+}
+
+type streamSocketWithCtxListenRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Backlog int16 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxListenRequest = _bindings.CreateLazyMarshaler(streamSocketWithCtxListenRequest{})
+
+func (msg *streamSocketWithCtxListenRequest) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxListenRequest
+}
+
+type streamSocketWithCtxListenResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result StreamSocketListenResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxListenResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxListenResponse{})
+
+func (msg *streamSocketWithCtxListenResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxListenResponse
+}
+
+type streamSocketWithCtxAcceptRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ WantAddr bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxAcceptRequest = _bindings.CreateLazyMarshaler(streamSocketWithCtxAcceptRequest{})
+
+func (msg *streamSocketWithCtxAcceptRequest) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxAcceptRequest
+}
+
+type streamSocketWithCtxAcceptResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result StreamSocketAcceptResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxAcceptResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxAcceptResponse{})
+
+func (msg *streamSocketWithCtxAcceptResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxAcceptResponse
+}
+
+type streamSocketWithCtxGetInfoResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result StreamSocketGetInfoResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxGetInfoResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxGetInfoResponse{})
+
+func (msg *streamSocketWithCtxGetInfoResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxGetInfoResponse
+}
+
+type streamSocketWithCtxSetTcpNoDelayRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetTcpNoDelayRequest = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetTcpNoDelayRequest{})
+
+func (msg *streamSocketWithCtxSetTcpNoDelayRequest) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetTcpNoDelayRequest
+}
+
+type streamSocketWithCtxSetTcpNoDelayResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result StreamSocketSetTcpNoDelayResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetTcpNoDelayResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetTcpNoDelayResponse{})
+
+func (msg *streamSocketWithCtxSetTcpNoDelayResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetTcpNoDelayResponse
+}
+
+type streamSocketWithCtxGetTcpNoDelayResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result StreamSocketGetTcpNoDelayResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxGetTcpNoDelayResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxGetTcpNoDelayResponse{})
+
+func (msg *streamSocketWithCtxGetTcpNoDelayResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxGetTcpNoDelayResponse
+}
+
+type streamSocketWithCtxSetTcpMaxSegmentRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ ValueBytes uint32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetTcpMaxSegmentRequest = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetTcpMaxSegmentRequest{})
+
+func (msg *streamSocketWithCtxSetTcpMaxSegmentRequest) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetTcpMaxSegmentRequest
+}
+
+type streamSocketWithCtxSetTcpMaxSegmentResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result StreamSocketSetTcpMaxSegmentResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetTcpMaxSegmentResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetTcpMaxSegmentResponse{})
+
+func (msg *streamSocketWithCtxSetTcpMaxSegmentResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetTcpMaxSegmentResponse
+}
+
+type streamSocketWithCtxGetTcpMaxSegmentResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result StreamSocketGetTcpMaxSegmentResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxGetTcpMaxSegmentResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxGetTcpMaxSegmentResponse{})
+
+func (msg *streamSocketWithCtxGetTcpMaxSegmentResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxGetTcpMaxSegmentResponse
+}
+
+type streamSocketWithCtxSetTcpCorkRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetTcpCorkRequest = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetTcpCorkRequest{})
+
+func (msg *streamSocketWithCtxSetTcpCorkRequest) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetTcpCorkRequest
+}
+
+type streamSocketWithCtxSetTcpCorkResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result StreamSocketSetTcpCorkResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetTcpCorkResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetTcpCorkResponse{})
+
+func (msg *streamSocketWithCtxSetTcpCorkResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetTcpCorkResponse
+}
+
+type streamSocketWithCtxGetTcpCorkResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result StreamSocketGetTcpCorkResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxGetTcpCorkResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxGetTcpCorkResponse{})
+
+func (msg *streamSocketWithCtxGetTcpCorkResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxGetTcpCorkResponse
+}
+
+type streamSocketWithCtxSetTcpKeepAliveIdleRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ ValueSecs uint32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetTcpKeepAliveIdleRequest = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetTcpKeepAliveIdleRequest{})
+
+func (msg *streamSocketWithCtxSetTcpKeepAliveIdleRequest) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetTcpKeepAliveIdleRequest
+}
+
+type streamSocketWithCtxSetTcpKeepAliveIdleResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result StreamSocketSetTcpKeepAliveIdleResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetTcpKeepAliveIdleResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetTcpKeepAliveIdleResponse{})
+
+func (msg *streamSocketWithCtxSetTcpKeepAliveIdleResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetTcpKeepAliveIdleResponse
+}
+
+type streamSocketWithCtxGetTcpKeepAliveIdleResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result StreamSocketGetTcpKeepAliveIdleResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxGetTcpKeepAliveIdleResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxGetTcpKeepAliveIdleResponse{})
+
+func (msg *streamSocketWithCtxGetTcpKeepAliveIdleResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxGetTcpKeepAliveIdleResponse
+}
+
+type streamSocketWithCtxSetTcpKeepAliveIntervalRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ ValueSecs uint32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetTcpKeepAliveIntervalRequest = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetTcpKeepAliveIntervalRequest{})
+
+func (msg *streamSocketWithCtxSetTcpKeepAliveIntervalRequest) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetTcpKeepAliveIntervalRequest
+}
+
+type streamSocketWithCtxSetTcpKeepAliveIntervalResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result StreamSocketSetTcpKeepAliveIntervalResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetTcpKeepAliveIntervalResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetTcpKeepAliveIntervalResponse{})
+
+func (msg *streamSocketWithCtxSetTcpKeepAliveIntervalResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetTcpKeepAliveIntervalResponse
+}
+
+type streamSocketWithCtxGetTcpKeepAliveIntervalResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result StreamSocketGetTcpKeepAliveIntervalResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxGetTcpKeepAliveIntervalResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxGetTcpKeepAliveIntervalResponse{})
+
+func (msg *streamSocketWithCtxGetTcpKeepAliveIntervalResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxGetTcpKeepAliveIntervalResponse
+}
+
+type streamSocketWithCtxSetTcpKeepAliveCountRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value uint32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetTcpKeepAliveCountRequest = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetTcpKeepAliveCountRequest{})
+
+func (msg *streamSocketWithCtxSetTcpKeepAliveCountRequest) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetTcpKeepAliveCountRequest
+}
+
+type streamSocketWithCtxSetTcpKeepAliveCountResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result StreamSocketSetTcpKeepAliveCountResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetTcpKeepAliveCountResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetTcpKeepAliveCountResponse{})
+
+func (msg *streamSocketWithCtxSetTcpKeepAliveCountResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetTcpKeepAliveCountResponse
+}
+
+type streamSocketWithCtxGetTcpKeepAliveCountResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result StreamSocketGetTcpKeepAliveCountResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxGetTcpKeepAliveCountResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxGetTcpKeepAliveCountResponse{})
+
+func (msg *streamSocketWithCtxGetTcpKeepAliveCountResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxGetTcpKeepAliveCountResponse
+}
+
+type streamSocketWithCtxSetTcpSynCountRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value uint32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetTcpSynCountRequest = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetTcpSynCountRequest{})
+
+func (msg *streamSocketWithCtxSetTcpSynCountRequest) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetTcpSynCountRequest
+}
+
+type streamSocketWithCtxSetTcpSynCountResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result StreamSocketSetTcpSynCountResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetTcpSynCountResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetTcpSynCountResponse{})
+
+func (msg *streamSocketWithCtxSetTcpSynCountResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetTcpSynCountResponse
+}
+
+type streamSocketWithCtxGetTcpSynCountResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result StreamSocketGetTcpSynCountResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxGetTcpSynCountResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxGetTcpSynCountResponse{})
+
+func (msg *streamSocketWithCtxGetTcpSynCountResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxGetTcpSynCountResponse
+}
+
+type streamSocketWithCtxSetTcpLingerRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ ValueSecs OptionalUint32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetTcpLingerRequest = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetTcpLingerRequest{})
+
+func (msg *streamSocketWithCtxSetTcpLingerRequest) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetTcpLingerRequest
+}
+
+type streamSocketWithCtxSetTcpLingerResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result StreamSocketSetTcpLingerResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetTcpLingerResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetTcpLingerResponse{})
+
+func (msg *streamSocketWithCtxSetTcpLingerResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetTcpLingerResponse
+}
+
+type streamSocketWithCtxGetTcpLingerResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result StreamSocketGetTcpLingerResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxGetTcpLingerResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxGetTcpLingerResponse{})
+
+func (msg *streamSocketWithCtxGetTcpLingerResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxGetTcpLingerResponse
+}
+
+type streamSocketWithCtxSetTcpDeferAcceptRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ ValueSecs uint32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetTcpDeferAcceptRequest = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetTcpDeferAcceptRequest{})
+
+func (msg *streamSocketWithCtxSetTcpDeferAcceptRequest) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetTcpDeferAcceptRequest
+}
+
+type streamSocketWithCtxSetTcpDeferAcceptResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result StreamSocketSetTcpDeferAcceptResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetTcpDeferAcceptResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetTcpDeferAcceptResponse{})
+
+func (msg *streamSocketWithCtxSetTcpDeferAcceptResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetTcpDeferAcceptResponse
+}
+
+type streamSocketWithCtxGetTcpDeferAcceptResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result StreamSocketGetTcpDeferAcceptResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxGetTcpDeferAcceptResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxGetTcpDeferAcceptResponse{})
+
+func (msg *streamSocketWithCtxGetTcpDeferAcceptResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxGetTcpDeferAcceptResponse
+}
+
+type streamSocketWithCtxSetTcpWindowClampRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value uint32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetTcpWindowClampRequest = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetTcpWindowClampRequest{})
+
+func (msg *streamSocketWithCtxSetTcpWindowClampRequest) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetTcpWindowClampRequest
+}
+
+type streamSocketWithCtxSetTcpWindowClampResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result StreamSocketSetTcpWindowClampResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetTcpWindowClampResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetTcpWindowClampResponse{})
+
+func (msg *streamSocketWithCtxSetTcpWindowClampResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetTcpWindowClampResponse
+}
+
+type streamSocketWithCtxGetTcpWindowClampResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result StreamSocketGetTcpWindowClampResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxGetTcpWindowClampResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxGetTcpWindowClampResponse{})
+
+func (msg *streamSocketWithCtxGetTcpWindowClampResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxGetTcpWindowClampResponse
+}
+
+type streamSocketWithCtxGetTcpInfoResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result StreamSocketGetTcpInfoResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxGetTcpInfoResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxGetTcpInfoResponse{})
+
+func (msg *streamSocketWithCtxGetTcpInfoResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxGetTcpInfoResponse
+}
+
+type streamSocketWithCtxSetTcpQuickAckRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value bool `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetTcpQuickAckRequest = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetTcpQuickAckRequest{})
+
+func (msg *streamSocketWithCtxSetTcpQuickAckRequest) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetTcpQuickAckRequest
+}
+
+type streamSocketWithCtxSetTcpQuickAckResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result StreamSocketSetTcpQuickAckResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetTcpQuickAckResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetTcpQuickAckResponse{})
+
+func (msg *streamSocketWithCtxSetTcpQuickAckResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetTcpQuickAckResponse
+}
+
+type streamSocketWithCtxGetTcpQuickAckResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result StreamSocketGetTcpQuickAckResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxGetTcpQuickAckResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxGetTcpQuickAckResponse{})
+
+func (msg *streamSocketWithCtxGetTcpQuickAckResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxGetTcpQuickAckResponse
+}
+
+type streamSocketWithCtxSetTcpCongestionRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Value TcpCongestionControl `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetTcpCongestionRequest = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetTcpCongestionRequest{})
+
+func (msg *streamSocketWithCtxSetTcpCongestionRequest) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetTcpCongestionRequest
+}
+
+type streamSocketWithCtxSetTcpCongestionResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result StreamSocketSetTcpCongestionResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetTcpCongestionResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetTcpCongestionResponse{})
+
+func (msg *streamSocketWithCtxSetTcpCongestionResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetTcpCongestionResponse
+}
+
+type streamSocketWithCtxGetTcpCongestionResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result StreamSocketGetTcpCongestionResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxGetTcpCongestionResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxGetTcpCongestionResponse{})
+
+func (msg *streamSocketWithCtxGetTcpCongestionResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxGetTcpCongestionResponse
+}
+
+type streamSocketWithCtxSetTcpUserTimeoutRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ ValueMillis uint32 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetTcpUserTimeoutRequest = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetTcpUserTimeoutRequest{})
+
+func (msg *streamSocketWithCtxSetTcpUserTimeoutRequest) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetTcpUserTimeoutRequest
+}
+
+type streamSocketWithCtxSetTcpUserTimeoutResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result StreamSocketSetTcpUserTimeoutResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxSetTcpUserTimeoutResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxSetTcpUserTimeoutResponse{})
+
+func (msg *streamSocketWithCtxSetTcpUserTimeoutResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxSetTcpUserTimeoutResponse
+}
+
+type streamSocketWithCtxGetTcpUserTimeoutResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result StreamSocketGetTcpUserTimeoutResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mstreamSocketWithCtxGetTcpUserTimeoutResponse = _bindings.CreateLazyMarshaler(streamSocketWithCtxGetTcpUserTimeoutResponse{})
+
+func (msg *streamSocketWithCtxGetTcpUserTimeoutResponse) Marshaler() _bindings.Marshaler {
+ return _mstreamSocketWithCtxGetTcpUserTimeoutResponse
+}
+
+type providerWithCtxStreamSocketRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Domain Domain `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Proto StreamSocketProtocol `fidl_offset_v1:"4" fidl_offset_v2:"4"`
+}
+
+var _mproviderWithCtxStreamSocketRequest = _bindings.CreateLazyMarshaler(providerWithCtxStreamSocketRequest{})
+
+func (msg *providerWithCtxStreamSocketRequest) Marshaler() _bindings.Marshaler {
+ return _mproviderWithCtxStreamSocketRequest
+}
+
+type providerWithCtxStreamSocketResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result ProviderStreamSocketResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mproviderWithCtxStreamSocketResponse = _bindings.CreateLazyMarshaler(providerWithCtxStreamSocketResponse{})
+
+func (msg *providerWithCtxStreamSocketResponse) Marshaler() _bindings.Marshaler {
+ return _mproviderWithCtxStreamSocketResponse
+}
+
+type providerWithCtxDatagramSocketRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Domain Domain `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+ Proto DatagramSocketProtocol `fidl_offset_v1:"4" fidl_offset_v2:"4"`
+}
+
+var _mproviderWithCtxDatagramSocketRequest = _bindings.CreateLazyMarshaler(providerWithCtxDatagramSocketRequest{})
+
+func (msg *providerWithCtxDatagramSocketRequest) Marshaler() _bindings.Marshaler {
+ return _mproviderWithCtxDatagramSocketRequest
+}
+
+type providerWithCtxDatagramSocketResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result ProviderDatagramSocketResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mproviderWithCtxDatagramSocketResponse = _bindings.CreateLazyMarshaler(providerWithCtxDatagramSocketResponse{})
+
+func (msg *providerWithCtxDatagramSocketResponse) Marshaler() _bindings.Marshaler {
+ return _mproviderWithCtxDatagramSocketResponse
+}
+
+type providerWithCtxInterfaceIndexToNameRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"8" fidl_alignment_v1:"8" fidl_size_v2:"8" fidl_alignment_v2:"8"`
+ Index uint64 `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mproviderWithCtxInterfaceIndexToNameRequest = _bindings.CreateLazyMarshaler(providerWithCtxInterfaceIndexToNameRequest{})
+
+func (msg *providerWithCtxInterfaceIndexToNameRequest) Marshaler() _bindings.Marshaler {
+ return _mproviderWithCtxInterfaceIndexToNameRequest
+}
+
+type providerWithCtxInterfaceIndexToNameResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result ProviderInterfaceIndexToNameResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mproviderWithCtxInterfaceIndexToNameResponse = _bindings.CreateLazyMarshaler(providerWithCtxInterfaceIndexToNameResponse{})
+
+func (msg *providerWithCtxInterfaceIndexToNameResponse) Marshaler() _bindings.Marshaler {
+ return _mproviderWithCtxInterfaceIndexToNameResponse
+}
+
+type providerWithCtxInterfaceNameToIndexRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Name string `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"15"`
+}
+
+var _mproviderWithCtxInterfaceNameToIndexRequest = _bindings.CreateLazyMarshaler(providerWithCtxInterfaceNameToIndexRequest{})
+
+func (msg *providerWithCtxInterfaceNameToIndexRequest) Marshaler() _bindings.Marshaler {
+ return _mproviderWithCtxInterfaceNameToIndexRequest
+}
+
+type providerWithCtxInterfaceNameToIndexResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result ProviderInterfaceNameToIndexResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mproviderWithCtxInterfaceNameToIndexResponse = _bindings.CreateLazyMarshaler(providerWithCtxInterfaceNameToIndexResponse{})
+
+func (msg *providerWithCtxInterfaceNameToIndexResponse) Marshaler() _bindings.Marshaler {
+ return _mproviderWithCtxInterfaceNameToIndexResponse
+}
+
+type providerWithCtxInterfaceNameToFlagsRequest struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Name string `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:"15"`
+}
+
+var _mproviderWithCtxInterfaceNameToFlagsRequest = _bindings.CreateLazyMarshaler(providerWithCtxInterfaceNameToFlagsRequest{})
+
+func (msg *providerWithCtxInterfaceNameToFlagsRequest) Marshaler() _bindings.Marshaler {
+ return _mproviderWithCtxInterfaceNameToFlagsRequest
+}
+
+type providerWithCtxInterfaceNameToFlagsResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Result ProviderInterfaceNameToFlagsResult `fidl_offset_v1:"0" fidl_offset_v2:"0"`
+}
+
+var _mproviderWithCtxInterfaceNameToFlagsResponse = _bindings.CreateLazyMarshaler(providerWithCtxInterfaceNameToFlagsResponse{})
+
+func (msg *providerWithCtxInterfaceNameToFlagsResponse) Marshaler() _bindings.Marshaler {
+ return _mproviderWithCtxInterfaceNameToFlagsResponse
+}
+
+type providerWithCtxGetInterfaceAddressesResponse struct {
+ _ struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8"`
+ Interfaces []InterfaceAddresses `fidl_offset_v1:"0" fidl_offset_v2:"0" fidl_bounds:""`
+}
+
+var _mproviderWithCtxGetInterfaceAddressesResponse = _bindings.CreateLazyMarshaler(providerWithCtxGetInterfaceAddressesResponse{})
+
+func (msg *providerWithCtxGetInterfaceAddressesResponse) Marshaler() _bindings.Marshaler {
+ return _mproviderWithCtxGetInterfaceAddressesResponse
+}
+
+type I_baseSocketBindResultTag uint64
+
+const (
+ BaseSocketBindResultResponse = 1 // 0x00000001
+ BaseSocketBindResultErr = 2 // 0x00000002
+)
+
+type BaseSocketBindResult struct {
+ I_baseSocketBindResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketBindResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketBindResult) reset() {
+ switch _m.I_baseSocketBindResultTag {
+ case 1:
+ var _zeroed BaseSocketBindResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketBindResult) Which() I_baseSocketBindResultTag {
+ return _m.I_baseSocketBindResultTag
+}
+
+func (_m *BaseSocketBindResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketBindResultTag)
+}
+
+func (_m *BaseSocketBindResult) SetResponse(response BaseSocketBindResponse) {
+ _m.reset()
+ _m.I_baseSocketBindResultTag = BaseSocketBindResultResponse
+ _m.Response = response
+}
+
+func BaseSocketBindResultWithResponse(response BaseSocketBindResponse) BaseSocketBindResult {
+ var _u BaseSocketBindResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketBindResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketBindResultTag = BaseSocketBindResultErr
+ _m.Err = err
+}
+
+func BaseSocketBindResultWithErr(err fuchsiaposix.Errno) BaseSocketBindResult {
+ var _u BaseSocketBindResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketConnectResultTag uint64
+
+const (
+ BaseSocketConnectResultResponse = 1 // 0x00000001
+ BaseSocketConnectResultErr = 2 // 0x00000002
+)
+
+type BaseSocketConnectResult struct {
+ I_baseSocketConnectResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketConnectResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketConnectResult) reset() {
+ switch _m.I_baseSocketConnectResultTag {
+ case 1:
+ var _zeroed BaseSocketConnectResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketConnectResult) Which() I_baseSocketConnectResultTag {
+ return _m.I_baseSocketConnectResultTag
+}
+
+func (_m *BaseSocketConnectResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketConnectResultTag)
+}
+
+func (_m *BaseSocketConnectResult) SetResponse(response BaseSocketConnectResponse) {
+ _m.reset()
+ _m.I_baseSocketConnectResultTag = BaseSocketConnectResultResponse
+ _m.Response = response
+}
+
+func BaseSocketConnectResultWithResponse(response BaseSocketConnectResponse) BaseSocketConnectResult {
+ var _u BaseSocketConnectResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketConnectResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketConnectResultTag = BaseSocketConnectResultErr
+ _m.Err = err
+}
+
+func BaseSocketConnectResultWithErr(err fuchsiaposix.Errno) BaseSocketConnectResult {
+ var _u BaseSocketConnectResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketDisconnectResultTag uint64
+
+const (
+ BaseSocketDisconnectResultResponse = 1 // 0x00000001
+ BaseSocketDisconnectResultErr = 2 // 0x00000002
+)
+
+type BaseSocketDisconnectResult struct {
+ I_baseSocketDisconnectResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketDisconnectResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketDisconnectResult) reset() {
+ switch _m.I_baseSocketDisconnectResultTag {
+ case 1:
+ var _zeroed BaseSocketDisconnectResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketDisconnectResult) Which() I_baseSocketDisconnectResultTag {
+ return _m.I_baseSocketDisconnectResultTag
+}
+
+func (_m *BaseSocketDisconnectResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketDisconnectResultTag)
+}
+
+func (_m *BaseSocketDisconnectResult) SetResponse(response BaseSocketDisconnectResponse) {
+ _m.reset()
+ _m.I_baseSocketDisconnectResultTag = BaseSocketDisconnectResultResponse
+ _m.Response = response
+}
+
+func BaseSocketDisconnectResultWithResponse(response BaseSocketDisconnectResponse) BaseSocketDisconnectResult {
+ var _u BaseSocketDisconnectResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketDisconnectResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketDisconnectResultTag = BaseSocketDisconnectResultErr
+ _m.Err = err
+}
+
+func BaseSocketDisconnectResultWithErr(err fuchsiaposix.Errno) BaseSocketDisconnectResult {
+ var _u BaseSocketDisconnectResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketGetSockNameResultTag uint64
+
+const (
+ BaseSocketGetSockNameResultResponse = 1 // 0x00000001
+ BaseSocketGetSockNameResultErr = 2 // 0x00000002
+)
+
+type BaseSocketGetSockNameResult struct {
+ I_baseSocketGetSockNameResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketGetSockNameResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketGetSockNameResult) reset() {
+ switch _m.I_baseSocketGetSockNameResultTag {
+ case 1:
+ var _zeroed BaseSocketGetSockNameResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketGetSockNameResult) Which() I_baseSocketGetSockNameResultTag {
+ return _m.I_baseSocketGetSockNameResultTag
+}
+
+func (_m *BaseSocketGetSockNameResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketGetSockNameResultTag)
+}
+
+func (_m *BaseSocketGetSockNameResult) SetResponse(response BaseSocketGetSockNameResponse) {
+ _m.reset()
+ _m.I_baseSocketGetSockNameResultTag = BaseSocketGetSockNameResultResponse
+ _m.Response = response
+}
+
+func BaseSocketGetSockNameResultWithResponse(response BaseSocketGetSockNameResponse) BaseSocketGetSockNameResult {
+ var _u BaseSocketGetSockNameResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketGetSockNameResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketGetSockNameResultTag = BaseSocketGetSockNameResultErr
+ _m.Err = err
+}
+
+func BaseSocketGetSockNameResultWithErr(err fuchsiaposix.Errno) BaseSocketGetSockNameResult {
+ var _u BaseSocketGetSockNameResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketGetPeerNameResultTag uint64
+
+const (
+ BaseSocketGetPeerNameResultResponse = 1 // 0x00000001
+ BaseSocketGetPeerNameResultErr = 2 // 0x00000002
+)
+
+type BaseSocketGetPeerNameResult struct {
+ I_baseSocketGetPeerNameResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketGetPeerNameResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketGetPeerNameResult) reset() {
+ switch _m.I_baseSocketGetPeerNameResultTag {
+ case 1:
+ var _zeroed BaseSocketGetPeerNameResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketGetPeerNameResult) Which() I_baseSocketGetPeerNameResultTag {
+ return _m.I_baseSocketGetPeerNameResultTag
+}
+
+func (_m *BaseSocketGetPeerNameResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketGetPeerNameResultTag)
+}
+
+func (_m *BaseSocketGetPeerNameResult) SetResponse(response BaseSocketGetPeerNameResponse) {
+ _m.reset()
+ _m.I_baseSocketGetPeerNameResultTag = BaseSocketGetPeerNameResultResponse
+ _m.Response = response
+}
+
+func BaseSocketGetPeerNameResultWithResponse(response BaseSocketGetPeerNameResponse) BaseSocketGetPeerNameResult {
+ var _u BaseSocketGetPeerNameResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketGetPeerNameResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketGetPeerNameResultTag = BaseSocketGetPeerNameResultErr
+ _m.Err = err
+}
+
+func BaseSocketGetPeerNameResultWithErr(err fuchsiaposix.Errno) BaseSocketGetPeerNameResult {
+ var _u BaseSocketGetPeerNameResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketShutdown2ResultTag uint64
+
+const (
+ BaseSocketShutdown2ResultResponse = 1 // 0x00000001
+ BaseSocketShutdown2ResultErr = 2 // 0x00000002
+)
+
+type BaseSocketShutdown2Result struct {
+ I_baseSocketShutdown2ResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketShutdown2Response `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketShutdown2Result) reset() {
+ switch _m.I_baseSocketShutdown2ResultTag {
+ case 1:
+ var _zeroed BaseSocketShutdown2Response
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketShutdown2Result) Which() I_baseSocketShutdown2ResultTag {
+ return _m.I_baseSocketShutdown2ResultTag
+}
+
+func (_m *BaseSocketShutdown2Result) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketShutdown2ResultTag)
+}
+
+func (_m *BaseSocketShutdown2Result) SetResponse(response BaseSocketShutdown2Response) {
+ _m.reset()
+ _m.I_baseSocketShutdown2ResultTag = BaseSocketShutdown2ResultResponse
+ _m.Response = response
+}
+
+func BaseSocketShutdown2ResultWithResponse(response BaseSocketShutdown2Response) BaseSocketShutdown2Result {
+ var _u BaseSocketShutdown2Result
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketShutdown2Result) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketShutdown2ResultTag = BaseSocketShutdown2ResultErr
+ _m.Err = err
+}
+
+func BaseSocketShutdown2ResultWithErr(err fuchsiaposix.Errno) BaseSocketShutdown2Result {
+ var _u BaseSocketShutdown2Result
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketSetReuseAddressResultTag uint64
+
+const (
+ BaseSocketSetReuseAddressResultResponse = 1 // 0x00000001
+ BaseSocketSetReuseAddressResultErr = 2 // 0x00000002
+)
+
+type BaseSocketSetReuseAddressResult struct {
+ I_baseSocketSetReuseAddressResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketSetReuseAddressResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketSetReuseAddressResult) reset() {
+ switch _m.I_baseSocketSetReuseAddressResultTag {
+ case 1:
+ var _zeroed BaseSocketSetReuseAddressResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketSetReuseAddressResult) Which() I_baseSocketSetReuseAddressResultTag {
+ return _m.I_baseSocketSetReuseAddressResultTag
+}
+
+func (_m *BaseSocketSetReuseAddressResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketSetReuseAddressResultTag)
+}
+
+func (_m *BaseSocketSetReuseAddressResult) SetResponse(response BaseSocketSetReuseAddressResponse) {
+ _m.reset()
+ _m.I_baseSocketSetReuseAddressResultTag = BaseSocketSetReuseAddressResultResponse
+ _m.Response = response
+}
+
+func BaseSocketSetReuseAddressResultWithResponse(response BaseSocketSetReuseAddressResponse) BaseSocketSetReuseAddressResult {
+ var _u BaseSocketSetReuseAddressResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketSetReuseAddressResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketSetReuseAddressResultTag = BaseSocketSetReuseAddressResultErr
+ _m.Err = err
+}
+
+func BaseSocketSetReuseAddressResultWithErr(err fuchsiaposix.Errno) BaseSocketSetReuseAddressResult {
+ var _u BaseSocketSetReuseAddressResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketGetReuseAddressResultTag uint64
+
+const (
+ BaseSocketGetReuseAddressResultResponse = 1 // 0x00000001
+ BaseSocketGetReuseAddressResultErr = 2 // 0x00000002
+)
+
+type BaseSocketGetReuseAddressResult struct {
+ I_baseSocketGetReuseAddressResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketGetReuseAddressResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketGetReuseAddressResult) reset() {
+ switch _m.I_baseSocketGetReuseAddressResultTag {
+ case 1:
+ var _zeroed BaseSocketGetReuseAddressResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketGetReuseAddressResult) Which() I_baseSocketGetReuseAddressResultTag {
+ return _m.I_baseSocketGetReuseAddressResultTag
+}
+
+func (_m *BaseSocketGetReuseAddressResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketGetReuseAddressResultTag)
+}
+
+func (_m *BaseSocketGetReuseAddressResult) SetResponse(response BaseSocketGetReuseAddressResponse) {
+ _m.reset()
+ _m.I_baseSocketGetReuseAddressResultTag = BaseSocketGetReuseAddressResultResponse
+ _m.Response = response
+}
+
+func BaseSocketGetReuseAddressResultWithResponse(response BaseSocketGetReuseAddressResponse) BaseSocketGetReuseAddressResult {
+ var _u BaseSocketGetReuseAddressResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketGetReuseAddressResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketGetReuseAddressResultTag = BaseSocketGetReuseAddressResultErr
+ _m.Err = err
+}
+
+func BaseSocketGetReuseAddressResultWithErr(err fuchsiaposix.Errno) BaseSocketGetReuseAddressResult {
+ var _u BaseSocketGetReuseAddressResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketGetErrorResultTag uint64
+
+const (
+ BaseSocketGetErrorResultResponse = 1 // 0x00000001
+ BaseSocketGetErrorResultErr = 2 // 0x00000002
+)
+
+type BaseSocketGetErrorResult struct {
+ I_baseSocketGetErrorResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketGetErrorResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketGetErrorResult) reset() {
+ switch _m.I_baseSocketGetErrorResultTag {
+ case 1:
+ var _zeroed BaseSocketGetErrorResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketGetErrorResult) Which() I_baseSocketGetErrorResultTag {
+ return _m.I_baseSocketGetErrorResultTag
+}
+
+func (_m *BaseSocketGetErrorResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketGetErrorResultTag)
+}
+
+func (_m *BaseSocketGetErrorResult) SetResponse(response BaseSocketGetErrorResponse) {
+ _m.reset()
+ _m.I_baseSocketGetErrorResultTag = BaseSocketGetErrorResultResponse
+ _m.Response = response
+}
+
+func BaseSocketGetErrorResultWithResponse(response BaseSocketGetErrorResponse) BaseSocketGetErrorResult {
+ var _u BaseSocketGetErrorResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketGetErrorResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketGetErrorResultTag = BaseSocketGetErrorResultErr
+ _m.Err = err
+}
+
+func BaseSocketGetErrorResultWithErr(err fuchsiaposix.Errno) BaseSocketGetErrorResult {
+ var _u BaseSocketGetErrorResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketSetBroadcastResultTag uint64
+
+const (
+ BaseSocketSetBroadcastResultResponse = 1 // 0x00000001
+ BaseSocketSetBroadcastResultErr = 2 // 0x00000002
+)
+
+type BaseSocketSetBroadcastResult struct {
+ I_baseSocketSetBroadcastResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketSetBroadcastResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketSetBroadcastResult) reset() {
+ switch _m.I_baseSocketSetBroadcastResultTag {
+ case 1:
+ var _zeroed BaseSocketSetBroadcastResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketSetBroadcastResult) Which() I_baseSocketSetBroadcastResultTag {
+ return _m.I_baseSocketSetBroadcastResultTag
+}
+
+func (_m *BaseSocketSetBroadcastResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketSetBroadcastResultTag)
+}
+
+func (_m *BaseSocketSetBroadcastResult) SetResponse(response BaseSocketSetBroadcastResponse) {
+ _m.reset()
+ _m.I_baseSocketSetBroadcastResultTag = BaseSocketSetBroadcastResultResponse
+ _m.Response = response
+}
+
+func BaseSocketSetBroadcastResultWithResponse(response BaseSocketSetBroadcastResponse) BaseSocketSetBroadcastResult {
+ var _u BaseSocketSetBroadcastResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketSetBroadcastResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketSetBroadcastResultTag = BaseSocketSetBroadcastResultErr
+ _m.Err = err
+}
+
+func BaseSocketSetBroadcastResultWithErr(err fuchsiaposix.Errno) BaseSocketSetBroadcastResult {
+ var _u BaseSocketSetBroadcastResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketGetBroadcastResultTag uint64
+
+const (
+ BaseSocketGetBroadcastResultResponse = 1 // 0x00000001
+ BaseSocketGetBroadcastResultErr = 2 // 0x00000002
+)
+
+type BaseSocketGetBroadcastResult struct {
+ I_baseSocketGetBroadcastResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketGetBroadcastResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketGetBroadcastResult) reset() {
+ switch _m.I_baseSocketGetBroadcastResultTag {
+ case 1:
+ var _zeroed BaseSocketGetBroadcastResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketGetBroadcastResult) Which() I_baseSocketGetBroadcastResultTag {
+ return _m.I_baseSocketGetBroadcastResultTag
+}
+
+func (_m *BaseSocketGetBroadcastResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketGetBroadcastResultTag)
+}
+
+func (_m *BaseSocketGetBroadcastResult) SetResponse(response BaseSocketGetBroadcastResponse) {
+ _m.reset()
+ _m.I_baseSocketGetBroadcastResultTag = BaseSocketGetBroadcastResultResponse
+ _m.Response = response
+}
+
+func BaseSocketGetBroadcastResultWithResponse(response BaseSocketGetBroadcastResponse) BaseSocketGetBroadcastResult {
+ var _u BaseSocketGetBroadcastResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketGetBroadcastResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketGetBroadcastResultTag = BaseSocketGetBroadcastResultErr
+ _m.Err = err
+}
+
+func BaseSocketGetBroadcastResultWithErr(err fuchsiaposix.Errno) BaseSocketGetBroadcastResult {
+ var _u BaseSocketGetBroadcastResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketSetSendBufferResultTag uint64
+
+const (
+ BaseSocketSetSendBufferResultResponse = 1 // 0x00000001
+ BaseSocketSetSendBufferResultErr = 2 // 0x00000002
+)
+
+type BaseSocketSetSendBufferResult struct {
+ I_baseSocketSetSendBufferResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketSetSendBufferResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketSetSendBufferResult) reset() {
+ switch _m.I_baseSocketSetSendBufferResultTag {
+ case 1:
+ var _zeroed BaseSocketSetSendBufferResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketSetSendBufferResult) Which() I_baseSocketSetSendBufferResultTag {
+ return _m.I_baseSocketSetSendBufferResultTag
+}
+
+func (_m *BaseSocketSetSendBufferResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketSetSendBufferResultTag)
+}
+
+func (_m *BaseSocketSetSendBufferResult) SetResponse(response BaseSocketSetSendBufferResponse) {
+ _m.reset()
+ _m.I_baseSocketSetSendBufferResultTag = BaseSocketSetSendBufferResultResponse
+ _m.Response = response
+}
+
+func BaseSocketSetSendBufferResultWithResponse(response BaseSocketSetSendBufferResponse) BaseSocketSetSendBufferResult {
+ var _u BaseSocketSetSendBufferResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketSetSendBufferResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketSetSendBufferResultTag = BaseSocketSetSendBufferResultErr
+ _m.Err = err
+}
+
+func BaseSocketSetSendBufferResultWithErr(err fuchsiaposix.Errno) BaseSocketSetSendBufferResult {
+ var _u BaseSocketSetSendBufferResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketGetSendBufferResultTag uint64
+
+const (
+ BaseSocketGetSendBufferResultResponse = 1 // 0x00000001
+ BaseSocketGetSendBufferResultErr = 2 // 0x00000002
+)
+
+type BaseSocketGetSendBufferResult struct {
+ I_baseSocketGetSendBufferResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketGetSendBufferResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketGetSendBufferResult) reset() {
+ switch _m.I_baseSocketGetSendBufferResultTag {
+ case 1:
+ var _zeroed BaseSocketGetSendBufferResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketGetSendBufferResult) Which() I_baseSocketGetSendBufferResultTag {
+ return _m.I_baseSocketGetSendBufferResultTag
+}
+
+func (_m *BaseSocketGetSendBufferResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketGetSendBufferResultTag)
+}
+
+func (_m *BaseSocketGetSendBufferResult) SetResponse(response BaseSocketGetSendBufferResponse) {
+ _m.reset()
+ _m.I_baseSocketGetSendBufferResultTag = BaseSocketGetSendBufferResultResponse
+ _m.Response = response
+}
+
+func BaseSocketGetSendBufferResultWithResponse(response BaseSocketGetSendBufferResponse) BaseSocketGetSendBufferResult {
+ var _u BaseSocketGetSendBufferResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketGetSendBufferResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketGetSendBufferResultTag = BaseSocketGetSendBufferResultErr
+ _m.Err = err
+}
+
+func BaseSocketGetSendBufferResultWithErr(err fuchsiaposix.Errno) BaseSocketGetSendBufferResult {
+ var _u BaseSocketGetSendBufferResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketSetReceiveBufferResultTag uint64
+
+const (
+ BaseSocketSetReceiveBufferResultResponse = 1 // 0x00000001
+ BaseSocketSetReceiveBufferResultErr = 2 // 0x00000002
+)
+
+type BaseSocketSetReceiveBufferResult struct {
+ I_baseSocketSetReceiveBufferResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketSetReceiveBufferResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketSetReceiveBufferResult) reset() {
+ switch _m.I_baseSocketSetReceiveBufferResultTag {
+ case 1:
+ var _zeroed BaseSocketSetReceiveBufferResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketSetReceiveBufferResult) Which() I_baseSocketSetReceiveBufferResultTag {
+ return _m.I_baseSocketSetReceiveBufferResultTag
+}
+
+func (_m *BaseSocketSetReceiveBufferResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketSetReceiveBufferResultTag)
+}
+
+func (_m *BaseSocketSetReceiveBufferResult) SetResponse(response BaseSocketSetReceiveBufferResponse) {
+ _m.reset()
+ _m.I_baseSocketSetReceiveBufferResultTag = BaseSocketSetReceiveBufferResultResponse
+ _m.Response = response
+}
+
+func BaseSocketSetReceiveBufferResultWithResponse(response BaseSocketSetReceiveBufferResponse) BaseSocketSetReceiveBufferResult {
+ var _u BaseSocketSetReceiveBufferResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketSetReceiveBufferResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketSetReceiveBufferResultTag = BaseSocketSetReceiveBufferResultErr
+ _m.Err = err
+}
+
+func BaseSocketSetReceiveBufferResultWithErr(err fuchsiaposix.Errno) BaseSocketSetReceiveBufferResult {
+ var _u BaseSocketSetReceiveBufferResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketGetReceiveBufferResultTag uint64
+
+const (
+ BaseSocketGetReceiveBufferResultResponse = 1 // 0x00000001
+ BaseSocketGetReceiveBufferResultErr = 2 // 0x00000002
+)
+
+type BaseSocketGetReceiveBufferResult struct {
+ I_baseSocketGetReceiveBufferResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketGetReceiveBufferResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketGetReceiveBufferResult) reset() {
+ switch _m.I_baseSocketGetReceiveBufferResultTag {
+ case 1:
+ var _zeroed BaseSocketGetReceiveBufferResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketGetReceiveBufferResult) Which() I_baseSocketGetReceiveBufferResultTag {
+ return _m.I_baseSocketGetReceiveBufferResultTag
+}
+
+func (_m *BaseSocketGetReceiveBufferResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketGetReceiveBufferResultTag)
+}
+
+func (_m *BaseSocketGetReceiveBufferResult) SetResponse(response BaseSocketGetReceiveBufferResponse) {
+ _m.reset()
+ _m.I_baseSocketGetReceiveBufferResultTag = BaseSocketGetReceiveBufferResultResponse
+ _m.Response = response
+}
+
+func BaseSocketGetReceiveBufferResultWithResponse(response BaseSocketGetReceiveBufferResponse) BaseSocketGetReceiveBufferResult {
+ var _u BaseSocketGetReceiveBufferResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketGetReceiveBufferResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketGetReceiveBufferResultTag = BaseSocketGetReceiveBufferResultErr
+ _m.Err = err
+}
+
+func BaseSocketGetReceiveBufferResultWithErr(err fuchsiaposix.Errno) BaseSocketGetReceiveBufferResult {
+ var _u BaseSocketGetReceiveBufferResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketSetKeepAliveResultTag uint64
+
+const (
+ BaseSocketSetKeepAliveResultResponse = 1 // 0x00000001
+ BaseSocketSetKeepAliveResultErr = 2 // 0x00000002
+)
+
+type BaseSocketSetKeepAliveResult struct {
+ I_baseSocketSetKeepAliveResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketSetKeepAliveResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketSetKeepAliveResult) reset() {
+ switch _m.I_baseSocketSetKeepAliveResultTag {
+ case 1:
+ var _zeroed BaseSocketSetKeepAliveResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketSetKeepAliveResult) Which() I_baseSocketSetKeepAliveResultTag {
+ return _m.I_baseSocketSetKeepAliveResultTag
+}
+
+func (_m *BaseSocketSetKeepAliveResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketSetKeepAliveResultTag)
+}
+
+func (_m *BaseSocketSetKeepAliveResult) SetResponse(response BaseSocketSetKeepAliveResponse) {
+ _m.reset()
+ _m.I_baseSocketSetKeepAliveResultTag = BaseSocketSetKeepAliveResultResponse
+ _m.Response = response
+}
+
+func BaseSocketSetKeepAliveResultWithResponse(response BaseSocketSetKeepAliveResponse) BaseSocketSetKeepAliveResult {
+ var _u BaseSocketSetKeepAliveResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketSetKeepAliveResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketSetKeepAliveResultTag = BaseSocketSetKeepAliveResultErr
+ _m.Err = err
+}
+
+func BaseSocketSetKeepAliveResultWithErr(err fuchsiaposix.Errno) BaseSocketSetKeepAliveResult {
+ var _u BaseSocketSetKeepAliveResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketGetKeepAliveResultTag uint64
+
+const (
+ BaseSocketGetKeepAliveResultResponse = 1 // 0x00000001
+ BaseSocketGetKeepAliveResultErr = 2 // 0x00000002
+)
+
+type BaseSocketGetKeepAliveResult struct {
+ I_baseSocketGetKeepAliveResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketGetKeepAliveResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketGetKeepAliveResult) reset() {
+ switch _m.I_baseSocketGetKeepAliveResultTag {
+ case 1:
+ var _zeroed BaseSocketGetKeepAliveResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketGetKeepAliveResult) Which() I_baseSocketGetKeepAliveResultTag {
+ return _m.I_baseSocketGetKeepAliveResultTag
+}
+
+func (_m *BaseSocketGetKeepAliveResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketGetKeepAliveResultTag)
+}
+
+func (_m *BaseSocketGetKeepAliveResult) SetResponse(response BaseSocketGetKeepAliveResponse) {
+ _m.reset()
+ _m.I_baseSocketGetKeepAliveResultTag = BaseSocketGetKeepAliveResultResponse
+ _m.Response = response
+}
+
+func BaseSocketGetKeepAliveResultWithResponse(response BaseSocketGetKeepAliveResponse) BaseSocketGetKeepAliveResult {
+ var _u BaseSocketGetKeepAliveResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketGetKeepAliveResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketGetKeepAliveResultTag = BaseSocketGetKeepAliveResultErr
+ _m.Err = err
+}
+
+func BaseSocketGetKeepAliveResultWithErr(err fuchsiaposix.Errno) BaseSocketGetKeepAliveResult {
+ var _u BaseSocketGetKeepAliveResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketSetOutOfBandInlineResultTag uint64
+
+const (
+ BaseSocketSetOutOfBandInlineResultResponse = 1 // 0x00000001
+ BaseSocketSetOutOfBandInlineResultErr = 2 // 0x00000002
+)
+
+type BaseSocketSetOutOfBandInlineResult struct {
+ I_baseSocketSetOutOfBandInlineResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketSetOutOfBandInlineResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketSetOutOfBandInlineResult) reset() {
+ switch _m.I_baseSocketSetOutOfBandInlineResultTag {
+ case 1:
+ var _zeroed BaseSocketSetOutOfBandInlineResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketSetOutOfBandInlineResult) Which() I_baseSocketSetOutOfBandInlineResultTag {
+ return _m.I_baseSocketSetOutOfBandInlineResultTag
+}
+
+func (_m *BaseSocketSetOutOfBandInlineResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketSetOutOfBandInlineResultTag)
+}
+
+func (_m *BaseSocketSetOutOfBandInlineResult) SetResponse(response BaseSocketSetOutOfBandInlineResponse) {
+ _m.reset()
+ _m.I_baseSocketSetOutOfBandInlineResultTag = BaseSocketSetOutOfBandInlineResultResponse
+ _m.Response = response
+}
+
+func BaseSocketSetOutOfBandInlineResultWithResponse(response BaseSocketSetOutOfBandInlineResponse) BaseSocketSetOutOfBandInlineResult {
+ var _u BaseSocketSetOutOfBandInlineResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketSetOutOfBandInlineResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketSetOutOfBandInlineResultTag = BaseSocketSetOutOfBandInlineResultErr
+ _m.Err = err
+}
+
+func BaseSocketSetOutOfBandInlineResultWithErr(err fuchsiaposix.Errno) BaseSocketSetOutOfBandInlineResult {
+ var _u BaseSocketSetOutOfBandInlineResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketGetOutOfBandInlineResultTag uint64
+
+const (
+ BaseSocketGetOutOfBandInlineResultResponse = 1 // 0x00000001
+ BaseSocketGetOutOfBandInlineResultErr = 2 // 0x00000002
+)
+
+type BaseSocketGetOutOfBandInlineResult struct {
+ I_baseSocketGetOutOfBandInlineResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketGetOutOfBandInlineResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketGetOutOfBandInlineResult) reset() {
+ switch _m.I_baseSocketGetOutOfBandInlineResultTag {
+ case 1:
+ var _zeroed BaseSocketGetOutOfBandInlineResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketGetOutOfBandInlineResult) Which() I_baseSocketGetOutOfBandInlineResultTag {
+ return _m.I_baseSocketGetOutOfBandInlineResultTag
+}
+
+func (_m *BaseSocketGetOutOfBandInlineResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketGetOutOfBandInlineResultTag)
+}
+
+func (_m *BaseSocketGetOutOfBandInlineResult) SetResponse(response BaseSocketGetOutOfBandInlineResponse) {
+ _m.reset()
+ _m.I_baseSocketGetOutOfBandInlineResultTag = BaseSocketGetOutOfBandInlineResultResponse
+ _m.Response = response
+}
+
+func BaseSocketGetOutOfBandInlineResultWithResponse(response BaseSocketGetOutOfBandInlineResponse) BaseSocketGetOutOfBandInlineResult {
+ var _u BaseSocketGetOutOfBandInlineResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketGetOutOfBandInlineResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketGetOutOfBandInlineResultTag = BaseSocketGetOutOfBandInlineResultErr
+ _m.Err = err
+}
+
+func BaseSocketGetOutOfBandInlineResultWithErr(err fuchsiaposix.Errno) BaseSocketGetOutOfBandInlineResult {
+ var _u BaseSocketGetOutOfBandInlineResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketSetNoCheckResultTag uint64
+
+const (
+ BaseSocketSetNoCheckResultResponse = 1 // 0x00000001
+ BaseSocketSetNoCheckResultErr = 2 // 0x00000002
+)
+
+type BaseSocketSetNoCheckResult struct {
+ I_baseSocketSetNoCheckResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketSetNoCheckResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketSetNoCheckResult) reset() {
+ switch _m.I_baseSocketSetNoCheckResultTag {
+ case 1:
+ var _zeroed BaseSocketSetNoCheckResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketSetNoCheckResult) Which() I_baseSocketSetNoCheckResultTag {
+ return _m.I_baseSocketSetNoCheckResultTag
+}
+
+func (_m *BaseSocketSetNoCheckResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketSetNoCheckResultTag)
+}
+
+func (_m *BaseSocketSetNoCheckResult) SetResponse(response BaseSocketSetNoCheckResponse) {
+ _m.reset()
+ _m.I_baseSocketSetNoCheckResultTag = BaseSocketSetNoCheckResultResponse
+ _m.Response = response
+}
+
+func BaseSocketSetNoCheckResultWithResponse(response BaseSocketSetNoCheckResponse) BaseSocketSetNoCheckResult {
+ var _u BaseSocketSetNoCheckResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketSetNoCheckResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketSetNoCheckResultTag = BaseSocketSetNoCheckResultErr
+ _m.Err = err
+}
+
+func BaseSocketSetNoCheckResultWithErr(err fuchsiaposix.Errno) BaseSocketSetNoCheckResult {
+ var _u BaseSocketSetNoCheckResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketGetNoCheckResultTag uint64
+
+const (
+ BaseSocketGetNoCheckResultResponse = 1 // 0x00000001
+ BaseSocketGetNoCheckResultErr = 2 // 0x00000002
+)
+
+type BaseSocketGetNoCheckResult struct {
+ I_baseSocketGetNoCheckResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketGetNoCheckResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketGetNoCheckResult) reset() {
+ switch _m.I_baseSocketGetNoCheckResultTag {
+ case 1:
+ var _zeroed BaseSocketGetNoCheckResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketGetNoCheckResult) Which() I_baseSocketGetNoCheckResultTag {
+ return _m.I_baseSocketGetNoCheckResultTag
+}
+
+func (_m *BaseSocketGetNoCheckResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketGetNoCheckResultTag)
+}
+
+func (_m *BaseSocketGetNoCheckResult) SetResponse(response BaseSocketGetNoCheckResponse) {
+ _m.reset()
+ _m.I_baseSocketGetNoCheckResultTag = BaseSocketGetNoCheckResultResponse
+ _m.Response = response
+}
+
+func BaseSocketGetNoCheckResultWithResponse(response BaseSocketGetNoCheckResponse) BaseSocketGetNoCheckResult {
+ var _u BaseSocketGetNoCheckResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketGetNoCheckResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketGetNoCheckResultTag = BaseSocketGetNoCheckResultErr
+ _m.Err = err
+}
+
+func BaseSocketGetNoCheckResultWithErr(err fuchsiaposix.Errno) BaseSocketGetNoCheckResult {
+ var _u BaseSocketGetNoCheckResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketSetLingerResultTag uint64
+
+const (
+ BaseSocketSetLingerResultResponse = 1 // 0x00000001
+ BaseSocketSetLingerResultErr = 2 // 0x00000002
+)
+
+type BaseSocketSetLingerResult struct {
+ I_baseSocketSetLingerResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketSetLingerResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketSetLingerResult) reset() {
+ switch _m.I_baseSocketSetLingerResultTag {
+ case 1:
+ var _zeroed BaseSocketSetLingerResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketSetLingerResult) Which() I_baseSocketSetLingerResultTag {
+ return _m.I_baseSocketSetLingerResultTag
+}
+
+func (_m *BaseSocketSetLingerResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketSetLingerResultTag)
+}
+
+func (_m *BaseSocketSetLingerResult) SetResponse(response BaseSocketSetLingerResponse) {
+ _m.reset()
+ _m.I_baseSocketSetLingerResultTag = BaseSocketSetLingerResultResponse
+ _m.Response = response
+}
+
+func BaseSocketSetLingerResultWithResponse(response BaseSocketSetLingerResponse) BaseSocketSetLingerResult {
+ var _u BaseSocketSetLingerResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketSetLingerResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketSetLingerResultTag = BaseSocketSetLingerResultErr
+ _m.Err = err
+}
+
+func BaseSocketSetLingerResultWithErr(err fuchsiaposix.Errno) BaseSocketSetLingerResult {
+ var _u BaseSocketSetLingerResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketGetLingerResultTag uint64
+
+const (
+ BaseSocketGetLingerResultResponse = 1 // 0x00000001
+ BaseSocketGetLingerResultErr = 2 // 0x00000002
+)
+
+type BaseSocketGetLingerResult struct {
+ I_baseSocketGetLingerResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketGetLingerResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketGetLingerResult) reset() {
+ switch _m.I_baseSocketGetLingerResultTag {
+ case 1:
+ var _zeroed BaseSocketGetLingerResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketGetLingerResult) Which() I_baseSocketGetLingerResultTag {
+ return _m.I_baseSocketGetLingerResultTag
+}
+
+func (_m *BaseSocketGetLingerResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketGetLingerResultTag)
+}
+
+func (_m *BaseSocketGetLingerResult) SetResponse(response BaseSocketGetLingerResponse) {
+ _m.reset()
+ _m.I_baseSocketGetLingerResultTag = BaseSocketGetLingerResultResponse
+ _m.Response = response
+}
+
+func BaseSocketGetLingerResultWithResponse(response BaseSocketGetLingerResponse) BaseSocketGetLingerResult {
+ var _u BaseSocketGetLingerResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketGetLingerResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketGetLingerResultTag = BaseSocketGetLingerResultErr
+ _m.Err = err
+}
+
+func BaseSocketGetLingerResultWithErr(err fuchsiaposix.Errno) BaseSocketGetLingerResult {
+ var _u BaseSocketGetLingerResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketSetReusePortResultTag uint64
+
+const (
+ BaseSocketSetReusePortResultResponse = 1 // 0x00000001
+ BaseSocketSetReusePortResultErr = 2 // 0x00000002
+)
+
+type BaseSocketSetReusePortResult struct {
+ I_baseSocketSetReusePortResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketSetReusePortResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketSetReusePortResult) reset() {
+ switch _m.I_baseSocketSetReusePortResultTag {
+ case 1:
+ var _zeroed BaseSocketSetReusePortResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketSetReusePortResult) Which() I_baseSocketSetReusePortResultTag {
+ return _m.I_baseSocketSetReusePortResultTag
+}
+
+func (_m *BaseSocketSetReusePortResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketSetReusePortResultTag)
+}
+
+func (_m *BaseSocketSetReusePortResult) SetResponse(response BaseSocketSetReusePortResponse) {
+ _m.reset()
+ _m.I_baseSocketSetReusePortResultTag = BaseSocketSetReusePortResultResponse
+ _m.Response = response
+}
+
+func BaseSocketSetReusePortResultWithResponse(response BaseSocketSetReusePortResponse) BaseSocketSetReusePortResult {
+ var _u BaseSocketSetReusePortResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketSetReusePortResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketSetReusePortResultTag = BaseSocketSetReusePortResultErr
+ _m.Err = err
+}
+
+func BaseSocketSetReusePortResultWithErr(err fuchsiaposix.Errno) BaseSocketSetReusePortResult {
+ var _u BaseSocketSetReusePortResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketGetReusePortResultTag uint64
+
+const (
+ BaseSocketGetReusePortResultResponse = 1 // 0x00000001
+ BaseSocketGetReusePortResultErr = 2 // 0x00000002
+)
+
+type BaseSocketGetReusePortResult struct {
+ I_baseSocketGetReusePortResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketGetReusePortResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketGetReusePortResult) reset() {
+ switch _m.I_baseSocketGetReusePortResultTag {
+ case 1:
+ var _zeroed BaseSocketGetReusePortResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketGetReusePortResult) Which() I_baseSocketGetReusePortResultTag {
+ return _m.I_baseSocketGetReusePortResultTag
+}
+
+func (_m *BaseSocketGetReusePortResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketGetReusePortResultTag)
+}
+
+func (_m *BaseSocketGetReusePortResult) SetResponse(response BaseSocketGetReusePortResponse) {
+ _m.reset()
+ _m.I_baseSocketGetReusePortResultTag = BaseSocketGetReusePortResultResponse
+ _m.Response = response
+}
+
+func BaseSocketGetReusePortResultWithResponse(response BaseSocketGetReusePortResponse) BaseSocketGetReusePortResult {
+ var _u BaseSocketGetReusePortResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketGetReusePortResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketGetReusePortResultTag = BaseSocketGetReusePortResultErr
+ _m.Err = err
+}
+
+func BaseSocketGetReusePortResultWithErr(err fuchsiaposix.Errno) BaseSocketGetReusePortResult {
+ var _u BaseSocketGetReusePortResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketGetAcceptConnResultTag uint64
+
+const (
+ BaseSocketGetAcceptConnResultResponse = 1 // 0x00000001
+ BaseSocketGetAcceptConnResultErr = 2 // 0x00000002
+)
+
+type BaseSocketGetAcceptConnResult struct {
+ I_baseSocketGetAcceptConnResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketGetAcceptConnResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketGetAcceptConnResult) reset() {
+ switch _m.I_baseSocketGetAcceptConnResultTag {
+ case 1:
+ var _zeroed BaseSocketGetAcceptConnResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketGetAcceptConnResult) Which() I_baseSocketGetAcceptConnResultTag {
+ return _m.I_baseSocketGetAcceptConnResultTag
+}
+
+func (_m *BaseSocketGetAcceptConnResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketGetAcceptConnResultTag)
+}
+
+func (_m *BaseSocketGetAcceptConnResult) SetResponse(response BaseSocketGetAcceptConnResponse) {
+ _m.reset()
+ _m.I_baseSocketGetAcceptConnResultTag = BaseSocketGetAcceptConnResultResponse
+ _m.Response = response
+}
+
+func BaseSocketGetAcceptConnResultWithResponse(response BaseSocketGetAcceptConnResponse) BaseSocketGetAcceptConnResult {
+ var _u BaseSocketGetAcceptConnResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketGetAcceptConnResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketGetAcceptConnResultTag = BaseSocketGetAcceptConnResultErr
+ _m.Err = err
+}
+
+func BaseSocketGetAcceptConnResultWithErr(err fuchsiaposix.Errno) BaseSocketGetAcceptConnResult {
+ var _u BaseSocketGetAcceptConnResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketSetBindToDeviceResultTag uint64
+
+const (
+ BaseSocketSetBindToDeviceResultResponse = 1 // 0x00000001
+ BaseSocketSetBindToDeviceResultErr = 2 // 0x00000002
+)
+
+type BaseSocketSetBindToDeviceResult struct {
+ I_baseSocketSetBindToDeviceResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketSetBindToDeviceResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketSetBindToDeviceResult) reset() {
+ switch _m.I_baseSocketSetBindToDeviceResultTag {
+ case 1:
+ var _zeroed BaseSocketSetBindToDeviceResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketSetBindToDeviceResult) Which() I_baseSocketSetBindToDeviceResultTag {
+ return _m.I_baseSocketSetBindToDeviceResultTag
+}
+
+func (_m *BaseSocketSetBindToDeviceResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketSetBindToDeviceResultTag)
+}
+
+func (_m *BaseSocketSetBindToDeviceResult) SetResponse(response BaseSocketSetBindToDeviceResponse) {
+ _m.reset()
+ _m.I_baseSocketSetBindToDeviceResultTag = BaseSocketSetBindToDeviceResultResponse
+ _m.Response = response
+}
+
+func BaseSocketSetBindToDeviceResultWithResponse(response BaseSocketSetBindToDeviceResponse) BaseSocketSetBindToDeviceResult {
+ var _u BaseSocketSetBindToDeviceResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketSetBindToDeviceResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketSetBindToDeviceResultTag = BaseSocketSetBindToDeviceResultErr
+ _m.Err = err
+}
+
+func BaseSocketSetBindToDeviceResultWithErr(err fuchsiaposix.Errno) BaseSocketSetBindToDeviceResult {
+ var _u BaseSocketSetBindToDeviceResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketGetBindToDeviceResultTag uint64
+
+const (
+ BaseSocketGetBindToDeviceResultResponse = 1 // 0x00000001
+ BaseSocketGetBindToDeviceResultErr = 2 // 0x00000002
+)
+
+type BaseSocketGetBindToDeviceResult struct {
+ I_baseSocketGetBindToDeviceResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketGetBindToDeviceResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketGetBindToDeviceResult) reset() {
+ switch _m.I_baseSocketGetBindToDeviceResultTag {
+ case 1:
+ var _zeroed BaseSocketGetBindToDeviceResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketGetBindToDeviceResult) Which() I_baseSocketGetBindToDeviceResultTag {
+ return _m.I_baseSocketGetBindToDeviceResultTag
+}
+
+func (_m *BaseSocketGetBindToDeviceResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketGetBindToDeviceResultTag)
+}
+
+func (_m *BaseSocketGetBindToDeviceResult) SetResponse(response BaseSocketGetBindToDeviceResponse) {
+ _m.reset()
+ _m.I_baseSocketGetBindToDeviceResultTag = BaseSocketGetBindToDeviceResultResponse
+ _m.Response = response
+}
+
+func BaseSocketGetBindToDeviceResultWithResponse(response BaseSocketGetBindToDeviceResponse) BaseSocketGetBindToDeviceResult {
+ var _u BaseSocketGetBindToDeviceResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketGetBindToDeviceResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketGetBindToDeviceResultTag = BaseSocketGetBindToDeviceResultErr
+ _m.Err = err
+}
+
+func BaseSocketGetBindToDeviceResultWithErr(err fuchsiaposix.Errno) BaseSocketGetBindToDeviceResult {
+ var _u BaseSocketGetBindToDeviceResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketSetTimestampResultTag uint64
+
+const (
+ BaseSocketSetTimestampResultResponse = 1 // 0x00000001
+ BaseSocketSetTimestampResultErr = 2 // 0x00000002
+)
+
+type BaseSocketSetTimestampResult struct {
+ I_baseSocketSetTimestampResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketSetTimestampResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketSetTimestampResult) reset() {
+ switch _m.I_baseSocketSetTimestampResultTag {
+ case 1:
+ var _zeroed BaseSocketSetTimestampResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketSetTimestampResult) Which() I_baseSocketSetTimestampResultTag {
+ return _m.I_baseSocketSetTimestampResultTag
+}
+
+func (_m *BaseSocketSetTimestampResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketSetTimestampResultTag)
+}
+
+func (_m *BaseSocketSetTimestampResult) SetResponse(response BaseSocketSetTimestampResponse) {
+ _m.reset()
+ _m.I_baseSocketSetTimestampResultTag = BaseSocketSetTimestampResultResponse
+ _m.Response = response
+}
+
+func BaseSocketSetTimestampResultWithResponse(response BaseSocketSetTimestampResponse) BaseSocketSetTimestampResult {
+ var _u BaseSocketSetTimestampResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketSetTimestampResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketSetTimestampResultTag = BaseSocketSetTimestampResultErr
+ _m.Err = err
+}
+
+func BaseSocketSetTimestampResultWithErr(err fuchsiaposix.Errno) BaseSocketSetTimestampResult {
+ var _u BaseSocketSetTimestampResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketGetTimestampResultTag uint64
+
+const (
+ BaseSocketGetTimestampResultResponse = 1 // 0x00000001
+ BaseSocketGetTimestampResultErr = 2 // 0x00000002
+)
+
+type BaseSocketGetTimestampResult struct {
+ I_baseSocketGetTimestampResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketGetTimestampResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketGetTimestampResult) reset() {
+ switch _m.I_baseSocketGetTimestampResultTag {
+ case 1:
+ var _zeroed BaseSocketGetTimestampResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketGetTimestampResult) Which() I_baseSocketGetTimestampResultTag {
+ return _m.I_baseSocketGetTimestampResultTag
+}
+
+func (_m *BaseSocketGetTimestampResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketGetTimestampResultTag)
+}
+
+func (_m *BaseSocketGetTimestampResult) SetResponse(response BaseSocketGetTimestampResponse) {
+ _m.reset()
+ _m.I_baseSocketGetTimestampResultTag = BaseSocketGetTimestampResultResponse
+ _m.Response = response
+}
+
+func BaseSocketGetTimestampResultWithResponse(response BaseSocketGetTimestampResponse) BaseSocketGetTimestampResult {
+ var _u BaseSocketGetTimestampResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketGetTimestampResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketGetTimestampResultTag = BaseSocketGetTimestampResultErr
+ _m.Err = err
+}
+
+func BaseSocketGetTimestampResultWithErr(err fuchsiaposix.Errno) BaseSocketGetTimestampResult {
+ var _u BaseSocketGetTimestampResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketSetIpTypeOfServiceResultTag uint64
+
+const (
+ BaseSocketSetIpTypeOfServiceResultResponse = 1 // 0x00000001
+ BaseSocketSetIpTypeOfServiceResultErr = 2 // 0x00000002
+)
+
+type BaseSocketSetIpTypeOfServiceResult struct {
+ I_baseSocketSetIpTypeOfServiceResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketSetIpTypeOfServiceResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketSetIpTypeOfServiceResult) reset() {
+ switch _m.I_baseSocketSetIpTypeOfServiceResultTag {
+ case 1:
+ var _zeroed BaseSocketSetIpTypeOfServiceResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketSetIpTypeOfServiceResult) Which() I_baseSocketSetIpTypeOfServiceResultTag {
+ return _m.I_baseSocketSetIpTypeOfServiceResultTag
+}
+
+func (_m *BaseSocketSetIpTypeOfServiceResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketSetIpTypeOfServiceResultTag)
+}
+
+func (_m *BaseSocketSetIpTypeOfServiceResult) SetResponse(response BaseSocketSetIpTypeOfServiceResponse) {
+ _m.reset()
+ _m.I_baseSocketSetIpTypeOfServiceResultTag = BaseSocketSetIpTypeOfServiceResultResponse
+ _m.Response = response
+}
+
+func BaseSocketSetIpTypeOfServiceResultWithResponse(response BaseSocketSetIpTypeOfServiceResponse) BaseSocketSetIpTypeOfServiceResult {
+ var _u BaseSocketSetIpTypeOfServiceResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketSetIpTypeOfServiceResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketSetIpTypeOfServiceResultTag = BaseSocketSetIpTypeOfServiceResultErr
+ _m.Err = err
+}
+
+func BaseSocketSetIpTypeOfServiceResultWithErr(err fuchsiaposix.Errno) BaseSocketSetIpTypeOfServiceResult {
+ var _u BaseSocketSetIpTypeOfServiceResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketGetIpTypeOfServiceResultTag uint64
+
+const (
+ BaseSocketGetIpTypeOfServiceResultResponse = 1 // 0x00000001
+ BaseSocketGetIpTypeOfServiceResultErr = 2 // 0x00000002
+)
+
+type BaseSocketGetIpTypeOfServiceResult struct {
+ I_baseSocketGetIpTypeOfServiceResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketGetIpTypeOfServiceResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketGetIpTypeOfServiceResult) reset() {
+ switch _m.I_baseSocketGetIpTypeOfServiceResultTag {
+ case 1:
+ var _zeroed BaseSocketGetIpTypeOfServiceResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketGetIpTypeOfServiceResult) Which() I_baseSocketGetIpTypeOfServiceResultTag {
+ return _m.I_baseSocketGetIpTypeOfServiceResultTag
+}
+
+func (_m *BaseSocketGetIpTypeOfServiceResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketGetIpTypeOfServiceResultTag)
+}
+
+func (_m *BaseSocketGetIpTypeOfServiceResult) SetResponse(response BaseSocketGetIpTypeOfServiceResponse) {
+ _m.reset()
+ _m.I_baseSocketGetIpTypeOfServiceResultTag = BaseSocketGetIpTypeOfServiceResultResponse
+ _m.Response = response
+}
+
+func BaseSocketGetIpTypeOfServiceResultWithResponse(response BaseSocketGetIpTypeOfServiceResponse) BaseSocketGetIpTypeOfServiceResult {
+ var _u BaseSocketGetIpTypeOfServiceResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketGetIpTypeOfServiceResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketGetIpTypeOfServiceResultTag = BaseSocketGetIpTypeOfServiceResultErr
+ _m.Err = err
+}
+
+func BaseSocketGetIpTypeOfServiceResultWithErr(err fuchsiaposix.Errno) BaseSocketGetIpTypeOfServiceResult {
+ var _u BaseSocketGetIpTypeOfServiceResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketSetIpTtlResultTag uint64
+
+const (
+ BaseSocketSetIpTtlResultResponse = 1 // 0x00000001
+ BaseSocketSetIpTtlResultErr = 2 // 0x00000002
+)
+
+type BaseSocketSetIpTtlResult struct {
+ I_baseSocketSetIpTtlResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketSetIpTtlResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketSetIpTtlResult) reset() {
+ switch _m.I_baseSocketSetIpTtlResultTag {
+ case 1:
+ var _zeroed BaseSocketSetIpTtlResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketSetIpTtlResult) Which() I_baseSocketSetIpTtlResultTag {
+ return _m.I_baseSocketSetIpTtlResultTag
+}
+
+func (_m *BaseSocketSetIpTtlResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketSetIpTtlResultTag)
+}
+
+func (_m *BaseSocketSetIpTtlResult) SetResponse(response BaseSocketSetIpTtlResponse) {
+ _m.reset()
+ _m.I_baseSocketSetIpTtlResultTag = BaseSocketSetIpTtlResultResponse
+ _m.Response = response
+}
+
+func BaseSocketSetIpTtlResultWithResponse(response BaseSocketSetIpTtlResponse) BaseSocketSetIpTtlResult {
+ var _u BaseSocketSetIpTtlResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketSetIpTtlResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketSetIpTtlResultTag = BaseSocketSetIpTtlResultErr
+ _m.Err = err
+}
+
+func BaseSocketSetIpTtlResultWithErr(err fuchsiaposix.Errno) BaseSocketSetIpTtlResult {
+ var _u BaseSocketSetIpTtlResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketGetIpTtlResultTag uint64
+
+const (
+ BaseSocketGetIpTtlResultResponse = 1 // 0x00000001
+ BaseSocketGetIpTtlResultErr = 2 // 0x00000002
+)
+
+type BaseSocketGetIpTtlResult struct {
+ I_baseSocketGetIpTtlResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketGetIpTtlResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketGetIpTtlResult) reset() {
+ switch _m.I_baseSocketGetIpTtlResultTag {
+ case 1:
+ var _zeroed BaseSocketGetIpTtlResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketGetIpTtlResult) Which() I_baseSocketGetIpTtlResultTag {
+ return _m.I_baseSocketGetIpTtlResultTag
+}
+
+func (_m *BaseSocketGetIpTtlResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketGetIpTtlResultTag)
+}
+
+func (_m *BaseSocketGetIpTtlResult) SetResponse(response BaseSocketGetIpTtlResponse) {
+ _m.reset()
+ _m.I_baseSocketGetIpTtlResultTag = BaseSocketGetIpTtlResultResponse
+ _m.Response = response
+}
+
+func BaseSocketGetIpTtlResultWithResponse(response BaseSocketGetIpTtlResponse) BaseSocketGetIpTtlResult {
+ var _u BaseSocketGetIpTtlResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketGetIpTtlResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketGetIpTtlResultTag = BaseSocketGetIpTtlResultErr
+ _m.Err = err
+}
+
+func BaseSocketGetIpTtlResultWithErr(err fuchsiaposix.Errno) BaseSocketGetIpTtlResult {
+ var _u BaseSocketGetIpTtlResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketSetIpPacketInfoResultTag uint64
+
+const (
+ BaseSocketSetIpPacketInfoResultResponse = 1 // 0x00000001
+ BaseSocketSetIpPacketInfoResultErr = 2 // 0x00000002
+)
+
+type BaseSocketSetIpPacketInfoResult struct {
+ I_baseSocketSetIpPacketInfoResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketSetIpPacketInfoResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketSetIpPacketInfoResult) reset() {
+ switch _m.I_baseSocketSetIpPacketInfoResultTag {
+ case 1:
+ var _zeroed BaseSocketSetIpPacketInfoResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketSetIpPacketInfoResult) Which() I_baseSocketSetIpPacketInfoResultTag {
+ return _m.I_baseSocketSetIpPacketInfoResultTag
+}
+
+func (_m *BaseSocketSetIpPacketInfoResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketSetIpPacketInfoResultTag)
+}
+
+func (_m *BaseSocketSetIpPacketInfoResult) SetResponse(response BaseSocketSetIpPacketInfoResponse) {
+ _m.reset()
+ _m.I_baseSocketSetIpPacketInfoResultTag = BaseSocketSetIpPacketInfoResultResponse
+ _m.Response = response
+}
+
+func BaseSocketSetIpPacketInfoResultWithResponse(response BaseSocketSetIpPacketInfoResponse) BaseSocketSetIpPacketInfoResult {
+ var _u BaseSocketSetIpPacketInfoResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketSetIpPacketInfoResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketSetIpPacketInfoResultTag = BaseSocketSetIpPacketInfoResultErr
+ _m.Err = err
+}
+
+func BaseSocketSetIpPacketInfoResultWithErr(err fuchsiaposix.Errno) BaseSocketSetIpPacketInfoResult {
+ var _u BaseSocketSetIpPacketInfoResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketGetIpPacketInfoResultTag uint64
+
+const (
+ BaseSocketGetIpPacketInfoResultResponse = 1 // 0x00000001
+ BaseSocketGetIpPacketInfoResultErr = 2 // 0x00000002
+)
+
+type BaseSocketGetIpPacketInfoResult struct {
+ I_baseSocketGetIpPacketInfoResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketGetIpPacketInfoResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketGetIpPacketInfoResult) reset() {
+ switch _m.I_baseSocketGetIpPacketInfoResultTag {
+ case 1:
+ var _zeroed BaseSocketGetIpPacketInfoResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketGetIpPacketInfoResult) Which() I_baseSocketGetIpPacketInfoResultTag {
+ return _m.I_baseSocketGetIpPacketInfoResultTag
+}
+
+func (_m *BaseSocketGetIpPacketInfoResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketGetIpPacketInfoResultTag)
+}
+
+func (_m *BaseSocketGetIpPacketInfoResult) SetResponse(response BaseSocketGetIpPacketInfoResponse) {
+ _m.reset()
+ _m.I_baseSocketGetIpPacketInfoResultTag = BaseSocketGetIpPacketInfoResultResponse
+ _m.Response = response
+}
+
+func BaseSocketGetIpPacketInfoResultWithResponse(response BaseSocketGetIpPacketInfoResponse) BaseSocketGetIpPacketInfoResult {
+ var _u BaseSocketGetIpPacketInfoResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketGetIpPacketInfoResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketGetIpPacketInfoResultTag = BaseSocketGetIpPacketInfoResultErr
+ _m.Err = err
+}
+
+func BaseSocketGetIpPacketInfoResultWithErr(err fuchsiaposix.Errno) BaseSocketGetIpPacketInfoResult {
+ var _u BaseSocketGetIpPacketInfoResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketSetIpReceiveTypeOfServiceResultTag uint64
+
+const (
+ BaseSocketSetIpReceiveTypeOfServiceResultResponse = 1 // 0x00000001
+ BaseSocketSetIpReceiveTypeOfServiceResultErr = 2 // 0x00000002
+)
+
+type BaseSocketSetIpReceiveTypeOfServiceResult struct {
+ I_baseSocketSetIpReceiveTypeOfServiceResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketSetIpReceiveTypeOfServiceResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketSetIpReceiveTypeOfServiceResult) reset() {
+ switch _m.I_baseSocketSetIpReceiveTypeOfServiceResultTag {
+ case 1:
+ var _zeroed BaseSocketSetIpReceiveTypeOfServiceResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketSetIpReceiveTypeOfServiceResult) Which() I_baseSocketSetIpReceiveTypeOfServiceResultTag {
+ return _m.I_baseSocketSetIpReceiveTypeOfServiceResultTag
+}
+
+func (_m *BaseSocketSetIpReceiveTypeOfServiceResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketSetIpReceiveTypeOfServiceResultTag)
+}
+
+func (_m *BaseSocketSetIpReceiveTypeOfServiceResult) SetResponse(response BaseSocketSetIpReceiveTypeOfServiceResponse) {
+ _m.reset()
+ _m.I_baseSocketSetIpReceiveTypeOfServiceResultTag = BaseSocketSetIpReceiveTypeOfServiceResultResponse
+ _m.Response = response
+}
+
+func BaseSocketSetIpReceiveTypeOfServiceResultWithResponse(response BaseSocketSetIpReceiveTypeOfServiceResponse) BaseSocketSetIpReceiveTypeOfServiceResult {
+ var _u BaseSocketSetIpReceiveTypeOfServiceResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketSetIpReceiveTypeOfServiceResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketSetIpReceiveTypeOfServiceResultTag = BaseSocketSetIpReceiveTypeOfServiceResultErr
+ _m.Err = err
+}
+
+func BaseSocketSetIpReceiveTypeOfServiceResultWithErr(err fuchsiaposix.Errno) BaseSocketSetIpReceiveTypeOfServiceResult {
+ var _u BaseSocketSetIpReceiveTypeOfServiceResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketGetIpReceiveTypeOfServiceResultTag uint64
+
+const (
+ BaseSocketGetIpReceiveTypeOfServiceResultResponse = 1 // 0x00000001
+ BaseSocketGetIpReceiveTypeOfServiceResultErr = 2 // 0x00000002
+)
+
+type BaseSocketGetIpReceiveTypeOfServiceResult struct {
+ I_baseSocketGetIpReceiveTypeOfServiceResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketGetIpReceiveTypeOfServiceResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketGetIpReceiveTypeOfServiceResult) reset() {
+ switch _m.I_baseSocketGetIpReceiveTypeOfServiceResultTag {
+ case 1:
+ var _zeroed BaseSocketGetIpReceiveTypeOfServiceResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketGetIpReceiveTypeOfServiceResult) Which() I_baseSocketGetIpReceiveTypeOfServiceResultTag {
+ return _m.I_baseSocketGetIpReceiveTypeOfServiceResultTag
+}
+
+func (_m *BaseSocketGetIpReceiveTypeOfServiceResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketGetIpReceiveTypeOfServiceResultTag)
+}
+
+func (_m *BaseSocketGetIpReceiveTypeOfServiceResult) SetResponse(response BaseSocketGetIpReceiveTypeOfServiceResponse) {
+ _m.reset()
+ _m.I_baseSocketGetIpReceiveTypeOfServiceResultTag = BaseSocketGetIpReceiveTypeOfServiceResultResponse
+ _m.Response = response
+}
+
+func BaseSocketGetIpReceiveTypeOfServiceResultWithResponse(response BaseSocketGetIpReceiveTypeOfServiceResponse) BaseSocketGetIpReceiveTypeOfServiceResult {
+ var _u BaseSocketGetIpReceiveTypeOfServiceResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketGetIpReceiveTypeOfServiceResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketGetIpReceiveTypeOfServiceResultTag = BaseSocketGetIpReceiveTypeOfServiceResultErr
+ _m.Err = err
+}
+
+func BaseSocketGetIpReceiveTypeOfServiceResultWithErr(err fuchsiaposix.Errno) BaseSocketGetIpReceiveTypeOfServiceResult {
+ var _u BaseSocketGetIpReceiveTypeOfServiceResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketSetIpMulticastInterfaceResultTag uint64
+
+const (
+ BaseSocketSetIpMulticastInterfaceResultResponse = 1 // 0x00000001
+ BaseSocketSetIpMulticastInterfaceResultErr = 2 // 0x00000002
+)
+
+type BaseSocketSetIpMulticastInterfaceResult struct {
+ I_baseSocketSetIpMulticastInterfaceResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketSetIpMulticastInterfaceResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketSetIpMulticastInterfaceResult) reset() {
+ switch _m.I_baseSocketSetIpMulticastInterfaceResultTag {
+ case 1:
+ var _zeroed BaseSocketSetIpMulticastInterfaceResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketSetIpMulticastInterfaceResult) Which() I_baseSocketSetIpMulticastInterfaceResultTag {
+ return _m.I_baseSocketSetIpMulticastInterfaceResultTag
+}
+
+func (_m *BaseSocketSetIpMulticastInterfaceResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketSetIpMulticastInterfaceResultTag)
+}
+
+func (_m *BaseSocketSetIpMulticastInterfaceResult) SetResponse(response BaseSocketSetIpMulticastInterfaceResponse) {
+ _m.reset()
+ _m.I_baseSocketSetIpMulticastInterfaceResultTag = BaseSocketSetIpMulticastInterfaceResultResponse
+ _m.Response = response
+}
+
+func BaseSocketSetIpMulticastInterfaceResultWithResponse(response BaseSocketSetIpMulticastInterfaceResponse) BaseSocketSetIpMulticastInterfaceResult {
+ var _u BaseSocketSetIpMulticastInterfaceResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketSetIpMulticastInterfaceResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketSetIpMulticastInterfaceResultTag = BaseSocketSetIpMulticastInterfaceResultErr
+ _m.Err = err
+}
+
+func BaseSocketSetIpMulticastInterfaceResultWithErr(err fuchsiaposix.Errno) BaseSocketSetIpMulticastInterfaceResult {
+ var _u BaseSocketSetIpMulticastInterfaceResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketGetIpMulticastInterfaceResultTag uint64
+
+const (
+ BaseSocketGetIpMulticastInterfaceResultResponse = 1 // 0x00000001
+ BaseSocketGetIpMulticastInterfaceResultErr = 2 // 0x00000002
+)
+
+type BaseSocketGetIpMulticastInterfaceResult struct {
+ I_baseSocketGetIpMulticastInterfaceResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketGetIpMulticastInterfaceResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketGetIpMulticastInterfaceResult) reset() {
+ switch _m.I_baseSocketGetIpMulticastInterfaceResultTag {
+ case 1:
+ var _zeroed BaseSocketGetIpMulticastInterfaceResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketGetIpMulticastInterfaceResult) Which() I_baseSocketGetIpMulticastInterfaceResultTag {
+ return _m.I_baseSocketGetIpMulticastInterfaceResultTag
+}
+
+func (_m *BaseSocketGetIpMulticastInterfaceResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketGetIpMulticastInterfaceResultTag)
+}
+
+func (_m *BaseSocketGetIpMulticastInterfaceResult) SetResponse(response BaseSocketGetIpMulticastInterfaceResponse) {
+ _m.reset()
+ _m.I_baseSocketGetIpMulticastInterfaceResultTag = BaseSocketGetIpMulticastInterfaceResultResponse
+ _m.Response = response
+}
+
+func BaseSocketGetIpMulticastInterfaceResultWithResponse(response BaseSocketGetIpMulticastInterfaceResponse) BaseSocketGetIpMulticastInterfaceResult {
+ var _u BaseSocketGetIpMulticastInterfaceResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketGetIpMulticastInterfaceResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketGetIpMulticastInterfaceResultTag = BaseSocketGetIpMulticastInterfaceResultErr
+ _m.Err = err
+}
+
+func BaseSocketGetIpMulticastInterfaceResultWithErr(err fuchsiaposix.Errno) BaseSocketGetIpMulticastInterfaceResult {
+ var _u BaseSocketGetIpMulticastInterfaceResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketSetIpMulticastTtlResultTag uint64
+
+const (
+ BaseSocketSetIpMulticastTtlResultResponse = 1 // 0x00000001
+ BaseSocketSetIpMulticastTtlResultErr = 2 // 0x00000002
+)
+
+type BaseSocketSetIpMulticastTtlResult struct {
+ I_baseSocketSetIpMulticastTtlResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketSetIpMulticastTtlResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketSetIpMulticastTtlResult) reset() {
+ switch _m.I_baseSocketSetIpMulticastTtlResultTag {
+ case 1:
+ var _zeroed BaseSocketSetIpMulticastTtlResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketSetIpMulticastTtlResult) Which() I_baseSocketSetIpMulticastTtlResultTag {
+ return _m.I_baseSocketSetIpMulticastTtlResultTag
+}
+
+func (_m *BaseSocketSetIpMulticastTtlResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketSetIpMulticastTtlResultTag)
+}
+
+func (_m *BaseSocketSetIpMulticastTtlResult) SetResponse(response BaseSocketSetIpMulticastTtlResponse) {
+ _m.reset()
+ _m.I_baseSocketSetIpMulticastTtlResultTag = BaseSocketSetIpMulticastTtlResultResponse
+ _m.Response = response
+}
+
+func BaseSocketSetIpMulticastTtlResultWithResponse(response BaseSocketSetIpMulticastTtlResponse) BaseSocketSetIpMulticastTtlResult {
+ var _u BaseSocketSetIpMulticastTtlResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketSetIpMulticastTtlResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketSetIpMulticastTtlResultTag = BaseSocketSetIpMulticastTtlResultErr
+ _m.Err = err
+}
+
+func BaseSocketSetIpMulticastTtlResultWithErr(err fuchsiaposix.Errno) BaseSocketSetIpMulticastTtlResult {
+ var _u BaseSocketSetIpMulticastTtlResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketGetIpMulticastTtlResultTag uint64
+
+const (
+ BaseSocketGetIpMulticastTtlResultResponse = 1 // 0x00000001
+ BaseSocketGetIpMulticastTtlResultErr = 2 // 0x00000002
+)
+
+type BaseSocketGetIpMulticastTtlResult struct {
+ I_baseSocketGetIpMulticastTtlResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketGetIpMulticastTtlResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketGetIpMulticastTtlResult) reset() {
+ switch _m.I_baseSocketGetIpMulticastTtlResultTag {
+ case 1:
+ var _zeroed BaseSocketGetIpMulticastTtlResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketGetIpMulticastTtlResult) Which() I_baseSocketGetIpMulticastTtlResultTag {
+ return _m.I_baseSocketGetIpMulticastTtlResultTag
+}
+
+func (_m *BaseSocketGetIpMulticastTtlResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketGetIpMulticastTtlResultTag)
+}
+
+func (_m *BaseSocketGetIpMulticastTtlResult) SetResponse(response BaseSocketGetIpMulticastTtlResponse) {
+ _m.reset()
+ _m.I_baseSocketGetIpMulticastTtlResultTag = BaseSocketGetIpMulticastTtlResultResponse
+ _m.Response = response
+}
+
+func BaseSocketGetIpMulticastTtlResultWithResponse(response BaseSocketGetIpMulticastTtlResponse) BaseSocketGetIpMulticastTtlResult {
+ var _u BaseSocketGetIpMulticastTtlResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketGetIpMulticastTtlResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketGetIpMulticastTtlResultTag = BaseSocketGetIpMulticastTtlResultErr
+ _m.Err = err
+}
+
+func BaseSocketGetIpMulticastTtlResultWithErr(err fuchsiaposix.Errno) BaseSocketGetIpMulticastTtlResult {
+ var _u BaseSocketGetIpMulticastTtlResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketSetIpMulticastLoopbackResultTag uint64
+
+const (
+ BaseSocketSetIpMulticastLoopbackResultResponse = 1 // 0x00000001
+ BaseSocketSetIpMulticastLoopbackResultErr = 2 // 0x00000002
+)
+
+type BaseSocketSetIpMulticastLoopbackResult struct {
+ I_baseSocketSetIpMulticastLoopbackResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketSetIpMulticastLoopbackResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketSetIpMulticastLoopbackResult) reset() {
+ switch _m.I_baseSocketSetIpMulticastLoopbackResultTag {
+ case 1:
+ var _zeroed BaseSocketSetIpMulticastLoopbackResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketSetIpMulticastLoopbackResult) Which() I_baseSocketSetIpMulticastLoopbackResultTag {
+ return _m.I_baseSocketSetIpMulticastLoopbackResultTag
+}
+
+func (_m *BaseSocketSetIpMulticastLoopbackResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketSetIpMulticastLoopbackResultTag)
+}
+
+func (_m *BaseSocketSetIpMulticastLoopbackResult) SetResponse(response BaseSocketSetIpMulticastLoopbackResponse) {
+ _m.reset()
+ _m.I_baseSocketSetIpMulticastLoopbackResultTag = BaseSocketSetIpMulticastLoopbackResultResponse
+ _m.Response = response
+}
+
+func BaseSocketSetIpMulticastLoopbackResultWithResponse(response BaseSocketSetIpMulticastLoopbackResponse) BaseSocketSetIpMulticastLoopbackResult {
+ var _u BaseSocketSetIpMulticastLoopbackResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketSetIpMulticastLoopbackResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketSetIpMulticastLoopbackResultTag = BaseSocketSetIpMulticastLoopbackResultErr
+ _m.Err = err
+}
+
+func BaseSocketSetIpMulticastLoopbackResultWithErr(err fuchsiaposix.Errno) BaseSocketSetIpMulticastLoopbackResult {
+ var _u BaseSocketSetIpMulticastLoopbackResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketGetIpMulticastLoopbackResultTag uint64
+
+const (
+ BaseSocketGetIpMulticastLoopbackResultResponse = 1 // 0x00000001
+ BaseSocketGetIpMulticastLoopbackResultErr = 2 // 0x00000002
+)
+
+type BaseSocketGetIpMulticastLoopbackResult struct {
+ I_baseSocketGetIpMulticastLoopbackResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketGetIpMulticastLoopbackResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketGetIpMulticastLoopbackResult) reset() {
+ switch _m.I_baseSocketGetIpMulticastLoopbackResultTag {
+ case 1:
+ var _zeroed BaseSocketGetIpMulticastLoopbackResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketGetIpMulticastLoopbackResult) Which() I_baseSocketGetIpMulticastLoopbackResultTag {
+ return _m.I_baseSocketGetIpMulticastLoopbackResultTag
+}
+
+func (_m *BaseSocketGetIpMulticastLoopbackResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketGetIpMulticastLoopbackResultTag)
+}
+
+func (_m *BaseSocketGetIpMulticastLoopbackResult) SetResponse(response BaseSocketGetIpMulticastLoopbackResponse) {
+ _m.reset()
+ _m.I_baseSocketGetIpMulticastLoopbackResultTag = BaseSocketGetIpMulticastLoopbackResultResponse
+ _m.Response = response
+}
+
+func BaseSocketGetIpMulticastLoopbackResultWithResponse(response BaseSocketGetIpMulticastLoopbackResponse) BaseSocketGetIpMulticastLoopbackResult {
+ var _u BaseSocketGetIpMulticastLoopbackResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketGetIpMulticastLoopbackResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketGetIpMulticastLoopbackResultTag = BaseSocketGetIpMulticastLoopbackResultErr
+ _m.Err = err
+}
+
+func BaseSocketGetIpMulticastLoopbackResultWithErr(err fuchsiaposix.Errno) BaseSocketGetIpMulticastLoopbackResult {
+ var _u BaseSocketGetIpMulticastLoopbackResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketAddIpMembershipResultTag uint64
+
+const (
+ BaseSocketAddIpMembershipResultResponse = 1 // 0x00000001
+ BaseSocketAddIpMembershipResultErr = 2 // 0x00000002
+)
+
+type BaseSocketAddIpMembershipResult struct {
+ I_baseSocketAddIpMembershipResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketAddIpMembershipResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketAddIpMembershipResult) reset() {
+ switch _m.I_baseSocketAddIpMembershipResultTag {
+ case 1:
+ var _zeroed BaseSocketAddIpMembershipResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketAddIpMembershipResult) Which() I_baseSocketAddIpMembershipResultTag {
+ return _m.I_baseSocketAddIpMembershipResultTag
+}
+
+func (_m *BaseSocketAddIpMembershipResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketAddIpMembershipResultTag)
+}
+
+func (_m *BaseSocketAddIpMembershipResult) SetResponse(response BaseSocketAddIpMembershipResponse) {
+ _m.reset()
+ _m.I_baseSocketAddIpMembershipResultTag = BaseSocketAddIpMembershipResultResponse
+ _m.Response = response
+}
+
+func BaseSocketAddIpMembershipResultWithResponse(response BaseSocketAddIpMembershipResponse) BaseSocketAddIpMembershipResult {
+ var _u BaseSocketAddIpMembershipResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketAddIpMembershipResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketAddIpMembershipResultTag = BaseSocketAddIpMembershipResultErr
+ _m.Err = err
+}
+
+func BaseSocketAddIpMembershipResultWithErr(err fuchsiaposix.Errno) BaseSocketAddIpMembershipResult {
+ var _u BaseSocketAddIpMembershipResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketDropIpMembershipResultTag uint64
+
+const (
+ BaseSocketDropIpMembershipResultResponse = 1 // 0x00000001
+ BaseSocketDropIpMembershipResultErr = 2 // 0x00000002
+)
+
+type BaseSocketDropIpMembershipResult struct {
+ I_baseSocketDropIpMembershipResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketDropIpMembershipResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketDropIpMembershipResult) reset() {
+ switch _m.I_baseSocketDropIpMembershipResultTag {
+ case 1:
+ var _zeroed BaseSocketDropIpMembershipResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketDropIpMembershipResult) Which() I_baseSocketDropIpMembershipResultTag {
+ return _m.I_baseSocketDropIpMembershipResultTag
+}
+
+func (_m *BaseSocketDropIpMembershipResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketDropIpMembershipResultTag)
+}
+
+func (_m *BaseSocketDropIpMembershipResult) SetResponse(response BaseSocketDropIpMembershipResponse) {
+ _m.reset()
+ _m.I_baseSocketDropIpMembershipResultTag = BaseSocketDropIpMembershipResultResponse
+ _m.Response = response
+}
+
+func BaseSocketDropIpMembershipResultWithResponse(response BaseSocketDropIpMembershipResponse) BaseSocketDropIpMembershipResult {
+ var _u BaseSocketDropIpMembershipResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketDropIpMembershipResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketDropIpMembershipResultTag = BaseSocketDropIpMembershipResultErr
+ _m.Err = err
+}
+
+func BaseSocketDropIpMembershipResultWithErr(err fuchsiaposix.Errno) BaseSocketDropIpMembershipResult {
+ var _u BaseSocketDropIpMembershipResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketAddIpv6MembershipResultTag uint64
+
+const (
+ BaseSocketAddIpv6MembershipResultResponse = 1 // 0x00000001
+ BaseSocketAddIpv6MembershipResultErr = 2 // 0x00000002
+)
+
+type BaseSocketAddIpv6MembershipResult struct {
+ I_baseSocketAddIpv6MembershipResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketAddIpv6MembershipResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketAddIpv6MembershipResult) reset() {
+ switch _m.I_baseSocketAddIpv6MembershipResultTag {
+ case 1:
+ var _zeroed BaseSocketAddIpv6MembershipResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketAddIpv6MembershipResult) Which() I_baseSocketAddIpv6MembershipResultTag {
+ return _m.I_baseSocketAddIpv6MembershipResultTag
+}
+
+func (_m *BaseSocketAddIpv6MembershipResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketAddIpv6MembershipResultTag)
+}
+
+func (_m *BaseSocketAddIpv6MembershipResult) SetResponse(response BaseSocketAddIpv6MembershipResponse) {
+ _m.reset()
+ _m.I_baseSocketAddIpv6MembershipResultTag = BaseSocketAddIpv6MembershipResultResponse
+ _m.Response = response
+}
+
+func BaseSocketAddIpv6MembershipResultWithResponse(response BaseSocketAddIpv6MembershipResponse) BaseSocketAddIpv6MembershipResult {
+ var _u BaseSocketAddIpv6MembershipResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketAddIpv6MembershipResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketAddIpv6MembershipResultTag = BaseSocketAddIpv6MembershipResultErr
+ _m.Err = err
+}
+
+func BaseSocketAddIpv6MembershipResultWithErr(err fuchsiaposix.Errno) BaseSocketAddIpv6MembershipResult {
+ var _u BaseSocketAddIpv6MembershipResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketDropIpv6MembershipResultTag uint64
+
+const (
+ BaseSocketDropIpv6MembershipResultResponse = 1 // 0x00000001
+ BaseSocketDropIpv6MembershipResultErr = 2 // 0x00000002
+)
+
+type BaseSocketDropIpv6MembershipResult struct {
+ I_baseSocketDropIpv6MembershipResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketDropIpv6MembershipResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketDropIpv6MembershipResult) reset() {
+ switch _m.I_baseSocketDropIpv6MembershipResultTag {
+ case 1:
+ var _zeroed BaseSocketDropIpv6MembershipResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketDropIpv6MembershipResult) Which() I_baseSocketDropIpv6MembershipResultTag {
+ return _m.I_baseSocketDropIpv6MembershipResultTag
+}
+
+func (_m *BaseSocketDropIpv6MembershipResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketDropIpv6MembershipResultTag)
+}
+
+func (_m *BaseSocketDropIpv6MembershipResult) SetResponse(response BaseSocketDropIpv6MembershipResponse) {
+ _m.reset()
+ _m.I_baseSocketDropIpv6MembershipResultTag = BaseSocketDropIpv6MembershipResultResponse
+ _m.Response = response
+}
+
+func BaseSocketDropIpv6MembershipResultWithResponse(response BaseSocketDropIpv6MembershipResponse) BaseSocketDropIpv6MembershipResult {
+ var _u BaseSocketDropIpv6MembershipResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketDropIpv6MembershipResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketDropIpv6MembershipResultTag = BaseSocketDropIpv6MembershipResultErr
+ _m.Err = err
+}
+
+func BaseSocketDropIpv6MembershipResultWithErr(err fuchsiaposix.Errno) BaseSocketDropIpv6MembershipResult {
+ var _u BaseSocketDropIpv6MembershipResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketSetIpv6MulticastInterfaceResultTag uint64
+
+const (
+ BaseSocketSetIpv6MulticastInterfaceResultResponse = 1 // 0x00000001
+ BaseSocketSetIpv6MulticastInterfaceResultErr = 2 // 0x00000002
+)
+
+type BaseSocketSetIpv6MulticastInterfaceResult struct {
+ I_baseSocketSetIpv6MulticastInterfaceResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketSetIpv6MulticastInterfaceResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketSetIpv6MulticastInterfaceResult) reset() {
+ switch _m.I_baseSocketSetIpv6MulticastInterfaceResultTag {
+ case 1:
+ var _zeroed BaseSocketSetIpv6MulticastInterfaceResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketSetIpv6MulticastInterfaceResult) Which() I_baseSocketSetIpv6MulticastInterfaceResultTag {
+ return _m.I_baseSocketSetIpv6MulticastInterfaceResultTag
+}
+
+func (_m *BaseSocketSetIpv6MulticastInterfaceResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketSetIpv6MulticastInterfaceResultTag)
+}
+
+func (_m *BaseSocketSetIpv6MulticastInterfaceResult) SetResponse(response BaseSocketSetIpv6MulticastInterfaceResponse) {
+ _m.reset()
+ _m.I_baseSocketSetIpv6MulticastInterfaceResultTag = BaseSocketSetIpv6MulticastInterfaceResultResponse
+ _m.Response = response
+}
+
+func BaseSocketSetIpv6MulticastInterfaceResultWithResponse(response BaseSocketSetIpv6MulticastInterfaceResponse) BaseSocketSetIpv6MulticastInterfaceResult {
+ var _u BaseSocketSetIpv6MulticastInterfaceResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketSetIpv6MulticastInterfaceResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketSetIpv6MulticastInterfaceResultTag = BaseSocketSetIpv6MulticastInterfaceResultErr
+ _m.Err = err
+}
+
+func BaseSocketSetIpv6MulticastInterfaceResultWithErr(err fuchsiaposix.Errno) BaseSocketSetIpv6MulticastInterfaceResult {
+ var _u BaseSocketSetIpv6MulticastInterfaceResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketGetIpv6MulticastInterfaceResultTag uint64
+
+const (
+ BaseSocketGetIpv6MulticastInterfaceResultResponse = 1 // 0x00000001
+ BaseSocketGetIpv6MulticastInterfaceResultErr = 2 // 0x00000002
+)
+
+type BaseSocketGetIpv6MulticastInterfaceResult struct {
+ I_baseSocketGetIpv6MulticastInterfaceResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketGetIpv6MulticastInterfaceResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketGetIpv6MulticastInterfaceResult) reset() {
+ switch _m.I_baseSocketGetIpv6MulticastInterfaceResultTag {
+ case 1:
+ var _zeroed BaseSocketGetIpv6MulticastInterfaceResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketGetIpv6MulticastInterfaceResult) Which() I_baseSocketGetIpv6MulticastInterfaceResultTag {
+ return _m.I_baseSocketGetIpv6MulticastInterfaceResultTag
+}
+
+func (_m *BaseSocketGetIpv6MulticastInterfaceResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketGetIpv6MulticastInterfaceResultTag)
+}
+
+func (_m *BaseSocketGetIpv6MulticastInterfaceResult) SetResponse(response BaseSocketGetIpv6MulticastInterfaceResponse) {
+ _m.reset()
+ _m.I_baseSocketGetIpv6MulticastInterfaceResultTag = BaseSocketGetIpv6MulticastInterfaceResultResponse
+ _m.Response = response
+}
+
+func BaseSocketGetIpv6MulticastInterfaceResultWithResponse(response BaseSocketGetIpv6MulticastInterfaceResponse) BaseSocketGetIpv6MulticastInterfaceResult {
+ var _u BaseSocketGetIpv6MulticastInterfaceResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketGetIpv6MulticastInterfaceResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketGetIpv6MulticastInterfaceResultTag = BaseSocketGetIpv6MulticastInterfaceResultErr
+ _m.Err = err
+}
+
+func BaseSocketGetIpv6MulticastInterfaceResultWithErr(err fuchsiaposix.Errno) BaseSocketGetIpv6MulticastInterfaceResult {
+ var _u BaseSocketGetIpv6MulticastInterfaceResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketSetIpv6MulticastHopsResultTag uint64
+
+const (
+ BaseSocketSetIpv6MulticastHopsResultResponse = 1 // 0x00000001
+ BaseSocketSetIpv6MulticastHopsResultErr = 2 // 0x00000002
+)
+
+type BaseSocketSetIpv6MulticastHopsResult struct {
+ I_baseSocketSetIpv6MulticastHopsResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketSetIpv6MulticastHopsResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketSetIpv6MulticastHopsResult) reset() {
+ switch _m.I_baseSocketSetIpv6MulticastHopsResultTag {
+ case 1:
+ var _zeroed BaseSocketSetIpv6MulticastHopsResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketSetIpv6MulticastHopsResult) Which() I_baseSocketSetIpv6MulticastHopsResultTag {
+ return _m.I_baseSocketSetIpv6MulticastHopsResultTag
+}
+
+func (_m *BaseSocketSetIpv6MulticastHopsResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketSetIpv6MulticastHopsResultTag)
+}
+
+func (_m *BaseSocketSetIpv6MulticastHopsResult) SetResponse(response BaseSocketSetIpv6MulticastHopsResponse) {
+ _m.reset()
+ _m.I_baseSocketSetIpv6MulticastHopsResultTag = BaseSocketSetIpv6MulticastHopsResultResponse
+ _m.Response = response
+}
+
+func BaseSocketSetIpv6MulticastHopsResultWithResponse(response BaseSocketSetIpv6MulticastHopsResponse) BaseSocketSetIpv6MulticastHopsResult {
+ var _u BaseSocketSetIpv6MulticastHopsResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketSetIpv6MulticastHopsResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketSetIpv6MulticastHopsResultTag = BaseSocketSetIpv6MulticastHopsResultErr
+ _m.Err = err
+}
+
+func BaseSocketSetIpv6MulticastHopsResultWithErr(err fuchsiaposix.Errno) BaseSocketSetIpv6MulticastHopsResult {
+ var _u BaseSocketSetIpv6MulticastHopsResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketGetIpv6MulticastHopsResultTag uint64
+
+const (
+ BaseSocketGetIpv6MulticastHopsResultResponse = 1 // 0x00000001
+ BaseSocketGetIpv6MulticastHopsResultErr = 2 // 0x00000002
+)
+
+type BaseSocketGetIpv6MulticastHopsResult struct {
+ I_baseSocketGetIpv6MulticastHopsResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketGetIpv6MulticastHopsResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketGetIpv6MulticastHopsResult) reset() {
+ switch _m.I_baseSocketGetIpv6MulticastHopsResultTag {
+ case 1:
+ var _zeroed BaseSocketGetIpv6MulticastHopsResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketGetIpv6MulticastHopsResult) Which() I_baseSocketGetIpv6MulticastHopsResultTag {
+ return _m.I_baseSocketGetIpv6MulticastHopsResultTag
+}
+
+func (_m *BaseSocketGetIpv6MulticastHopsResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketGetIpv6MulticastHopsResultTag)
+}
+
+func (_m *BaseSocketGetIpv6MulticastHopsResult) SetResponse(response BaseSocketGetIpv6MulticastHopsResponse) {
+ _m.reset()
+ _m.I_baseSocketGetIpv6MulticastHopsResultTag = BaseSocketGetIpv6MulticastHopsResultResponse
+ _m.Response = response
+}
+
+func BaseSocketGetIpv6MulticastHopsResultWithResponse(response BaseSocketGetIpv6MulticastHopsResponse) BaseSocketGetIpv6MulticastHopsResult {
+ var _u BaseSocketGetIpv6MulticastHopsResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketGetIpv6MulticastHopsResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketGetIpv6MulticastHopsResultTag = BaseSocketGetIpv6MulticastHopsResultErr
+ _m.Err = err
+}
+
+func BaseSocketGetIpv6MulticastHopsResultWithErr(err fuchsiaposix.Errno) BaseSocketGetIpv6MulticastHopsResult {
+ var _u BaseSocketGetIpv6MulticastHopsResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketSetIpv6MulticastLoopbackResultTag uint64
+
+const (
+ BaseSocketSetIpv6MulticastLoopbackResultResponse = 1 // 0x00000001
+ BaseSocketSetIpv6MulticastLoopbackResultErr = 2 // 0x00000002
+)
+
+type BaseSocketSetIpv6MulticastLoopbackResult struct {
+ I_baseSocketSetIpv6MulticastLoopbackResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketSetIpv6MulticastLoopbackResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketSetIpv6MulticastLoopbackResult) reset() {
+ switch _m.I_baseSocketSetIpv6MulticastLoopbackResultTag {
+ case 1:
+ var _zeroed BaseSocketSetIpv6MulticastLoopbackResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketSetIpv6MulticastLoopbackResult) Which() I_baseSocketSetIpv6MulticastLoopbackResultTag {
+ return _m.I_baseSocketSetIpv6MulticastLoopbackResultTag
+}
+
+func (_m *BaseSocketSetIpv6MulticastLoopbackResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketSetIpv6MulticastLoopbackResultTag)
+}
+
+func (_m *BaseSocketSetIpv6MulticastLoopbackResult) SetResponse(response BaseSocketSetIpv6MulticastLoopbackResponse) {
+ _m.reset()
+ _m.I_baseSocketSetIpv6MulticastLoopbackResultTag = BaseSocketSetIpv6MulticastLoopbackResultResponse
+ _m.Response = response
+}
+
+func BaseSocketSetIpv6MulticastLoopbackResultWithResponse(response BaseSocketSetIpv6MulticastLoopbackResponse) BaseSocketSetIpv6MulticastLoopbackResult {
+ var _u BaseSocketSetIpv6MulticastLoopbackResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketSetIpv6MulticastLoopbackResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketSetIpv6MulticastLoopbackResultTag = BaseSocketSetIpv6MulticastLoopbackResultErr
+ _m.Err = err
+}
+
+func BaseSocketSetIpv6MulticastLoopbackResultWithErr(err fuchsiaposix.Errno) BaseSocketSetIpv6MulticastLoopbackResult {
+ var _u BaseSocketSetIpv6MulticastLoopbackResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketGetIpv6MulticastLoopbackResultTag uint64
+
+const (
+ BaseSocketGetIpv6MulticastLoopbackResultResponse = 1 // 0x00000001
+ BaseSocketGetIpv6MulticastLoopbackResultErr = 2 // 0x00000002
+)
+
+type BaseSocketGetIpv6MulticastLoopbackResult struct {
+ I_baseSocketGetIpv6MulticastLoopbackResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketGetIpv6MulticastLoopbackResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketGetIpv6MulticastLoopbackResult) reset() {
+ switch _m.I_baseSocketGetIpv6MulticastLoopbackResultTag {
+ case 1:
+ var _zeroed BaseSocketGetIpv6MulticastLoopbackResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketGetIpv6MulticastLoopbackResult) Which() I_baseSocketGetIpv6MulticastLoopbackResultTag {
+ return _m.I_baseSocketGetIpv6MulticastLoopbackResultTag
+}
+
+func (_m *BaseSocketGetIpv6MulticastLoopbackResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketGetIpv6MulticastLoopbackResultTag)
+}
+
+func (_m *BaseSocketGetIpv6MulticastLoopbackResult) SetResponse(response BaseSocketGetIpv6MulticastLoopbackResponse) {
+ _m.reset()
+ _m.I_baseSocketGetIpv6MulticastLoopbackResultTag = BaseSocketGetIpv6MulticastLoopbackResultResponse
+ _m.Response = response
+}
+
+func BaseSocketGetIpv6MulticastLoopbackResultWithResponse(response BaseSocketGetIpv6MulticastLoopbackResponse) BaseSocketGetIpv6MulticastLoopbackResult {
+ var _u BaseSocketGetIpv6MulticastLoopbackResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketGetIpv6MulticastLoopbackResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketGetIpv6MulticastLoopbackResultTag = BaseSocketGetIpv6MulticastLoopbackResultErr
+ _m.Err = err
+}
+
+func BaseSocketGetIpv6MulticastLoopbackResultWithErr(err fuchsiaposix.Errno) BaseSocketGetIpv6MulticastLoopbackResult {
+ var _u BaseSocketGetIpv6MulticastLoopbackResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketSetIpv6OnlyResultTag uint64
+
+const (
+ BaseSocketSetIpv6OnlyResultResponse = 1 // 0x00000001
+ BaseSocketSetIpv6OnlyResultErr = 2 // 0x00000002
+)
+
+type BaseSocketSetIpv6OnlyResult struct {
+ I_baseSocketSetIpv6OnlyResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketSetIpv6OnlyResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketSetIpv6OnlyResult) reset() {
+ switch _m.I_baseSocketSetIpv6OnlyResultTag {
+ case 1:
+ var _zeroed BaseSocketSetIpv6OnlyResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketSetIpv6OnlyResult) Which() I_baseSocketSetIpv6OnlyResultTag {
+ return _m.I_baseSocketSetIpv6OnlyResultTag
+}
+
+func (_m *BaseSocketSetIpv6OnlyResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketSetIpv6OnlyResultTag)
+}
+
+func (_m *BaseSocketSetIpv6OnlyResult) SetResponse(response BaseSocketSetIpv6OnlyResponse) {
+ _m.reset()
+ _m.I_baseSocketSetIpv6OnlyResultTag = BaseSocketSetIpv6OnlyResultResponse
+ _m.Response = response
+}
+
+func BaseSocketSetIpv6OnlyResultWithResponse(response BaseSocketSetIpv6OnlyResponse) BaseSocketSetIpv6OnlyResult {
+ var _u BaseSocketSetIpv6OnlyResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketSetIpv6OnlyResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketSetIpv6OnlyResultTag = BaseSocketSetIpv6OnlyResultErr
+ _m.Err = err
+}
+
+func BaseSocketSetIpv6OnlyResultWithErr(err fuchsiaposix.Errno) BaseSocketSetIpv6OnlyResult {
+ var _u BaseSocketSetIpv6OnlyResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketGetIpv6OnlyResultTag uint64
+
+const (
+ BaseSocketGetIpv6OnlyResultResponse = 1 // 0x00000001
+ BaseSocketGetIpv6OnlyResultErr = 2 // 0x00000002
+)
+
+type BaseSocketGetIpv6OnlyResult struct {
+ I_baseSocketGetIpv6OnlyResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketGetIpv6OnlyResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketGetIpv6OnlyResult) reset() {
+ switch _m.I_baseSocketGetIpv6OnlyResultTag {
+ case 1:
+ var _zeroed BaseSocketGetIpv6OnlyResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketGetIpv6OnlyResult) Which() I_baseSocketGetIpv6OnlyResultTag {
+ return _m.I_baseSocketGetIpv6OnlyResultTag
+}
+
+func (_m *BaseSocketGetIpv6OnlyResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketGetIpv6OnlyResultTag)
+}
+
+func (_m *BaseSocketGetIpv6OnlyResult) SetResponse(response BaseSocketGetIpv6OnlyResponse) {
+ _m.reset()
+ _m.I_baseSocketGetIpv6OnlyResultTag = BaseSocketGetIpv6OnlyResultResponse
+ _m.Response = response
+}
+
+func BaseSocketGetIpv6OnlyResultWithResponse(response BaseSocketGetIpv6OnlyResponse) BaseSocketGetIpv6OnlyResult {
+ var _u BaseSocketGetIpv6OnlyResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketGetIpv6OnlyResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketGetIpv6OnlyResultTag = BaseSocketGetIpv6OnlyResultErr
+ _m.Err = err
+}
+
+func BaseSocketGetIpv6OnlyResultWithErr(err fuchsiaposix.Errno) BaseSocketGetIpv6OnlyResult {
+ var _u BaseSocketGetIpv6OnlyResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketSetIpv6ReceiveTrafficClassResultTag uint64
+
+const (
+ BaseSocketSetIpv6ReceiveTrafficClassResultResponse = 1 // 0x00000001
+ BaseSocketSetIpv6ReceiveTrafficClassResultErr = 2 // 0x00000002
+)
+
+type BaseSocketSetIpv6ReceiveTrafficClassResult struct {
+ I_baseSocketSetIpv6ReceiveTrafficClassResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketSetIpv6ReceiveTrafficClassResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketSetIpv6ReceiveTrafficClassResult) reset() {
+ switch _m.I_baseSocketSetIpv6ReceiveTrafficClassResultTag {
+ case 1:
+ var _zeroed BaseSocketSetIpv6ReceiveTrafficClassResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketSetIpv6ReceiveTrafficClassResult) Which() I_baseSocketSetIpv6ReceiveTrafficClassResultTag {
+ return _m.I_baseSocketSetIpv6ReceiveTrafficClassResultTag
+}
+
+func (_m *BaseSocketSetIpv6ReceiveTrafficClassResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketSetIpv6ReceiveTrafficClassResultTag)
+}
+
+func (_m *BaseSocketSetIpv6ReceiveTrafficClassResult) SetResponse(response BaseSocketSetIpv6ReceiveTrafficClassResponse) {
+ _m.reset()
+ _m.I_baseSocketSetIpv6ReceiveTrafficClassResultTag = BaseSocketSetIpv6ReceiveTrafficClassResultResponse
+ _m.Response = response
+}
+
+func BaseSocketSetIpv6ReceiveTrafficClassResultWithResponse(response BaseSocketSetIpv6ReceiveTrafficClassResponse) BaseSocketSetIpv6ReceiveTrafficClassResult {
+ var _u BaseSocketSetIpv6ReceiveTrafficClassResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketSetIpv6ReceiveTrafficClassResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketSetIpv6ReceiveTrafficClassResultTag = BaseSocketSetIpv6ReceiveTrafficClassResultErr
+ _m.Err = err
+}
+
+func BaseSocketSetIpv6ReceiveTrafficClassResultWithErr(err fuchsiaposix.Errno) BaseSocketSetIpv6ReceiveTrafficClassResult {
+ var _u BaseSocketSetIpv6ReceiveTrafficClassResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketGetIpv6ReceiveTrafficClassResultTag uint64
+
+const (
+ BaseSocketGetIpv6ReceiveTrafficClassResultResponse = 1 // 0x00000001
+ BaseSocketGetIpv6ReceiveTrafficClassResultErr = 2 // 0x00000002
+)
+
+type BaseSocketGetIpv6ReceiveTrafficClassResult struct {
+ I_baseSocketGetIpv6ReceiveTrafficClassResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketGetIpv6ReceiveTrafficClassResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketGetIpv6ReceiveTrafficClassResult) reset() {
+ switch _m.I_baseSocketGetIpv6ReceiveTrafficClassResultTag {
+ case 1:
+ var _zeroed BaseSocketGetIpv6ReceiveTrafficClassResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketGetIpv6ReceiveTrafficClassResult) Which() I_baseSocketGetIpv6ReceiveTrafficClassResultTag {
+ return _m.I_baseSocketGetIpv6ReceiveTrafficClassResultTag
+}
+
+func (_m *BaseSocketGetIpv6ReceiveTrafficClassResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketGetIpv6ReceiveTrafficClassResultTag)
+}
+
+func (_m *BaseSocketGetIpv6ReceiveTrafficClassResult) SetResponse(response BaseSocketGetIpv6ReceiveTrafficClassResponse) {
+ _m.reset()
+ _m.I_baseSocketGetIpv6ReceiveTrafficClassResultTag = BaseSocketGetIpv6ReceiveTrafficClassResultResponse
+ _m.Response = response
+}
+
+func BaseSocketGetIpv6ReceiveTrafficClassResultWithResponse(response BaseSocketGetIpv6ReceiveTrafficClassResponse) BaseSocketGetIpv6ReceiveTrafficClassResult {
+ var _u BaseSocketGetIpv6ReceiveTrafficClassResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketGetIpv6ReceiveTrafficClassResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketGetIpv6ReceiveTrafficClassResultTag = BaseSocketGetIpv6ReceiveTrafficClassResultErr
+ _m.Err = err
+}
+
+func BaseSocketGetIpv6ReceiveTrafficClassResultWithErr(err fuchsiaposix.Errno) BaseSocketGetIpv6ReceiveTrafficClassResult {
+ var _u BaseSocketGetIpv6ReceiveTrafficClassResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketSetIpv6TrafficClassResultTag uint64
+
+const (
+ BaseSocketSetIpv6TrafficClassResultResponse = 1 // 0x00000001
+ BaseSocketSetIpv6TrafficClassResultErr = 2 // 0x00000002
+)
+
+type BaseSocketSetIpv6TrafficClassResult struct {
+ I_baseSocketSetIpv6TrafficClassResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketSetIpv6TrafficClassResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketSetIpv6TrafficClassResult) reset() {
+ switch _m.I_baseSocketSetIpv6TrafficClassResultTag {
+ case 1:
+ var _zeroed BaseSocketSetIpv6TrafficClassResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketSetIpv6TrafficClassResult) Which() I_baseSocketSetIpv6TrafficClassResultTag {
+ return _m.I_baseSocketSetIpv6TrafficClassResultTag
+}
+
+func (_m *BaseSocketSetIpv6TrafficClassResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketSetIpv6TrafficClassResultTag)
+}
+
+func (_m *BaseSocketSetIpv6TrafficClassResult) SetResponse(response BaseSocketSetIpv6TrafficClassResponse) {
+ _m.reset()
+ _m.I_baseSocketSetIpv6TrafficClassResultTag = BaseSocketSetIpv6TrafficClassResultResponse
+ _m.Response = response
+}
+
+func BaseSocketSetIpv6TrafficClassResultWithResponse(response BaseSocketSetIpv6TrafficClassResponse) BaseSocketSetIpv6TrafficClassResult {
+ var _u BaseSocketSetIpv6TrafficClassResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketSetIpv6TrafficClassResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketSetIpv6TrafficClassResultTag = BaseSocketSetIpv6TrafficClassResultErr
+ _m.Err = err
+}
+
+func BaseSocketSetIpv6TrafficClassResultWithErr(err fuchsiaposix.Errno) BaseSocketSetIpv6TrafficClassResult {
+ var _u BaseSocketSetIpv6TrafficClassResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_baseSocketGetIpv6TrafficClassResultTag uint64
+
+const (
+ BaseSocketGetIpv6TrafficClassResultResponse = 1 // 0x00000001
+ BaseSocketGetIpv6TrafficClassResultErr = 2 // 0x00000002
+)
+
+type BaseSocketGetIpv6TrafficClassResult struct {
+ I_baseSocketGetIpv6TrafficClassResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response BaseSocketGetIpv6TrafficClassResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *BaseSocketGetIpv6TrafficClassResult) reset() {
+ switch _m.I_baseSocketGetIpv6TrafficClassResultTag {
+ case 1:
+ var _zeroed BaseSocketGetIpv6TrafficClassResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *BaseSocketGetIpv6TrafficClassResult) Which() I_baseSocketGetIpv6TrafficClassResultTag {
+ return _m.I_baseSocketGetIpv6TrafficClassResultTag
+}
+
+func (_m *BaseSocketGetIpv6TrafficClassResult) Ordinal() uint64 {
+ return uint64(_m.I_baseSocketGetIpv6TrafficClassResultTag)
+}
+
+func (_m *BaseSocketGetIpv6TrafficClassResult) SetResponse(response BaseSocketGetIpv6TrafficClassResponse) {
+ _m.reset()
+ _m.I_baseSocketGetIpv6TrafficClassResultTag = BaseSocketGetIpv6TrafficClassResultResponse
+ _m.Response = response
+}
+
+func BaseSocketGetIpv6TrafficClassResultWithResponse(response BaseSocketGetIpv6TrafficClassResponse) BaseSocketGetIpv6TrafficClassResult {
+ var _u BaseSocketGetIpv6TrafficClassResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *BaseSocketGetIpv6TrafficClassResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_baseSocketGetIpv6TrafficClassResultTag = BaseSocketGetIpv6TrafficClassResultErr
+ _m.Err = err
+}
+
+func BaseSocketGetIpv6TrafficClassResultWithErr(err fuchsiaposix.Errno) BaseSocketGetIpv6TrafficClassResult {
+ var _u BaseSocketGetIpv6TrafficClassResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_datagramSocketShutdownResultTag uint64
+
+const (
+ DatagramSocketShutdownResultResponse = 1 // 0x00000001
+ DatagramSocketShutdownResultErr = 2 // 0x00000002
+)
+
+type DatagramSocketShutdownResult struct {
+ I_datagramSocketShutdownResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response DatagramSocketShutdownResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *DatagramSocketShutdownResult) reset() {
+ switch _m.I_datagramSocketShutdownResultTag {
+ case 1:
+ var _zeroed DatagramSocketShutdownResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *DatagramSocketShutdownResult) Which() I_datagramSocketShutdownResultTag {
+ return _m.I_datagramSocketShutdownResultTag
+}
+
+func (_m *DatagramSocketShutdownResult) Ordinal() uint64 {
+ return uint64(_m.I_datagramSocketShutdownResultTag)
+}
+
+func (_m *DatagramSocketShutdownResult) SetResponse(response DatagramSocketShutdownResponse) {
+ _m.reset()
+ _m.I_datagramSocketShutdownResultTag = DatagramSocketShutdownResultResponse
+ _m.Response = response
+}
+
+func DatagramSocketShutdownResultWithResponse(response DatagramSocketShutdownResponse) DatagramSocketShutdownResult {
+ var _u DatagramSocketShutdownResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *DatagramSocketShutdownResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_datagramSocketShutdownResultTag = DatagramSocketShutdownResultErr
+ _m.Err = err
+}
+
+func DatagramSocketShutdownResultWithErr(err fuchsiaposix.Errno) DatagramSocketShutdownResult {
+ var _u DatagramSocketShutdownResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_datagramSocketRecvMsgResultTag uint64
+
+const (
+ DatagramSocketRecvMsgResultResponse = 1 // 0x00000001
+ DatagramSocketRecvMsgResultErr = 2 // 0x00000002
+)
+
+type DatagramSocketRecvMsgResult struct {
+ I_datagramSocketRecvMsgResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response DatagramSocketRecvMsgResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *DatagramSocketRecvMsgResult) reset() {
+ switch _m.I_datagramSocketRecvMsgResultTag {
+ case 1:
+ var _zeroed DatagramSocketRecvMsgResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *DatagramSocketRecvMsgResult) Which() I_datagramSocketRecvMsgResultTag {
+ return _m.I_datagramSocketRecvMsgResultTag
+}
+
+func (_m *DatagramSocketRecvMsgResult) Ordinal() uint64 {
+ return uint64(_m.I_datagramSocketRecvMsgResultTag)
+}
+
+func (_m *DatagramSocketRecvMsgResult) SetResponse(response DatagramSocketRecvMsgResponse) {
+ _m.reset()
+ _m.I_datagramSocketRecvMsgResultTag = DatagramSocketRecvMsgResultResponse
+ _m.Response = response
+}
+
+func DatagramSocketRecvMsgResultWithResponse(response DatagramSocketRecvMsgResponse) DatagramSocketRecvMsgResult {
+ var _u DatagramSocketRecvMsgResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *DatagramSocketRecvMsgResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_datagramSocketRecvMsgResultTag = DatagramSocketRecvMsgResultErr
+ _m.Err = err
+}
+
+func DatagramSocketRecvMsgResultWithErr(err fuchsiaposix.Errno) DatagramSocketRecvMsgResult {
+ var _u DatagramSocketRecvMsgResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_datagramSocketSendMsgResultTag uint64
+
+const (
+ DatagramSocketSendMsgResultResponse = 1 // 0x00000001
+ DatagramSocketSendMsgResultErr = 2 // 0x00000002
+)
+
+type DatagramSocketSendMsgResult struct {
+ I_datagramSocketSendMsgResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response DatagramSocketSendMsgResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *DatagramSocketSendMsgResult) reset() {
+ switch _m.I_datagramSocketSendMsgResultTag {
+ case 1:
+ var _zeroed DatagramSocketSendMsgResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *DatagramSocketSendMsgResult) Which() I_datagramSocketSendMsgResultTag {
+ return _m.I_datagramSocketSendMsgResultTag
+}
+
+func (_m *DatagramSocketSendMsgResult) Ordinal() uint64 {
+ return uint64(_m.I_datagramSocketSendMsgResultTag)
+}
+
+func (_m *DatagramSocketSendMsgResult) SetResponse(response DatagramSocketSendMsgResponse) {
+ _m.reset()
+ _m.I_datagramSocketSendMsgResultTag = DatagramSocketSendMsgResultResponse
+ _m.Response = response
+}
+
+func DatagramSocketSendMsgResultWithResponse(response DatagramSocketSendMsgResponse) DatagramSocketSendMsgResult {
+ var _u DatagramSocketSendMsgResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *DatagramSocketSendMsgResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_datagramSocketSendMsgResultTag = DatagramSocketSendMsgResultErr
+ _m.Err = err
+}
+
+func DatagramSocketSendMsgResultWithErr(err fuchsiaposix.Errno) DatagramSocketSendMsgResult {
+ var _u DatagramSocketSendMsgResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_datagramSocketGetInfoResultTag uint64
+
+const (
+ DatagramSocketGetInfoResultResponse = 1 // 0x00000001
+ DatagramSocketGetInfoResultErr = 2 // 0x00000002
+)
+
+type DatagramSocketGetInfoResult struct {
+ I_datagramSocketGetInfoResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response DatagramSocketGetInfoResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *DatagramSocketGetInfoResult) reset() {
+ switch _m.I_datagramSocketGetInfoResultTag {
+ case 1:
+ var _zeroed DatagramSocketGetInfoResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *DatagramSocketGetInfoResult) Which() I_datagramSocketGetInfoResultTag {
+ return _m.I_datagramSocketGetInfoResultTag
+}
+
+func (_m *DatagramSocketGetInfoResult) Ordinal() uint64 {
+ return uint64(_m.I_datagramSocketGetInfoResultTag)
+}
+
+func (_m *DatagramSocketGetInfoResult) SetResponse(response DatagramSocketGetInfoResponse) {
+ _m.reset()
+ _m.I_datagramSocketGetInfoResultTag = DatagramSocketGetInfoResultResponse
+ _m.Response = response
+}
+
+func DatagramSocketGetInfoResultWithResponse(response DatagramSocketGetInfoResponse) DatagramSocketGetInfoResult {
+ var _u DatagramSocketGetInfoResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *DatagramSocketGetInfoResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_datagramSocketGetInfoResultTag = DatagramSocketGetInfoResultErr
+ _m.Err = err
+}
+
+func DatagramSocketGetInfoResultWithErr(err fuchsiaposix.Errno) DatagramSocketGetInfoResult {
+ var _u DatagramSocketGetInfoResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_streamSocketListenResultTag uint64
+
+const (
+ StreamSocketListenResultResponse = 1 // 0x00000001
+ StreamSocketListenResultErr = 2 // 0x00000002
+)
+
+type StreamSocketListenResult struct {
+ I_streamSocketListenResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response StreamSocketListenResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *StreamSocketListenResult) reset() {
+ switch _m.I_streamSocketListenResultTag {
+ case 1:
+ var _zeroed StreamSocketListenResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *StreamSocketListenResult) Which() I_streamSocketListenResultTag {
+ return _m.I_streamSocketListenResultTag
+}
+
+func (_m *StreamSocketListenResult) Ordinal() uint64 {
+ return uint64(_m.I_streamSocketListenResultTag)
+}
+
+func (_m *StreamSocketListenResult) SetResponse(response StreamSocketListenResponse) {
+ _m.reset()
+ _m.I_streamSocketListenResultTag = StreamSocketListenResultResponse
+ _m.Response = response
+}
+
+func StreamSocketListenResultWithResponse(response StreamSocketListenResponse) StreamSocketListenResult {
+ var _u StreamSocketListenResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *StreamSocketListenResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_streamSocketListenResultTag = StreamSocketListenResultErr
+ _m.Err = err
+}
+
+func StreamSocketListenResultWithErr(err fuchsiaposix.Errno) StreamSocketListenResult {
+ var _u StreamSocketListenResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_streamSocketAcceptResultTag uint64
+
+const (
+ StreamSocketAcceptResultResponse = 1 // 0x00000001
+ StreamSocketAcceptResultErr = 2 // 0x00000002
+)
+
+type StreamSocketAcceptResult struct {
+ I_streamSocketAcceptResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"true"`
+ Response StreamSocketAcceptResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *StreamSocketAcceptResult) reset() {
+ switch _m.I_streamSocketAcceptResultTag {
+ case 1:
+ var _zeroed StreamSocketAcceptResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *StreamSocketAcceptResult) Which() I_streamSocketAcceptResultTag {
+ return _m.I_streamSocketAcceptResultTag
+}
+
+func (_m *StreamSocketAcceptResult) Ordinal() uint64 {
+ return uint64(_m.I_streamSocketAcceptResultTag)
+}
+
+func (_m *StreamSocketAcceptResult) SetResponse(response StreamSocketAcceptResponse) {
+ _m.reset()
+ _m.I_streamSocketAcceptResultTag = StreamSocketAcceptResultResponse
+ _m.Response = response
+}
+
+func StreamSocketAcceptResultWithResponse(response StreamSocketAcceptResponse) StreamSocketAcceptResult {
+ var _u StreamSocketAcceptResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *StreamSocketAcceptResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_streamSocketAcceptResultTag = StreamSocketAcceptResultErr
+ _m.Err = err
+}
+
+func StreamSocketAcceptResultWithErr(err fuchsiaposix.Errno) StreamSocketAcceptResult {
+ var _u StreamSocketAcceptResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_streamSocketGetInfoResultTag uint64
+
+const (
+ StreamSocketGetInfoResultResponse = 1 // 0x00000001
+ StreamSocketGetInfoResultErr = 2 // 0x00000002
+)
+
+type StreamSocketGetInfoResult struct {
+ I_streamSocketGetInfoResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response StreamSocketGetInfoResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *StreamSocketGetInfoResult) reset() {
+ switch _m.I_streamSocketGetInfoResultTag {
+ case 1:
+ var _zeroed StreamSocketGetInfoResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *StreamSocketGetInfoResult) Which() I_streamSocketGetInfoResultTag {
+ return _m.I_streamSocketGetInfoResultTag
+}
+
+func (_m *StreamSocketGetInfoResult) Ordinal() uint64 {
+ return uint64(_m.I_streamSocketGetInfoResultTag)
+}
+
+func (_m *StreamSocketGetInfoResult) SetResponse(response StreamSocketGetInfoResponse) {
+ _m.reset()
+ _m.I_streamSocketGetInfoResultTag = StreamSocketGetInfoResultResponse
+ _m.Response = response
+}
+
+func StreamSocketGetInfoResultWithResponse(response StreamSocketGetInfoResponse) StreamSocketGetInfoResult {
+ var _u StreamSocketGetInfoResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *StreamSocketGetInfoResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_streamSocketGetInfoResultTag = StreamSocketGetInfoResultErr
+ _m.Err = err
+}
+
+func StreamSocketGetInfoResultWithErr(err fuchsiaposix.Errno) StreamSocketGetInfoResult {
+ var _u StreamSocketGetInfoResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_streamSocketSetTcpNoDelayResultTag uint64
+
+const (
+ StreamSocketSetTcpNoDelayResultResponse = 1 // 0x00000001
+ StreamSocketSetTcpNoDelayResultErr = 2 // 0x00000002
+)
+
+type StreamSocketSetTcpNoDelayResult struct {
+ I_streamSocketSetTcpNoDelayResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response StreamSocketSetTcpNoDelayResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *StreamSocketSetTcpNoDelayResult) reset() {
+ switch _m.I_streamSocketSetTcpNoDelayResultTag {
+ case 1:
+ var _zeroed StreamSocketSetTcpNoDelayResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *StreamSocketSetTcpNoDelayResult) Which() I_streamSocketSetTcpNoDelayResultTag {
+ return _m.I_streamSocketSetTcpNoDelayResultTag
+}
+
+func (_m *StreamSocketSetTcpNoDelayResult) Ordinal() uint64 {
+ return uint64(_m.I_streamSocketSetTcpNoDelayResultTag)
+}
+
+func (_m *StreamSocketSetTcpNoDelayResult) SetResponse(response StreamSocketSetTcpNoDelayResponse) {
+ _m.reset()
+ _m.I_streamSocketSetTcpNoDelayResultTag = StreamSocketSetTcpNoDelayResultResponse
+ _m.Response = response
+}
+
+func StreamSocketSetTcpNoDelayResultWithResponse(response StreamSocketSetTcpNoDelayResponse) StreamSocketSetTcpNoDelayResult {
+ var _u StreamSocketSetTcpNoDelayResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *StreamSocketSetTcpNoDelayResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_streamSocketSetTcpNoDelayResultTag = StreamSocketSetTcpNoDelayResultErr
+ _m.Err = err
+}
+
+func StreamSocketSetTcpNoDelayResultWithErr(err fuchsiaposix.Errno) StreamSocketSetTcpNoDelayResult {
+ var _u StreamSocketSetTcpNoDelayResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_streamSocketGetTcpNoDelayResultTag uint64
+
+const (
+ StreamSocketGetTcpNoDelayResultResponse = 1 // 0x00000001
+ StreamSocketGetTcpNoDelayResultErr = 2 // 0x00000002
+)
+
+type StreamSocketGetTcpNoDelayResult struct {
+ I_streamSocketGetTcpNoDelayResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response StreamSocketGetTcpNoDelayResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *StreamSocketGetTcpNoDelayResult) reset() {
+ switch _m.I_streamSocketGetTcpNoDelayResultTag {
+ case 1:
+ var _zeroed StreamSocketGetTcpNoDelayResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *StreamSocketGetTcpNoDelayResult) Which() I_streamSocketGetTcpNoDelayResultTag {
+ return _m.I_streamSocketGetTcpNoDelayResultTag
+}
+
+func (_m *StreamSocketGetTcpNoDelayResult) Ordinal() uint64 {
+ return uint64(_m.I_streamSocketGetTcpNoDelayResultTag)
+}
+
+func (_m *StreamSocketGetTcpNoDelayResult) SetResponse(response StreamSocketGetTcpNoDelayResponse) {
+ _m.reset()
+ _m.I_streamSocketGetTcpNoDelayResultTag = StreamSocketGetTcpNoDelayResultResponse
+ _m.Response = response
+}
+
+func StreamSocketGetTcpNoDelayResultWithResponse(response StreamSocketGetTcpNoDelayResponse) StreamSocketGetTcpNoDelayResult {
+ var _u StreamSocketGetTcpNoDelayResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *StreamSocketGetTcpNoDelayResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_streamSocketGetTcpNoDelayResultTag = StreamSocketGetTcpNoDelayResultErr
+ _m.Err = err
+}
+
+func StreamSocketGetTcpNoDelayResultWithErr(err fuchsiaposix.Errno) StreamSocketGetTcpNoDelayResult {
+ var _u StreamSocketGetTcpNoDelayResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_streamSocketSetTcpMaxSegmentResultTag uint64
+
+const (
+ StreamSocketSetTcpMaxSegmentResultResponse = 1 // 0x00000001
+ StreamSocketSetTcpMaxSegmentResultErr = 2 // 0x00000002
+)
+
+type StreamSocketSetTcpMaxSegmentResult struct {
+ I_streamSocketSetTcpMaxSegmentResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response StreamSocketSetTcpMaxSegmentResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *StreamSocketSetTcpMaxSegmentResult) reset() {
+ switch _m.I_streamSocketSetTcpMaxSegmentResultTag {
+ case 1:
+ var _zeroed StreamSocketSetTcpMaxSegmentResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *StreamSocketSetTcpMaxSegmentResult) Which() I_streamSocketSetTcpMaxSegmentResultTag {
+ return _m.I_streamSocketSetTcpMaxSegmentResultTag
+}
+
+func (_m *StreamSocketSetTcpMaxSegmentResult) Ordinal() uint64 {
+ return uint64(_m.I_streamSocketSetTcpMaxSegmentResultTag)
+}
+
+func (_m *StreamSocketSetTcpMaxSegmentResult) SetResponse(response StreamSocketSetTcpMaxSegmentResponse) {
+ _m.reset()
+ _m.I_streamSocketSetTcpMaxSegmentResultTag = StreamSocketSetTcpMaxSegmentResultResponse
+ _m.Response = response
+}
+
+func StreamSocketSetTcpMaxSegmentResultWithResponse(response StreamSocketSetTcpMaxSegmentResponse) StreamSocketSetTcpMaxSegmentResult {
+ var _u StreamSocketSetTcpMaxSegmentResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *StreamSocketSetTcpMaxSegmentResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_streamSocketSetTcpMaxSegmentResultTag = StreamSocketSetTcpMaxSegmentResultErr
+ _m.Err = err
+}
+
+func StreamSocketSetTcpMaxSegmentResultWithErr(err fuchsiaposix.Errno) StreamSocketSetTcpMaxSegmentResult {
+ var _u StreamSocketSetTcpMaxSegmentResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_streamSocketGetTcpMaxSegmentResultTag uint64
+
+const (
+ StreamSocketGetTcpMaxSegmentResultResponse = 1 // 0x00000001
+ StreamSocketGetTcpMaxSegmentResultErr = 2 // 0x00000002
+)
+
+type StreamSocketGetTcpMaxSegmentResult struct {
+ I_streamSocketGetTcpMaxSegmentResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response StreamSocketGetTcpMaxSegmentResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *StreamSocketGetTcpMaxSegmentResult) reset() {
+ switch _m.I_streamSocketGetTcpMaxSegmentResultTag {
+ case 1:
+ var _zeroed StreamSocketGetTcpMaxSegmentResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *StreamSocketGetTcpMaxSegmentResult) Which() I_streamSocketGetTcpMaxSegmentResultTag {
+ return _m.I_streamSocketGetTcpMaxSegmentResultTag
+}
+
+func (_m *StreamSocketGetTcpMaxSegmentResult) Ordinal() uint64 {
+ return uint64(_m.I_streamSocketGetTcpMaxSegmentResultTag)
+}
+
+func (_m *StreamSocketGetTcpMaxSegmentResult) SetResponse(response StreamSocketGetTcpMaxSegmentResponse) {
+ _m.reset()
+ _m.I_streamSocketGetTcpMaxSegmentResultTag = StreamSocketGetTcpMaxSegmentResultResponse
+ _m.Response = response
+}
+
+func StreamSocketGetTcpMaxSegmentResultWithResponse(response StreamSocketGetTcpMaxSegmentResponse) StreamSocketGetTcpMaxSegmentResult {
+ var _u StreamSocketGetTcpMaxSegmentResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *StreamSocketGetTcpMaxSegmentResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_streamSocketGetTcpMaxSegmentResultTag = StreamSocketGetTcpMaxSegmentResultErr
+ _m.Err = err
+}
+
+func StreamSocketGetTcpMaxSegmentResultWithErr(err fuchsiaposix.Errno) StreamSocketGetTcpMaxSegmentResult {
+ var _u StreamSocketGetTcpMaxSegmentResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_streamSocketSetTcpCorkResultTag uint64
+
+const (
+ StreamSocketSetTcpCorkResultResponse = 1 // 0x00000001
+ StreamSocketSetTcpCorkResultErr = 2 // 0x00000002
+)
+
+type StreamSocketSetTcpCorkResult struct {
+ I_streamSocketSetTcpCorkResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response StreamSocketSetTcpCorkResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *StreamSocketSetTcpCorkResult) reset() {
+ switch _m.I_streamSocketSetTcpCorkResultTag {
+ case 1:
+ var _zeroed StreamSocketSetTcpCorkResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *StreamSocketSetTcpCorkResult) Which() I_streamSocketSetTcpCorkResultTag {
+ return _m.I_streamSocketSetTcpCorkResultTag
+}
+
+func (_m *StreamSocketSetTcpCorkResult) Ordinal() uint64 {
+ return uint64(_m.I_streamSocketSetTcpCorkResultTag)
+}
+
+func (_m *StreamSocketSetTcpCorkResult) SetResponse(response StreamSocketSetTcpCorkResponse) {
+ _m.reset()
+ _m.I_streamSocketSetTcpCorkResultTag = StreamSocketSetTcpCorkResultResponse
+ _m.Response = response
+}
+
+func StreamSocketSetTcpCorkResultWithResponse(response StreamSocketSetTcpCorkResponse) StreamSocketSetTcpCorkResult {
+ var _u StreamSocketSetTcpCorkResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *StreamSocketSetTcpCorkResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_streamSocketSetTcpCorkResultTag = StreamSocketSetTcpCorkResultErr
+ _m.Err = err
+}
+
+func StreamSocketSetTcpCorkResultWithErr(err fuchsiaposix.Errno) StreamSocketSetTcpCorkResult {
+ var _u StreamSocketSetTcpCorkResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_streamSocketGetTcpCorkResultTag uint64
+
+const (
+ StreamSocketGetTcpCorkResultResponse = 1 // 0x00000001
+ StreamSocketGetTcpCorkResultErr = 2 // 0x00000002
+)
+
+type StreamSocketGetTcpCorkResult struct {
+ I_streamSocketGetTcpCorkResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response StreamSocketGetTcpCorkResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *StreamSocketGetTcpCorkResult) reset() {
+ switch _m.I_streamSocketGetTcpCorkResultTag {
+ case 1:
+ var _zeroed StreamSocketGetTcpCorkResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *StreamSocketGetTcpCorkResult) Which() I_streamSocketGetTcpCorkResultTag {
+ return _m.I_streamSocketGetTcpCorkResultTag
+}
+
+func (_m *StreamSocketGetTcpCorkResult) Ordinal() uint64 {
+ return uint64(_m.I_streamSocketGetTcpCorkResultTag)
+}
+
+func (_m *StreamSocketGetTcpCorkResult) SetResponse(response StreamSocketGetTcpCorkResponse) {
+ _m.reset()
+ _m.I_streamSocketGetTcpCorkResultTag = StreamSocketGetTcpCorkResultResponse
+ _m.Response = response
+}
+
+func StreamSocketGetTcpCorkResultWithResponse(response StreamSocketGetTcpCorkResponse) StreamSocketGetTcpCorkResult {
+ var _u StreamSocketGetTcpCorkResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *StreamSocketGetTcpCorkResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_streamSocketGetTcpCorkResultTag = StreamSocketGetTcpCorkResultErr
+ _m.Err = err
+}
+
+func StreamSocketGetTcpCorkResultWithErr(err fuchsiaposix.Errno) StreamSocketGetTcpCorkResult {
+ var _u StreamSocketGetTcpCorkResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_streamSocketSetTcpKeepAliveIdleResultTag uint64
+
+const (
+ StreamSocketSetTcpKeepAliveIdleResultResponse = 1 // 0x00000001
+ StreamSocketSetTcpKeepAliveIdleResultErr = 2 // 0x00000002
+)
+
+type StreamSocketSetTcpKeepAliveIdleResult struct {
+ I_streamSocketSetTcpKeepAliveIdleResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response StreamSocketSetTcpKeepAliveIdleResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *StreamSocketSetTcpKeepAliveIdleResult) reset() {
+ switch _m.I_streamSocketSetTcpKeepAliveIdleResultTag {
+ case 1:
+ var _zeroed StreamSocketSetTcpKeepAliveIdleResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *StreamSocketSetTcpKeepAliveIdleResult) Which() I_streamSocketSetTcpKeepAliveIdleResultTag {
+ return _m.I_streamSocketSetTcpKeepAliveIdleResultTag
+}
+
+func (_m *StreamSocketSetTcpKeepAliveIdleResult) Ordinal() uint64 {
+ return uint64(_m.I_streamSocketSetTcpKeepAliveIdleResultTag)
+}
+
+func (_m *StreamSocketSetTcpKeepAliveIdleResult) SetResponse(response StreamSocketSetTcpKeepAliveIdleResponse) {
+ _m.reset()
+ _m.I_streamSocketSetTcpKeepAliveIdleResultTag = StreamSocketSetTcpKeepAliveIdleResultResponse
+ _m.Response = response
+}
+
+func StreamSocketSetTcpKeepAliveIdleResultWithResponse(response StreamSocketSetTcpKeepAliveIdleResponse) StreamSocketSetTcpKeepAliveIdleResult {
+ var _u StreamSocketSetTcpKeepAliveIdleResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *StreamSocketSetTcpKeepAliveIdleResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_streamSocketSetTcpKeepAliveIdleResultTag = StreamSocketSetTcpKeepAliveIdleResultErr
+ _m.Err = err
+}
+
+func StreamSocketSetTcpKeepAliveIdleResultWithErr(err fuchsiaposix.Errno) StreamSocketSetTcpKeepAliveIdleResult {
+ var _u StreamSocketSetTcpKeepAliveIdleResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_streamSocketGetTcpKeepAliveIdleResultTag uint64
+
+const (
+ StreamSocketGetTcpKeepAliveIdleResultResponse = 1 // 0x00000001
+ StreamSocketGetTcpKeepAliveIdleResultErr = 2 // 0x00000002
+)
+
+type StreamSocketGetTcpKeepAliveIdleResult struct {
+ I_streamSocketGetTcpKeepAliveIdleResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response StreamSocketGetTcpKeepAliveIdleResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *StreamSocketGetTcpKeepAliveIdleResult) reset() {
+ switch _m.I_streamSocketGetTcpKeepAliveIdleResultTag {
+ case 1:
+ var _zeroed StreamSocketGetTcpKeepAliveIdleResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *StreamSocketGetTcpKeepAliveIdleResult) Which() I_streamSocketGetTcpKeepAliveIdleResultTag {
+ return _m.I_streamSocketGetTcpKeepAliveIdleResultTag
+}
+
+func (_m *StreamSocketGetTcpKeepAliveIdleResult) Ordinal() uint64 {
+ return uint64(_m.I_streamSocketGetTcpKeepAliveIdleResultTag)
+}
+
+func (_m *StreamSocketGetTcpKeepAliveIdleResult) SetResponse(response StreamSocketGetTcpKeepAliveIdleResponse) {
+ _m.reset()
+ _m.I_streamSocketGetTcpKeepAliveIdleResultTag = StreamSocketGetTcpKeepAliveIdleResultResponse
+ _m.Response = response
+}
+
+func StreamSocketGetTcpKeepAliveIdleResultWithResponse(response StreamSocketGetTcpKeepAliveIdleResponse) StreamSocketGetTcpKeepAliveIdleResult {
+ var _u StreamSocketGetTcpKeepAliveIdleResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *StreamSocketGetTcpKeepAliveIdleResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_streamSocketGetTcpKeepAliveIdleResultTag = StreamSocketGetTcpKeepAliveIdleResultErr
+ _m.Err = err
+}
+
+func StreamSocketGetTcpKeepAliveIdleResultWithErr(err fuchsiaposix.Errno) StreamSocketGetTcpKeepAliveIdleResult {
+ var _u StreamSocketGetTcpKeepAliveIdleResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_streamSocketSetTcpKeepAliveIntervalResultTag uint64
+
+const (
+ StreamSocketSetTcpKeepAliveIntervalResultResponse = 1 // 0x00000001
+ StreamSocketSetTcpKeepAliveIntervalResultErr = 2 // 0x00000002
+)
+
+type StreamSocketSetTcpKeepAliveIntervalResult struct {
+ I_streamSocketSetTcpKeepAliveIntervalResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response StreamSocketSetTcpKeepAliveIntervalResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *StreamSocketSetTcpKeepAliveIntervalResult) reset() {
+ switch _m.I_streamSocketSetTcpKeepAliveIntervalResultTag {
+ case 1:
+ var _zeroed StreamSocketSetTcpKeepAliveIntervalResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *StreamSocketSetTcpKeepAliveIntervalResult) Which() I_streamSocketSetTcpKeepAliveIntervalResultTag {
+ return _m.I_streamSocketSetTcpKeepAliveIntervalResultTag
+}
+
+func (_m *StreamSocketSetTcpKeepAliveIntervalResult) Ordinal() uint64 {
+ return uint64(_m.I_streamSocketSetTcpKeepAliveIntervalResultTag)
+}
+
+func (_m *StreamSocketSetTcpKeepAliveIntervalResult) SetResponse(response StreamSocketSetTcpKeepAliveIntervalResponse) {
+ _m.reset()
+ _m.I_streamSocketSetTcpKeepAliveIntervalResultTag = StreamSocketSetTcpKeepAliveIntervalResultResponse
+ _m.Response = response
+}
+
+func StreamSocketSetTcpKeepAliveIntervalResultWithResponse(response StreamSocketSetTcpKeepAliveIntervalResponse) StreamSocketSetTcpKeepAliveIntervalResult {
+ var _u StreamSocketSetTcpKeepAliveIntervalResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *StreamSocketSetTcpKeepAliveIntervalResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_streamSocketSetTcpKeepAliveIntervalResultTag = StreamSocketSetTcpKeepAliveIntervalResultErr
+ _m.Err = err
+}
+
+func StreamSocketSetTcpKeepAliveIntervalResultWithErr(err fuchsiaposix.Errno) StreamSocketSetTcpKeepAliveIntervalResult {
+ var _u StreamSocketSetTcpKeepAliveIntervalResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_streamSocketGetTcpKeepAliveIntervalResultTag uint64
+
+const (
+ StreamSocketGetTcpKeepAliveIntervalResultResponse = 1 // 0x00000001
+ StreamSocketGetTcpKeepAliveIntervalResultErr = 2 // 0x00000002
+)
+
+type StreamSocketGetTcpKeepAliveIntervalResult struct {
+ I_streamSocketGetTcpKeepAliveIntervalResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response StreamSocketGetTcpKeepAliveIntervalResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *StreamSocketGetTcpKeepAliveIntervalResult) reset() {
+ switch _m.I_streamSocketGetTcpKeepAliveIntervalResultTag {
+ case 1:
+ var _zeroed StreamSocketGetTcpKeepAliveIntervalResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *StreamSocketGetTcpKeepAliveIntervalResult) Which() I_streamSocketGetTcpKeepAliveIntervalResultTag {
+ return _m.I_streamSocketGetTcpKeepAliveIntervalResultTag
+}
+
+func (_m *StreamSocketGetTcpKeepAliveIntervalResult) Ordinal() uint64 {
+ return uint64(_m.I_streamSocketGetTcpKeepAliveIntervalResultTag)
+}
+
+func (_m *StreamSocketGetTcpKeepAliveIntervalResult) SetResponse(response StreamSocketGetTcpKeepAliveIntervalResponse) {
+ _m.reset()
+ _m.I_streamSocketGetTcpKeepAliveIntervalResultTag = StreamSocketGetTcpKeepAliveIntervalResultResponse
+ _m.Response = response
+}
+
+func StreamSocketGetTcpKeepAliveIntervalResultWithResponse(response StreamSocketGetTcpKeepAliveIntervalResponse) StreamSocketGetTcpKeepAliveIntervalResult {
+ var _u StreamSocketGetTcpKeepAliveIntervalResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *StreamSocketGetTcpKeepAliveIntervalResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_streamSocketGetTcpKeepAliveIntervalResultTag = StreamSocketGetTcpKeepAliveIntervalResultErr
+ _m.Err = err
+}
+
+func StreamSocketGetTcpKeepAliveIntervalResultWithErr(err fuchsiaposix.Errno) StreamSocketGetTcpKeepAliveIntervalResult {
+ var _u StreamSocketGetTcpKeepAliveIntervalResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_streamSocketSetTcpKeepAliveCountResultTag uint64
+
+const (
+ StreamSocketSetTcpKeepAliveCountResultResponse = 1 // 0x00000001
+ StreamSocketSetTcpKeepAliveCountResultErr = 2 // 0x00000002
+)
+
+type StreamSocketSetTcpKeepAliveCountResult struct {
+ I_streamSocketSetTcpKeepAliveCountResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response StreamSocketSetTcpKeepAliveCountResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *StreamSocketSetTcpKeepAliveCountResult) reset() {
+ switch _m.I_streamSocketSetTcpKeepAliveCountResultTag {
+ case 1:
+ var _zeroed StreamSocketSetTcpKeepAliveCountResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *StreamSocketSetTcpKeepAliveCountResult) Which() I_streamSocketSetTcpKeepAliveCountResultTag {
+ return _m.I_streamSocketSetTcpKeepAliveCountResultTag
+}
+
+func (_m *StreamSocketSetTcpKeepAliveCountResult) Ordinal() uint64 {
+ return uint64(_m.I_streamSocketSetTcpKeepAliveCountResultTag)
+}
+
+func (_m *StreamSocketSetTcpKeepAliveCountResult) SetResponse(response StreamSocketSetTcpKeepAliveCountResponse) {
+ _m.reset()
+ _m.I_streamSocketSetTcpKeepAliveCountResultTag = StreamSocketSetTcpKeepAliveCountResultResponse
+ _m.Response = response
+}
+
+func StreamSocketSetTcpKeepAliveCountResultWithResponse(response StreamSocketSetTcpKeepAliveCountResponse) StreamSocketSetTcpKeepAliveCountResult {
+ var _u StreamSocketSetTcpKeepAliveCountResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *StreamSocketSetTcpKeepAliveCountResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_streamSocketSetTcpKeepAliveCountResultTag = StreamSocketSetTcpKeepAliveCountResultErr
+ _m.Err = err
+}
+
+func StreamSocketSetTcpKeepAliveCountResultWithErr(err fuchsiaposix.Errno) StreamSocketSetTcpKeepAliveCountResult {
+ var _u StreamSocketSetTcpKeepAliveCountResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_streamSocketGetTcpKeepAliveCountResultTag uint64
+
+const (
+ StreamSocketGetTcpKeepAliveCountResultResponse = 1 // 0x00000001
+ StreamSocketGetTcpKeepAliveCountResultErr = 2 // 0x00000002
+)
+
+type StreamSocketGetTcpKeepAliveCountResult struct {
+ I_streamSocketGetTcpKeepAliveCountResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response StreamSocketGetTcpKeepAliveCountResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *StreamSocketGetTcpKeepAliveCountResult) reset() {
+ switch _m.I_streamSocketGetTcpKeepAliveCountResultTag {
+ case 1:
+ var _zeroed StreamSocketGetTcpKeepAliveCountResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *StreamSocketGetTcpKeepAliveCountResult) Which() I_streamSocketGetTcpKeepAliveCountResultTag {
+ return _m.I_streamSocketGetTcpKeepAliveCountResultTag
+}
+
+func (_m *StreamSocketGetTcpKeepAliveCountResult) Ordinal() uint64 {
+ return uint64(_m.I_streamSocketGetTcpKeepAliveCountResultTag)
+}
+
+func (_m *StreamSocketGetTcpKeepAliveCountResult) SetResponse(response StreamSocketGetTcpKeepAliveCountResponse) {
+ _m.reset()
+ _m.I_streamSocketGetTcpKeepAliveCountResultTag = StreamSocketGetTcpKeepAliveCountResultResponse
+ _m.Response = response
+}
+
+func StreamSocketGetTcpKeepAliveCountResultWithResponse(response StreamSocketGetTcpKeepAliveCountResponse) StreamSocketGetTcpKeepAliveCountResult {
+ var _u StreamSocketGetTcpKeepAliveCountResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *StreamSocketGetTcpKeepAliveCountResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_streamSocketGetTcpKeepAliveCountResultTag = StreamSocketGetTcpKeepAliveCountResultErr
+ _m.Err = err
+}
+
+func StreamSocketGetTcpKeepAliveCountResultWithErr(err fuchsiaposix.Errno) StreamSocketGetTcpKeepAliveCountResult {
+ var _u StreamSocketGetTcpKeepAliveCountResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_streamSocketSetTcpSynCountResultTag uint64
+
+const (
+ StreamSocketSetTcpSynCountResultResponse = 1 // 0x00000001
+ StreamSocketSetTcpSynCountResultErr = 2 // 0x00000002
+)
+
+type StreamSocketSetTcpSynCountResult struct {
+ I_streamSocketSetTcpSynCountResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response StreamSocketSetTcpSynCountResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *StreamSocketSetTcpSynCountResult) reset() {
+ switch _m.I_streamSocketSetTcpSynCountResultTag {
+ case 1:
+ var _zeroed StreamSocketSetTcpSynCountResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *StreamSocketSetTcpSynCountResult) Which() I_streamSocketSetTcpSynCountResultTag {
+ return _m.I_streamSocketSetTcpSynCountResultTag
+}
+
+func (_m *StreamSocketSetTcpSynCountResult) Ordinal() uint64 {
+ return uint64(_m.I_streamSocketSetTcpSynCountResultTag)
+}
+
+func (_m *StreamSocketSetTcpSynCountResult) SetResponse(response StreamSocketSetTcpSynCountResponse) {
+ _m.reset()
+ _m.I_streamSocketSetTcpSynCountResultTag = StreamSocketSetTcpSynCountResultResponse
+ _m.Response = response
+}
+
+func StreamSocketSetTcpSynCountResultWithResponse(response StreamSocketSetTcpSynCountResponse) StreamSocketSetTcpSynCountResult {
+ var _u StreamSocketSetTcpSynCountResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *StreamSocketSetTcpSynCountResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_streamSocketSetTcpSynCountResultTag = StreamSocketSetTcpSynCountResultErr
+ _m.Err = err
+}
+
+func StreamSocketSetTcpSynCountResultWithErr(err fuchsiaposix.Errno) StreamSocketSetTcpSynCountResult {
+ var _u StreamSocketSetTcpSynCountResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_streamSocketGetTcpSynCountResultTag uint64
+
+const (
+ StreamSocketGetTcpSynCountResultResponse = 1 // 0x00000001
+ StreamSocketGetTcpSynCountResultErr = 2 // 0x00000002
+)
+
+type StreamSocketGetTcpSynCountResult struct {
+ I_streamSocketGetTcpSynCountResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response StreamSocketGetTcpSynCountResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *StreamSocketGetTcpSynCountResult) reset() {
+ switch _m.I_streamSocketGetTcpSynCountResultTag {
+ case 1:
+ var _zeroed StreamSocketGetTcpSynCountResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *StreamSocketGetTcpSynCountResult) Which() I_streamSocketGetTcpSynCountResultTag {
+ return _m.I_streamSocketGetTcpSynCountResultTag
+}
+
+func (_m *StreamSocketGetTcpSynCountResult) Ordinal() uint64 {
+ return uint64(_m.I_streamSocketGetTcpSynCountResultTag)
+}
+
+func (_m *StreamSocketGetTcpSynCountResult) SetResponse(response StreamSocketGetTcpSynCountResponse) {
+ _m.reset()
+ _m.I_streamSocketGetTcpSynCountResultTag = StreamSocketGetTcpSynCountResultResponse
+ _m.Response = response
+}
+
+func StreamSocketGetTcpSynCountResultWithResponse(response StreamSocketGetTcpSynCountResponse) StreamSocketGetTcpSynCountResult {
+ var _u StreamSocketGetTcpSynCountResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *StreamSocketGetTcpSynCountResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_streamSocketGetTcpSynCountResultTag = StreamSocketGetTcpSynCountResultErr
+ _m.Err = err
+}
+
+func StreamSocketGetTcpSynCountResultWithErr(err fuchsiaposix.Errno) StreamSocketGetTcpSynCountResult {
+ var _u StreamSocketGetTcpSynCountResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_streamSocketSetTcpLingerResultTag uint64
+
+const (
+ StreamSocketSetTcpLingerResultResponse = 1 // 0x00000001
+ StreamSocketSetTcpLingerResultErr = 2 // 0x00000002
+)
+
+type StreamSocketSetTcpLingerResult struct {
+ I_streamSocketSetTcpLingerResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response StreamSocketSetTcpLingerResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *StreamSocketSetTcpLingerResult) reset() {
+ switch _m.I_streamSocketSetTcpLingerResultTag {
+ case 1:
+ var _zeroed StreamSocketSetTcpLingerResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *StreamSocketSetTcpLingerResult) Which() I_streamSocketSetTcpLingerResultTag {
+ return _m.I_streamSocketSetTcpLingerResultTag
+}
+
+func (_m *StreamSocketSetTcpLingerResult) Ordinal() uint64 {
+ return uint64(_m.I_streamSocketSetTcpLingerResultTag)
+}
+
+func (_m *StreamSocketSetTcpLingerResult) SetResponse(response StreamSocketSetTcpLingerResponse) {
+ _m.reset()
+ _m.I_streamSocketSetTcpLingerResultTag = StreamSocketSetTcpLingerResultResponse
+ _m.Response = response
+}
+
+func StreamSocketSetTcpLingerResultWithResponse(response StreamSocketSetTcpLingerResponse) StreamSocketSetTcpLingerResult {
+ var _u StreamSocketSetTcpLingerResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *StreamSocketSetTcpLingerResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_streamSocketSetTcpLingerResultTag = StreamSocketSetTcpLingerResultErr
+ _m.Err = err
+}
+
+func StreamSocketSetTcpLingerResultWithErr(err fuchsiaposix.Errno) StreamSocketSetTcpLingerResult {
+ var _u StreamSocketSetTcpLingerResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_streamSocketGetTcpLingerResultTag uint64
+
+const (
+ StreamSocketGetTcpLingerResultResponse = 1 // 0x00000001
+ StreamSocketGetTcpLingerResultErr = 2 // 0x00000002
+)
+
+type StreamSocketGetTcpLingerResult struct {
+ I_streamSocketGetTcpLingerResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response StreamSocketGetTcpLingerResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *StreamSocketGetTcpLingerResult) reset() {
+ switch _m.I_streamSocketGetTcpLingerResultTag {
+ case 1:
+ var _zeroed StreamSocketGetTcpLingerResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *StreamSocketGetTcpLingerResult) Which() I_streamSocketGetTcpLingerResultTag {
+ return _m.I_streamSocketGetTcpLingerResultTag
+}
+
+func (_m *StreamSocketGetTcpLingerResult) Ordinal() uint64 {
+ return uint64(_m.I_streamSocketGetTcpLingerResultTag)
+}
+
+func (_m *StreamSocketGetTcpLingerResult) SetResponse(response StreamSocketGetTcpLingerResponse) {
+ _m.reset()
+ _m.I_streamSocketGetTcpLingerResultTag = StreamSocketGetTcpLingerResultResponse
+ _m.Response = response
+}
+
+func StreamSocketGetTcpLingerResultWithResponse(response StreamSocketGetTcpLingerResponse) StreamSocketGetTcpLingerResult {
+ var _u StreamSocketGetTcpLingerResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *StreamSocketGetTcpLingerResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_streamSocketGetTcpLingerResultTag = StreamSocketGetTcpLingerResultErr
+ _m.Err = err
+}
+
+func StreamSocketGetTcpLingerResultWithErr(err fuchsiaposix.Errno) StreamSocketGetTcpLingerResult {
+ var _u StreamSocketGetTcpLingerResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_streamSocketSetTcpDeferAcceptResultTag uint64
+
+const (
+ StreamSocketSetTcpDeferAcceptResultResponse = 1 // 0x00000001
+ StreamSocketSetTcpDeferAcceptResultErr = 2 // 0x00000002
+)
+
+type StreamSocketSetTcpDeferAcceptResult struct {
+ I_streamSocketSetTcpDeferAcceptResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response StreamSocketSetTcpDeferAcceptResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *StreamSocketSetTcpDeferAcceptResult) reset() {
+ switch _m.I_streamSocketSetTcpDeferAcceptResultTag {
+ case 1:
+ var _zeroed StreamSocketSetTcpDeferAcceptResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *StreamSocketSetTcpDeferAcceptResult) Which() I_streamSocketSetTcpDeferAcceptResultTag {
+ return _m.I_streamSocketSetTcpDeferAcceptResultTag
+}
+
+func (_m *StreamSocketSetTcpDeferAcceptResult) Ordinal() uint64 {
+ return uint64(_m.I_streamSocketSetTcpDeferAcceptResultTag)
+}
+
+func (_m *StreamSocketSetTcpDeferAcceptResult) SetResponse(response StreamSocketSetTcpDeferAcceptResponse) {
+ _m.reset()
+ _m.I_streamSocketSetTcpDeferAcceptResultTag = StreamSocketSetTcpDeferAcceptResultResponse
+ _m.Response = response
+}
+
+func StreamSocketSetTcpDeferAcceptResultWithResponse(response StreamSocketSetTcpDeferAcceptResponse) StreamSocketSetTcpDeferAcceptResult {
+ var _u StreamSocketSetTcpDeferAcceptResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *StreamSocketSetTcpDeferAcceptResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_streamSocketSetTcpDeferAcceptResultTag = StreamSocketSetTcpDeferAcceptResultErr
+ _m.Err = err
+}
+
+func StreamSocketSetTcpDeferAcceptResultWithErr(err fuchsiaposix.Errno) StreamSocketSetTcpDeferAcceptResult {
+ var _u StreamSocketSetTcpDeferAcceptResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_streamSocketGetTcpDeferAcceptResultTag uint64
+
+const (
+ StreamSocketGetTcpDeferAcceptResultResponse = 1 // 0x00000001
+ StreamSocketGetTcpDeferAcceptResultErr = 2 // 0x00000002
+)
+
+type StreamSocketGetTcpDeferAcceptResult struct {
+ I_streamSocketGetTcpDeferAcceptResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response StreamSocketGetTcpDeferAcceptResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *StreamSocketGetTcpDeferAcceptResult) reset() {
+ switch _m.I_streamSocketGetTcpDeferAcceptResultTag {
+ case 1:
+ var _zeroed StreamSocketGetTcpDeferAcceptResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *StreamSocketGetTcpDeferAcceptResult) Which() I_streamSocketGetTcpDeferAcceptResultTag {
+ return _m.I_streamSocketGetTcpDeferAcceptResultTag
+}
+
+func (_m *StreamSocketGetTcpDeferAcceptResult) Ordinal() uint64 {
+ return uint64(_m.I_streamSocketGetTcpDeferAcceptResultTag)
+}
+
+func (_m *StreamSocketGetTcpDeferAcceptResult) SetResponse(response StreamSocketGetTcpDeferAcceptResponse) {
+ _m.reset()
+ _m.I_streamSocketGetTcpDeferAcceptResultTag = StreamSocketGetTcpDeferAcceptResultResponse
+ _m.Response = response
+}
+
+func StreamSocketGetTcpDeferAcceptResultWithResponse(response StreamSocketGetTcpDeferAcceptResponse) StreamSocketGetTcpDeferAcceptResult {
+ var _u StreamSocketGetTcpDeferAcceptResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *StreamSocketGetTcpDeferAcceptResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_streamSocketGetTcpDeferAcceptResultTag = StreamSocketGetTcpDeferAcceptResultErr
+ _m.Err = err
+}
+
+func StreamSocketGetTcpDeferAcceptResultWithErr(err fuchsiaposix.Errno) StreamSocketGetTcpDeferAcceptResult {
+ var _u StreamSocketGetTcpDeferAcceptResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_streamSocketSetTcpWindowClampResultTag uint64
+
+const (
+ StreamSocketSetTcpWindowClampResultResponse = 1 // 0x00000001
+ StreamSocketSetTcpWindowClampResultErr = 2 // 0x00000002
+)
+
+type StreamSocketSetTcpWindowClampResult struct {
+ I_streamSocketSetTcpWindowClampResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response StreamSocketSetTcpWindowClampResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *StreamSocketSetTcpWindowClampResult) reset() {
+ switch _m.I_streamSocketSetTcpWindowClampResultTag {
+ case 1:
+ var _zeroed StreamSocketSetTcpWindowClampResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *StreamSocketSetTcpWindowClampResult) Which() I_streamSocketSetTcpWindowClampResultTag {
+ return _m.I_streamSocketSetTcpWindowClampResultTag
+}
+
+func (_m *StreamSocketSetTcpWindowClampResult) Ordinal() uint64 {
+ return uint64(_m.I_streamSocketSetTcpWindowClampResultTag)
+}
+
+func (_m *StreamSocketSetTcpWindowClampResult) SetResponse(response StreamSocketSetTcpWindowClampResponse) {
+ _m.reset()
+ _m.I_streamSocketSetTcpWindowClampResultTag = StreamSocketSetTcpWindowClampResultResponse
+ _m.Response = response
+}
+
+func StreamSocketSetTcpWindowClampResultWithResponse(response StreamSocketSetTcpWindowClampResponse) StreamSocketSetTcpWindowClampResult {
+ var _u StreamSocketSetTcpWindowClampResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *StreamSocketSetTcpWindowClampResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_streamSocketSetTcpWindowClampResultTag = StreamSocketSetTcpWindowClampResultErr
+ _m.Err = err
+}
+
+func StreamSocketSetTcpWindowClampResultWithErr(err fuchsiaposix.Errno) StreamSocketSetTcpWindowClampResult {
+ var _u StreamSocketSetTcpWindowClampResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_streamSocketGetTcpWindowClampResultTag uint64
+
+const (
+ StreamSocketGetTcpWindowClampResultResponse = 1 // 0x00000001
+ StreamSocketGetTcpWindowClampResultErr = 2 // 0x00000002
+)
+
+type StreamSocketGetTcpWindowClampResult struct {
+ I_streamSocketGetTcpWindowClampResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response StreamSocketGetTcpWindowClampResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *StreamSocketGetTcpWindowClampResult) reset() {
+ switch _m.I_streamSocketGetTcpWindowClampResultTag {
+ case 1:
+ var _zeroed StreamSocketGetTcpWindowClampResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *StreamSocketGetTcpWindowClampResult) Which() I_streamSocketGetTcpWindowClampResultTag {
+ return _m.I_streamSocketGetTcpWindowClampResultTag
+}
+
+func (_m *StreamSocketGetTcpWindowClampResult) Ordinal() uint64 {
+ return uint64(_m.I_streamSocketGetTcpWindowClampResultTag)
+}
+
+func (_m *StreamSocketGetTcpWindowClampResult) SetResponse(response StreamSocketGetTcpWindowClampResponse) {
+ _m.reset()
+ _m.I_streamSocketGetTcpWindowClampResultTag = StreamSocketGetTcpWindowClampResultResponse
+ _m.Response = response
+}
+
+func StreamSocketGetTcpWindowClampResultWithResponse(response StreamSocketGetTcpWindowClampResponse) StreamSocketGetTcpWindowClampResult {
+ var _u StreamSocketGetTcpWindowClampResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *StreamSocketGetTcpWindowClampResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_streamSocketGetTcpWindowClampResultTag = StreamSocketGetTcpWindowClampResultErr
+ _m.Err = err
+}
+
+func StreamSocketGetTcpWindowClampResultWithErr(err fuchsiaposix.Errno) StreamSocketGetTcpWindowClampResult {
+ var _u StreamSocketGetTcpWindowClampResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_streamSocketGetTcpInfoResultTag uint64
+
+const (
+ StreamSocketGetTcpInfoResultResponse = 1 // 0x00000001
+ StreamSocketGetTcpInfoResultErr = 2 // 0x00000002
+)
+
+type StreamSocketGetTcpInfoResult struct {
+ I_streamSocketGetTcpInfoResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response StreamSocketGetTcpInfoResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *StreamSocketGetTcpInfoResult) reset() {
+ switch _m.I_streamSocketGetTcpInfoResultTag {
+ case 1:
+ var _zeroed StreamSocketGetTcpInfoResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *StreamSocketGetTcpInfoResult) Which() I_streamSocketGetTcpInfoResultTag {
+ return _m.I_streamSocketGetTcpInfoResultTag
+}
+
+func (_m *StreamSocketGetTcpInfoResult) Ordinal() uint64 {
+ return uint64(_m.I_streamSocketGetTcpInfoResultTag)
+}
+
+func (_m *StreamSocketGetTcpInfoResult) SetResponse(response StreamSocketGetTcpInfoResponse) {
+ _m.reset()
+ _m.I_streamSocketGetTcpInfoResultTag = StreamSocketGetTcpInfoResultResponse
+ _m.Response = response
+}
+
+func StreamSocketGetTcpInfoResultWithResponse(response StreamSocketGetTcpInfoResponse) StreamSocketGetTcpInfoResult {
+ var _u StreamSocketGetTcpInfoResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *StreamSocketGetTcpInfoResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_streamSocketGetTcpInfoResultTag = StreamSocketGetTcpInfoResultErr
+ _m.Err = err
+}
+
+func StreamSocketGetTcpInfoResultWithErr(err fuchsiaposix.Errno) StreamSocketGetTcpInfoResult {
+ var _u StreamSocketGetTcpInfoResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_streamSocketSetTcpQuickAckResultTag uint64
+
+const (
+ StreamSocketSetTcpQuickAckResultResponse = 1 // 0x00000001
+ StreamSocketSetTcpQuickAckResultErr = 2 // 0x00000002
+)
+
+type StreamSocketSetTcpQuickAckResult struct {
+ I_streamSocketSetTcpQuickAckResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response StreamSocketSetTcpQuickAckResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *StreamSocketSetTcpQuickAckResult) reset() {
+ switch _m.I_streamSocketSetTcpQuickAckResultTag {
+ case 1:
+ var _zeroed StreamSocketSetTcpQuickAckResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *StreamSocketSetTcpQuickAckResult) Which() I_streamSocketSetTcpQuickAckResultTag {
+ return _m.I_streamSocketSetTcpQuickAckResultTag
+}
+
+func (_m *StreamSocketSetTcpQuickAckResult) Ordinal() uint64 {
+ return uint64(_m.I_streamSocketSetTcpQuickAckResultTag)
+}
+
+func (_m *StreamSocketSetTcpQuickAckResult) SetResponse(response StreamSocketSetTcpQuickAckResponse) {
+ _m.reset()
+ _m.I_streamSocketSetTcpQuickAckResultTag = StreamSocketSetTcpQuickAckResultResponse
+ _m.Response = response
+}
+
+func StreamSocketSetTcpQuickAckResultWithResponse(response StreamSocketSetTcpQuickAckResponse) StreamSocketSetTcpQuickAckResult {
+ var _u StreamSocketSetTcpQuickAckResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *StreamSocketSetTcpQuickAckResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_streamSocketSetTcpQuickAckResultTag = StreamSocketSetTcpQuickAckResultErr
+ _m.Err = err
+}
+
+func StreamSocketSetTcpQuickAckResultWithErr(err fuchsiaposix.Errno) StreamSocketSetTcpQuickAckResult {
+ var _u StreamSocketSetTcpQuickAckResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_streamSocketGetTcpQuickAckResultTag uint64
+
+const (
+ StreamSocketGetTcpQuickAckResultResponse = 1 // 0x00000001
+ StreamSocketGetTcpQuickAckResultErr = 2 // 0x00000002
+)
+
+type StreamSocketGetTcpQuickAckResult struct {
+ I_streamSocketGetTcpQuickAckResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response StreamSocketGetTcpQuickAckResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *StreamSocketGetTcpQuickAckResult) reset() {
+ switch _m.I_streamSocketGetTcpQuickAckResultTag {
+ case 1:
+ var _zeroed StreamSocketGetTcpQuickAckResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *StreamSocketGetTcpQuickAckResult) Which() I_streamSocketGetTcpQuickAckResultTag {
+ return _m.I_streamSocketGetTcpQuickAckResultTag
+}
+
+func (_m *StreamSocketGetTcpQuickAckResult) Ordinal() uint64 {
+ return uint64(_m.I_streamSocketGetTcpQuickAckResultTag)
+}
+
+func (_m *StreamSocketGetTcpQuickAckResult) SetResponse(response StreamSocketGetTcpQuickAckResponse) {
+ _m.reset()
+ _m.I_streamSocketGetTcpQuickAckResultTag = StreamSocketGetTcpQuickAckResultResponse
+ _m.Response = response
+}
+
+func StreamSocketGetTcpQuickAckResultWithResponse(response StreamSocketGetTcpQuickAckResponse) StreamSocketGetTcpQuickAckResult {
+ var _u StreamSocketGetTcpQuickAckResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *StreamSocketGetTcpQuickAckResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_streamSocketGetTcpQuickAckResultTag = StreamSocketGetTcpQuickAckResultErr
+ _m.Err = err
+}
+
+func StreamSocketGetTcpQuickAckResultWithErr(err fuchsiaposix.Errno) StreamSocketGetTcpQuickAckResult {
+ var _u StreamSocketGetTcpQuickAckResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_streamSocketSetTcpCongestionResultTag uint64
+
+const (
+ StreamSocketSetTcpCongestionResultResponse = 1 // 0x00000001
+ StreamSocketSetTcpCongestionResultErr = 2 // 0x00000002
+)
+
+type StreamSocketSetTcpCongestionResult struct {
+ I_streamSocketSetTcpCongestionResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response StreamSocketSetTcpCongestionResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *StreamSocketSetTcpCongestionResult) reset() {
+ switch _m.I_streamSocketSetTcpCongestionResultTag {
+ case 1:
+ var _zeroed StreamSocketSetTcpCongestionResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *StreamSocketSetTcpCongestionResult) Which() I_streamSocketSetTcpCongestionResultTag {
+ return _m.I_streamSocketSetTcpCongestionResultTag
+}
+
+func (_m *StreamSocketSetTcpCongestionResult) Ordinal() uint64 {
+ return uint64(_m.I_streamSocketSetTcpCongestionResultTag)
+}
+
+func (_m *StreamSocketSetTcpCongestionResult) SetResponse(response StreamSocketSetTcpCongestionResponse) {
+ _m.reset()
+ _m.I_streamSocketSetTcpCongestionResultTag = StreamSocketSetTcpCongestionResultResponse
+ _m.Response = response
+}
+
+func StreamSocketSetTcpCongestionResultWithResponse(response StreamSocketSetTcpCongestionResponse) StreamSocketSetTcpCongestionResult {
+ var _u StreamSocketSetTcpCongestionResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *StreamSocketSetTcpCongestionResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_streamSocketSetTcpCongestionResultTag = StreamSocketSetTcpCongestionResultErr
+ _m.Err = err
+}
+
+func StreamSocketSetTcpCongestionResultWithErr(err fuchsiaposix.Errno) StreamSocketSetTcpCongestionResult {
+ var _u StreamSocketSetTcpCongestionResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_streamSocketGetTcpCongestionResultTag uint64
+
+const (
+ StreamSocketGetTcpCongestionResultResponse = 1 // 0x00000001
+ StreamSocketGetTcpCongestionResultErr = 2 // 0x00000002
+)
+
+type StreamSocketGetTcpCongestionResult struct {
+ I_streamSocketGetTcpCongestionResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response StreamSocketGetTcpCongestionResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *StreamSocketGetTcpCongestionResult) reset() {
+ switch _m.I_streamSocketGetTcpCongestionResultTag {
+ case 1:
+ var _zeroed StreamSocketGetTcpCongestionResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *StreamSocketGetTcpCongestionResult) Which() I_streamSocketGetTcpCongestionResultTag {
+ return _m.I_streamSocketGetTcpCongestionResultTag
+}
+
+func (_m *StreamSocketGetTcpCongestionResult) Ordinal() uint64 {
+ return uint64(_m.I_streamSocketGetTcpCongestionResultTag)
+}
+
+func (_m *StreamSocketGetTcpCongestionResult) SetResponse(response StreamSocketGetTcpCongestionResponse) {
+ _m.reset()
+ _m.I_streamSocketGetTcpCongestionResultTag = StreamSocketGetTcpCongestionResultResponse
+ _m.Response = response
+}
+
+func StreamSocketGetTcpCongestionResultWithResponse(response StreamSocketGetTcpCongestionResponse) StreamSocketGetTcpCongestionResult {
+ var _u StreamSocketGetTcpCongestionResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *StreamSocketGetTcpCongestionResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_streamSocketGetTcpCongestionResultTag = StreamSocketGetTcpCongestionResultErr
+ _m.Err = err
+}
+
+func StreamSocketGetTcpCongestionResultWithErr(err fuchsiaposix.Errno) StreamSocketGetTcpCongestionResult {
+ var _u StreamSocketGetTcpCongestionResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_streamSocketSetTcpUserTimeoutResultTag uint64
+
+const (
+ StreamSocketSetTcpUserTimeoutResultResponse = 1 // 0x00000001
+ StreamSocketSetTcpUserTimeoutResultErr = 2 // 0x00000002
+)
+
+type StreamSocketSetTcpUserTimeoutResult struct {
+ I_streamSocketSetTcpUserTimeoutResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response StreamSocketSetTcpUserTimeoutResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *StreamSocketSetTcpUserTimeoutResult) reset() {
+ switch _m.I_streamSocketSetTcpUserTimeoutResultTag {
+ case 1:
+ var _zeroed StreamSocketSetTcpUserTimeoutResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *StreamSocketSetTcpUserTimeoutResult) Which() I_streamSocketSetTcpUserTimeoutResultTag {
+ return _m.I_streamSocketSetTcpUserTimeoutResultTag
+}
+
+func (_m *StreamSocketSetTcpUserTimeoutResult) Ordinal() uint64 {
+ return uint64(_m.I_streamSocketSetTcpUserTimeoutResultTag)
+}
+
+func (_m *StreamSocketSetTcpUserTimeoutResult) SetResponse(response StreamSocketSetTcpUserTimeoutResponse) {
+ _m.reset()
+ _m.I_streamSocketSetTcpUserTimeoutResultTag = StreamSocketSetTcpUserTimeoutResultResponse
+ _m.Response = response
+}
+
+func StreamSocketSetTcpUserTimeoutResultWithResponse(response StreamSocketSetTcpUserTimeoutResponse) StreamSocketSetTcpUserTimeoutResult {
+ var _u StreamSocketSetTcpUserTimeoutResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *StreamSocketSetTcpUserTimeoutResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_streamSocketSetTcpUserTimeoutResultTag = StreamSocketSetTcpUserTimeoutResultErr
+ _m.Err = err
+}
+
+func StreamSocketSetTcpUserTimeoutResultWithErr(err fuchsiaposix.Errno) StreamSocketSetTcpUserTimeoutResult {
+ var _u StreamSocketSetTcpUserTimeoutResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_streamSocketGetTcpUserTimeoutResultTag uint64
+
+const (
+ StreamSocketGetTcpUserTimeoutResultResponse = 1 // 0x00000001
+ StreamSocketGetTcpUserTimeoutResultErr = 2 // 0x00000002
+)
+
+type StreamSocketGetTcpUserTimeoutResult struct {
+ I_streamSocketGetTcpUserTimeoutResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response StreamSocketGetTcpUserTimeoutResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *StreamSocketGetTcpUserTimeoutResult) reset() {
+ switch _m.I_streamSocketGetTcpUserTimeoutResultTag {
+ case 1:
+ var _zeroed StreamSocketGetTcpUserTimeoutResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *StreamSocketGetTcpUserTimeoutResult) Which() I_streamSocketGetTcpUserTimeoutResultTag {
+ return _m.I_streamSocketGetTcpUserTimeoutResultTag
+}
+
+func (_m *StreamSocketGetTcpUserTimeoutResult) Ordinal() uint64 {
+ return uint64(_m.I_streamSocketGetTcpUserTimeoutResultTag)
+}
+
+func (_m *StreamSocketGetTcpUserTimeoutResult) SetResponse(response StreamSocketGetTcpUserTimeoutResponse) {
+ _m.reset()
+ _m.I_streamSocketGetTcpUserTimeoutResultTag = StreamSocketGetTcpUserTimeoutResultResponse
+ _m.Response = response
+}
+
+func StreamSocketGetTcpUserTimeoutResultWithResponse(response StreamSocketGetTcpUserTimeoutResponse) StreamSocketGetTcpUserTimeoutResult {
+ var _u StreamSocketGetTcpUserTimeoutResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *StreamSocketGetTcpUserTimeoutResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_streamSocketGetTcpUserTimeoutResultTag = StreamSocketGetTcpUserTimeoutResultErr
+ _m.Err = err
+}
+
+func StreamSocketGetTcpUserTimeoutResultWithErr(err fuchsiaposix.Errno) StreamSocketGetTcpUserTimeoutResult {
+ var _u StreamSocketGetTcpUserTimeoutResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_providerStreamSocketResultTag uint64
+
+const (
+ ProviderStreamSocketResultResponse = 1 // 0x00000001
+ ProviderStreamSocketResultErr = 2 // 0x00000002
+)
+
+type ProviderStreamSocketResult struct {
+ I_providerStreamSocketResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"true"`
+ Response ProviderStreamSocketResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *ProviderStreamSocketResult) reset() {
+ switch _m.I_providerStreamSocketResultTag {
+ case 1:
+ var _zeroed ProviderStreamSocketResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *ProviderStreamSocketResult) Which() I_providerStreamSocketResultTag {
+ return _m.I_providerStreamSocketResultTag
+}
+
+func (_m *ProviderStreamSocketResult) Ordinal() uint64 {
+ return uint64(_m.I_providerStreamSocketResultTag)
+}
+
+func (_m *ProviderStreamSocketResult) SetResponse(response ProviderStreamSocketResponse) {
+ _m.reset()
+ _m.I_providerStreamSocketResultTag = ProviderStreamSocketResultResponse
+ _m.Response = response
+}
+
+func ProviderStreamSocketResultWithResponse(response ProviderStreamSocketResponse) ProviderStreamSocketResult {
+ var _u ProviderStreamSocketResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *ProviderStreamSocketResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_providerStreamSocketResultTag = ProviderStreamSocketResultErr
+ _m.Err = err
+}
+
+func ProviderStreamSocketResultWithErr(err fuchsiaposix.Errno) ProviderStreamSocketResult {
+ var _u ProviderStreamSocketResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_providerDatagramSocketResultTag uint64
+
+const (
+ ProviderDatagramSocketResultResponse = 1 // 0x00000001
+ ProviderDatagramSocketResultErr = 2 // 0x00000002
+)
+
+type ProviderDatagramSocketResult struct {
+ I_providerDatagramSocketResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"true"`
+ Response ProviderDatagramSocketResponse `fidl_ordinal:"1"`
+ Err fuchsiaposix.Errno `fidl_ordinal:"2"`
+}
+
+func (_m *ProviderDatagramSocketResult) reset() {
+ switch _m.I_providerDatagramSocketResultTag {
+ case 1:
+ var _zeroed ProviderDatagramSocketResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed fuchsiaposix.Errno
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *ProviderDatagramSocketResult) Which() I_providerDatagramSocketResultTag {
+ return _m.I_providerDatagramSocketResultTag
+}
+
+func (_m *ProviderDatagramSocketResult) Ordinal() uint64 {
+ return uint64(_m.I_providerDatagramSocketResultTag)
+}
+
+func (_m *ProviderDatagramSocketResult) SetResponse(response ProviderDatagramSocketResponse) {
+ _m.reset()
+ _m.I_providerDatagramSocketResultTag = ProviderDatagramSocketResultResponse
+ _m.Response = response
+}
+
+func ProviderDatagramSocketResultWithResponse(response ProviderDatagramSocketResponse) ProviderDatagramSocketResult {
+ var _u ProviderDatagramSocketResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *ProviderDatagramSocketResult) SetErr(err fuchsiaposix.Errno) {
+ _m.reset()
+ _m.I_providerDatagramSocketResultTag = ProviderDatagramSocketResultErr
+ _m.Err = err
+}
+
+func ProviderDatagramSocketResultWithErr(err fuchsiaposix.Errno) ProviderDatagramSocketResult {
+ var _u ProviderDatagramSocketResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_providerInterfaceIndexToNameResultTag uint64
+
+const (
+ ProviderInterfaceIndexToNameResultResponse = 1 // 0x00000001
+ ProviderInterfaceIndexToNameResultErr = 2 // 0x00000002
+)
+
+type ProviderInterfaceIndexToNameResult struct {
+ I_providerInterfaceIndexToNameResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response ProviderInterfaceIndexToNameResponse `fidl_ordinal:"1"`
+ Err int32 `fidl_ordinal:"2"`
+}
+
+func (_m *ProviderInterfaceIndexToNameResult) reset() {
+ switch _m.I_providerInterfaceIndexToNameResultTag {
+ case 1:
+ var _zeroed ProviderInterfaceIndexToNameResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed int32
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *ProviderInterfaceIndexToNameResult) Which() I_providerInterfaceIndexToNameResultTag {
+ return _m.I_providerInterfaceIndexToNameResultTag
+}
+
+func (_m *ProviderInterfaceIndexToNameResult) Ordinal() uint64 {
+ return uint64(_m.I_providerInterfaceIndexToNameResultTag)
+}
+
+func (_m *ProviderInterfaceIndexToNameResult) SetResponse(response ProviderInterfaceIndexToNameResponse) {
+ _m.reset()
+ _m.I_providerInterfaceIndexToNameResultTag = ProviderInterfaceIndexToNameResultResponse
+ _m.Response = response
+}
+
+func ProviderInterfaceIndexToNameResultWithResponse(response ProviderInterfaceIndexToNameResponse) ProviderInterfaceIndexToNameResult {
+ var _u ProviderInterfaceIndexToNameResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *ProviderInterfaceIndexToNameResult) SetErr(err int32) {
+ _m.reset()
+ _m.I_providerInterfaceIndexToNameResultTag = ProviderInterfaceIndexToNameResultErr
+ _m.Err = err
+}
+
+func ProviderInterfaceIndexToNameResultWithErr(err int32) ProviderInterfaceIndexToNameResult {
+ var _u ProviderInterfaceIndexToNameResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_providerInterfaceNameToIndexResultTag uint64
+
+const (
+ ProviderInterfaceNameToIndexResultResponse = 1 // 0x00000001
+ ProviderInterfaceNameToIndexResultErr = 2 // 0x00000002
+)
+
+type ProviderInterfaceNameToIndexResult struct {
+ I_providerInterfaceNameToIndexResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response ProviderInterfaceNameToIndexResponse `fidl_ordinal:"1"`
+ Err int32 `fidl_ordinal:"2"`
+}
+
+func (_m *ProviderInterfaceNameToIndexResult) reset() {
+ switch _m.I_providerInterfaceNameToIndexResultTag {
+ case 1:
+ var _zeroed ProviderInterfaceNameToIndexResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed int32
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *ProviderInterfaceNameToIndexResult) Which() I_providerInterfaceNameToIndexResultTag {
+ return _m.I_providerInterfaceNameToIndexResultTag
+}
+
+func (_m *ProviderInterfaceNameToIndexResult) Ordinal() uint64 {
+ return uint64(_m.I_providerInterfaceNameToIndexResultTag)
+}
+
+func (_m *ProviderInterfaceNameToIndexResult) SetResponse(response ProviderInterfaceNameToIndexResponse) {
+ _m.reset()
+ _m.I_providerInterfaceNameToIndexResultTag = ProviderInterfaceNameToIndexResultResponse
+ _m.Response = response
+}
+
+func ProviderInterfaceNameToIndexResultWithResponse(response ProviderInterfaceNameToIndexResponse) ProviderInterfaceNameToIndexResult {
+ var _u ProviderInterfaceNameToIndexResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *ProviderInterfaceNameToIndexResult) SetErr(err int32) {
+ _m.reset()
+ _m.I_providerInterfaceNameToIndexResultTag = ProviderInterfaceNameToIndexResultErr
+ _m.Err = err
+}
+
+func ProviderInterfaceNameToIndexResultWithErr(err int32) ProviderInterfaceNameToIndexResult {
+ var _u ProviderInterfaceNameToIndexResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_providerInterfaceNameToFlagsResultTag uint64
+
+const (
+ ProviderInterfaceNameToFlagsResultResponse = 1 // 0x00000001
+ ProviderInterfaceNameToFlagsResultErr = 2 // 0x00000002
+)
+
+type ProviderInterfaceNameToFlagsResult struct {
+ I_providerInterfaceNameToFlagsResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Response ProviderInterfaceNameToFlagsResponse `fidl_ordinal:"1"`
+ Err int32 `fidl_ordinal:"2"`
+}
+
+func (_m *ProviderInterfaceNameToFlagsResult) reset() {
+ switch _m.I_providerInterfaceNameToFlagsResultTag {
+ case 1:
+ var _zeroed ProviderInterfaceNameToFlagsResponse
+ _m.Response = _zeroed
+ case 2:
+ var _zeroed int32
+ _m.Err = _zeroed
+ }
+}
+
+func (_m *ProviderInterfaceNameToFlagsResult) Which() I_providerInterfaceNameToFlagsResultTag {
+ return _m.I_providerInterfaceNameToFlagsResultTag
+}
+
+func (_m *ProviderInterfaceNameToFlagsResult) Ordinal() uint64 {
+ return uint64(_m.I_providerInterfaceNameToFlagsResultTag)
+}
+
+func (_m *ProviderInterfaceNameToFlagsResult) SetResponse(response ProviderInterfaceNameToFlagsResponse) {
+ _m.reset()
+ _m.I_providerInterfaceNameToFlagsResultTag = ProviderInterfaceNameToFlagsResultResponse
+ _m.Response = response
+}
+
+func ProviderInterfaceNameToFlagsResultWithResponse(response ProviderInterfaceNameToFlagsResponse) ProviderInterfaceNameToFlagsResult {
+ var _u ProviderInterfaceNameToFlagsResult
+ _u.SetResponse(response)
+ return _u
+}
+
+func (_m *ProviderInterfaceNameToFlagsResult) SetErr(err int32) {
+ _m.reset()
+ _m.I_providerInterfaceNameToFlagsResultTag = ProviderInterfaceNameToFlagsResultErr
+ _m.Err = err
+}
+
+func ProviderInterfaceNameToFlagsResultWithErr(err int32) ProviderInterfaceNameToFlagsResult {
+ var _u ProviderInterfaceNameToFlagsResult
+ _u.SetErr(err)
+ return _u
+}
+
+type I_optionalUint8Tag uint64
+
+const (
+ OptionalUint8Value = 1 // 0x00000001
+ OptionalUint8Unset = 2 // 0x00000002
+)
+
+// An optional byte value.
+type OptionalUint8 struct {
+ I_optionalUint8Tag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Value uint8 `fidl_ordinal:"1"`
+ Unset Empty `fidl_ordinal:"2"`
+}
+
+func (_m *OptionalUint8) reset() {
+ switch _m.I_optionalUint8Tag {
+ case 1:
+ var _zeroed uint8
+ _m.Value = _zeroed
+ case 2:
+ var _zeroed Empty
+ _m.Unset = _zeroed
+ }
+}
+
+func (_m *OptionalUint8) Which() I_optionalUint8Tag {
+ return _m.I_optionalUint8Tag
+}
+
+func (_m *OptionalUint8) Ordinal() uint64 {
+ return uint64(_m.I_optionalUint8Tag)
+}
+
+func (_m *OptionalUint8) SetValue(value uint8) {
+ _m.reset()
+ _m.I_optionalUint8Tag = OptionalUint8Value
+ _m.Value = value
+}
+
+func OptionalUint8WithValue(value uint8) OptionalUint8 {
+ var _u OptionalUint8
+ _u.SetValue(value)
+ return _u
+}
+
+func (_m *OptionalUint8) SetUnset(unset Empty) {
+ _m.reset()
+ _m.I_optionalUint8Tag = OptionalUint8Unset
+ _m.Unset = unset
+}
+
+func OptionalUint8WithUnset(unset Empty) OptionalUint8 {
+ var _u OptionalUint8
+ _u.SetUnset(unset)
+ return _u
+}
+
+type I_optionalUint32Tag uint64
+
+const (
+ OptionalUint32Value = 1 // 0x00000001
+ OptionalUint32Unset = 2 // 0x00000002
+)
+
+// An optional uint32 value.
+type OptionalUint32 struct {
+ I_optionalUint32Tag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ Value uint32 `fidl_ordinal:"1"`
+ Unset Empty `fidl_ordinal:"2"`
+}
+
+func (_m *OptionalUint32) reset() {
+ switch _m.I_optionalUint32Tag {
+ case 1:
+ var _zeroed uint32
+ _m.Value = _zeroed
+ case 2:
+ var _zeroed Empty
+ _m.Unset = _zeroed
+ }
+}
+
+func (_m *OptionalUint32) Which() I_optionalUint32Tag {
+ return _m.I_optionalUint32Tag
+}
+
+func (_m *OptionalUint32) Ordinal() uint64 {
+ return uint64(_m.I_optionalUint32Tag)
+}
+
+func (_m *OptionalUint32) SetValue(value uint32) {
+ _m.reset()
+ _m.I_optionalUint32Tag = OptionalUint32Value
+ _m.Value = value
+}
+
+func OptionalUint32WithValue(value uint32) OptionalUint32 {
+ var _u OptionalUint32
+ _u.SetValue(value)
+ return _u
+}
+
+func (_m *OptionalUint32) SetUnset(unset Empty) {
+ _m.reset()
+ _m.I_optionalUint32Tag = OptionalUint32Unset
+ _m.Unset = unset
+}
+
+func OptionalUint32WithUnset(unset Empty) OptionalUint32 {
+ var _u OptionalUint32
+ _u.SetUnset(unset)
+ return _u
+}
+
+// Ancillary data for sending datagram sockets.
+type SendControlData struct {
+ _ struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ I_unknownData interface{}
+}
+
+func (u *SendControlData) HasUnknownData() bool {
+ return u.I_unknownData != nil
+}
+
+func (u *SendControlData) GetUnknownData() map[uint64]_bindings.UnknownData {
+ return u.I_unknownData.(map[uint64]_bindings.UnknownData)
+}
+
+// Ancillary data for received datagram sockets.
+type RecvControlData struct {
+ _ struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ I_unknownData interface{}
+}
+
+func (u *RecvControlData) HasUnknownData() bool {
+ return u.I_unknownData != nil
+}
+
+func (u *RecvControlData) GetUnknownData() map[uint64]_bindings.UnknownData {
+ return u.I_unknownData.(map[uint64]_bindings.UnknownData)
+}
+
+// TCP protocol state.
+type TcpInfo struct {
+ _ struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ I_unknownData interface{}
+ State TcpState `fidl_ordinal:"1"`
+ StatePresent bool
+ CaState TcpCongestionControlState `fidl_ordinal:"2"`
+ CaStatePresent bool
+ RtoUsec uint32 `fidl_ordinal:"11"`
+ RtoUsecPresent bool
+ RttUsec uint32 `fidl_ordinal:"26"`
+ RttUsecPresent bool
+ RttVarUsec uint32 `fidl_ordinal:"27"`
+ RttVarUsecPresent bool
+ SndSsthresh uint32 `fidl_ordinal:"28"`
+ SndSsthreshPresent bool
+ SndCwnd uint32 `fidl_ordinal:"29"`
+ SndCwndPresent bool
+ ReorderSeen bool `fidl_ordinal:"54"`
+ ReorderSeenPresent bool
+}
+
+func (u *TcpInfo) SetState(state TcpState) {
+ u.State = state
+ u.StatePresent = true
+}
+
+func (u *TcpInfo) GetState() TcpState {
+ return u.State
+}
+
+func (u *TcpInfo) GetStateWithDefault(_default TcpState) TcpState {
+ if !u.HasState() {
+ return _default
+ }
+ return u.State
+}
+
+func (u *TcpInfo) HasState() bool {
+ return u.StatePresent
+}
+
+func (u *TcpInfo) ClearState() {
+ u.StatePresent = false
+}
+
+func (u *TcpInfo) SetCaState(caState TcpCongestionControlState) {
+ u.CaState = caState
+ u.CaStatePresent = true
+}
+
+func (u *TcpInfo) GetCaState() TcpCongestionControlState {
+ return u.CaState
+}
+
+func (u *TcpInfo) GetCaStateWithDefault(_default TcpCongestionControlState) TcpCongestionControlState {
+ if !u.HasCaState() {
+ return _default
+ }
+ return u.CaState
+}
+
+func (u *TcpInfo) HasCaState() bool {
+ return u.CaStatePresent
+}
+
+func (u *TcpInfo) ClearCaState() {
+ u.CaStatePresent = false
+}
+
+func (u *TcpInfo) SetRtoUsec(rtoUsec uint32) {
+ u.RtoUsec = rtoUsec
+ u.RtoUsecPresent = true
+}
+
+func (u *TcpInfo) GetRtoUsec() uint32 {
+ return u.RtoUsec
+}
+
+func (u *TcpInfo) GetRtoUsecWithDefault(_default uint32) uint32 {
+ if !u.HasRtoUsec() {
+ return _default
+ }
+ return u.RtoUsec
+}
+
+func (u *TcpInfo) HasRtoUsec() bool {
+ return u.RtoUsecPresent
+}
+
+func (u *TcpInfo) ClearRtoUsec() {
+ u.RtoUsecPresent = false
+}
+
+func (u *TcpInfo) SetRttUsec(rttUsec uint32) {
+ u.RttUsec = rttUsec
+ u.RttUsecPresent = true
+}
+
+func (u *TcpInfo) GetRttUsec() uint32 {
+ return u.RttUsec
+}
+
+func (u *TcpInfo) GetRttUsecWithDefault(_default uint32) uint32 {
+ if !u.HasRttUsec() {
+ return _default
+ }
+ return u.RttUsec
+}
+
+func (u *TcpInfo) HasRttUsec() bool {
+ return u.RttUsecPresent
+}
+
+func (u *TcpInfo) ClearRttUsec() {
+ u.RttUsecPresent = false
+}
+
+func (u *TcpInfo) SetRttVarUsec(rttVarUsec uint32) {
+ u.RttVarUsec = rttVarUsec
+ u.RttVarUsecPresent = true
+}
+
+func (u *TcpInfo) GetRttVarUsec() uint32 {
+ return u.RttVarUsec
+}
+
+func (u *TcpInfo) GetRttVarUsecWithDefault(_default uint32) uint32 {
+ if !u.HasRttVarUsec() {
+ return _default
+ }
+ return u.RttVarUsec
+}
+
+func (u *TcpInfo) HasRttVarUsec() bool {
+ return u.RttVarUsecPresent
+}
+
+func (u *TcpInfo) ClearRttVarUsec() {
+ u.RttVarUsecPresent = false
+}
+
+func (u *TcpInfo) SetSndSsthresh(sndSsthresh uint32) {
+ u.SndSsthresh = sndSsthresh
+ u.SndSsthreshPresent = true
+}
+
+func (u *TcpInfo) GetSndSsthresh() uint32 {
+ return u.SndSsthresh
+}
+
+func (u *TcpInfo) GetSndSsthreshWithDefault(_default uint32) uint32 {
+ if !u.HasSndSsthresh() {
+ return _default
+ }
+ return u.SndSsthresh
+}
+
+func (u *TcpInfo) HasSndSsthresh() bool {
+ return u.SndSsthreshPresent
+}
+
+func (u *TcpInfo) ClearSndSsthresh() {
+ u.SndSsthreshPresent = false
+}
+
+func (u *TcpInfo) SetSndCwnd(sndCwnd uint32) {
+ u.SndCwnd = sndCwnd
+ u.SndCwndPresent = true
+}
+
+func (u *TcpInfo) GetSndCwnd() uint32 {
+ return u.SndCwnd
+}
+
+func (u *TcpInfo) GetSndCwndWithDefault(_default uint32) uint32 {
+ if !u.HasSndCwnd() {
+ return _default
+ }
+ return u.SndCwnd
+}
+
+func (u *TcpInfo) HasSndCwnd() bool {
+ return u.SndCwndPresent
+}
+
+func (u *TcpInfo) ClearSndCwnd() {
+ u.SndCwndPresent = false
+}
+
+func (u *TcpInfo) SetReorderSeen(reorderSeen bool) {
+ u.ReorderSeen = reorderSeen
+ u.ReorderSeenPresent = true
+}
+
+func (u *TcpInfo) GetReorderSeen() bool {
+ return u.ReorderSeen
+}
+
+func (u *TcpInfo) GetReorderSeenWithDefault(_default bool) bool {
+ if !u.HasReorderSeen() {
+ return _default
+ }
+ return u.ReorderSeen
+}
+
+func (u *TcpInfo) HasReorderSeen() bool {
+ return u.ReorderSeenPresent
+}
+
+func (u *TcpInfo) ClearReorderSeen() {
+ u.ReorderSeenPresent = false
+}
+
+func (u *TcpInfo) HasUnknownData() bool {
+ return u.I_unknownData != nil
+}
+
+func (u *TcpInfo) GetUnknownData() map[uint64]_bindings.UnknownData {
+ return u.I_unknownData.(map[uint64]_bindings.UnknownData)
+}
+
+// Holds information about an interface and its addresses.
+type InterfaceAddresses struct {
+ _ struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_size_v2:"16" fidl_alignment_v2:"8" fidl_resource:"false"`
+ I_unknownData interface{}
+ // ID of the interface.
+ Id uint64 `fidl_ordinal:"1"`
+ IdPresent bool
+ // Name of the interface.
+ Name string `fidl_bounds:"15" fidl_ordinal:"2"`
+ NamePresent bool
+ // Contains the interface flags, as returned by the SIOCGIFFLAGS ioctl
+ // operation.
+ //
+ // TODO(fxbug.dev/64758): remove this once all clients are transitioned to
+ // use more strongly-typed `interface_flags`.
+ Flags uint32 `fidl_ordinal:"3"`
+ FlagsPresent bool
+ // All addresses currently assigned to the interface.
+ Addresses []fuchsianet.Subnet `fidl_bounds:"" fidl_ordinal:"4"`
+ AddressesPresent bool
+ // Contains the interface flags, as returned by the SIOCGIFFLAGS ioctl
+ // operation.
+ InterfaceFlags InterfaceFlags `fidl_ordinal:"5"`
+ InterfaceFlagsPresent bool
+}
+
+func (u *InterfaceAddresses) SetId(id uint64) {
+ u.Id = id
+ u.IdPresent = true
+}
+
+func (u *InterfaceAddresses) GetId() uint64 {
+ return u.Id
+}
+
+func (u *InterfaceAddresses) GetIdWithDefault(_default uint64) uint64 {
+ if !u.HasId() {
+ return _default
+ }
+ return u.Id
+}
+
+func (u *InterfaceAddresses) HasId() bool {
+ return u.IdPresent
+}
+
+func (u *InterfaceAddresses) ClearId() {
+ u.IdPresent = false
+}
+
+func (u *InterfaceAddresses) SetName(name string) {
+ u.Name = name
+ u.NamePresent = true
+}
+
+func (u *InterfaceAddresses) GetName() string {
+ return u.Name
+}
+
+func (u *InterfaceAddresses) GetNameWithDefault(_default string) string {
+ if !u.HasName() {
+ return _default
+ }
+ return u.Name
+}
+
+func (u *InterfaceAddresses) HasName() bool {
+ return u.NamePresent
+}
+
+func (u *InterfaceAddresses) ClearName() {
+ u.NamePresent = false
+}
+
+func (u *InterfaceAddresses) SetFlags(flags uint32) {
+ u.Flags = flags
+ u.FlagsPresent = true
+}
+
+func (u *InterfaceAddresses) GetFlags() uint32 {
+ return u.Flags
+}
+
+func (u *InterfaceAddresses) GetFlagsWithDefault(_default uint32) uint32 {
+ if !u.HasFlags() {
+ return _default
+ }
+ return u.Flags
+}
+
+func (u *InterfaceAddresses) HasFlags() bool {
+ return u.FlagsPresent
+}
+
+func (u *InterfaceAddresses) ClearFlags() {
+ u.FlagsPresent = false
+}
+
+func (u *InterfaceAddresses) SetAddresses(addresses []fuchsianet.Subnet) {
+ u.Addresses = addresses
+ u.AddressesPresent = true
+}
+
+func (u *InterfaceAddresses) GetAddresses() []fuchsianet.Subnet {
+ return u.Addresses
+}
+
+func (u *InterfaceAddresses) GetAddressesWithDefault(_default []fuchsianet.Subnet) []fuchsianet.Subnet {
+ if !u.HasAddresses() {
+ return _default
+ }
+ return u.Addresses
+}
+
+func (u *InterfaceAddresses) HasAddresses() bool {
+ return u.AddressesPresent
+}
+
+func (u *InterfaceAddresses) ClearAddresses() {
+ u.AddressesPresent = false
+}
+
+func (u *InterfaceAddresses) SetInterfaceFlags(interfaceFlags InterfaceFlags) {
+ u.InterfaceFlags = interfaceFlags
+ u.InterfaceFlagsPresent = true
+}
+
+func (u *InterfaceAddresses) GetInterfaceFlags() InterfaceFlags {
+ return u.InterfaceFlags
+}
+
+func (u *InterfaceAddresses) GetInterfaceFlagsWithDefault(_default InterfaceFlags) InterfaceFlags {
+ if !u.HasInterfaceFlags() {
+ return _default
+ }
+ return u.InterfaceFlags
+}
+
+func (u *InterfaceAddresses) HasInterfaceFlags() bool {
+ return u.InterfaceFlagsPresent
+}
+
+func (u *InterfaceAddresses) ClearInterfaceFlags() {
+ u.InterfaceFlagsPresent = false
+}
+
+func (u *InterfaceAddresses) HasUnknownData() bool {
+ return u.I_unknownData != nil
+}
+
+func (u *InterfaceAddresses) GetUnknownData() map[uint64]_bindings.UnknownData {
+ return u.I_unknownData.(map[uint64]_bindings.UnknownData)
+}
+
+const (
+ BaseSocketCloneOrdinal uint64 = 0x5a61678f293ce16f
+ BaseSocketCloseOrdinal uint64 = 0x5309c5bd1c33dc44
+ BaseSocketDescribeOrdinal uint64 = 0xffcec215078dea0
+ BaseSocketOnOpenOrdinal uint64 = 0x7fc7bbb1dbfd1972
+ BaseSocketSyncOrdinal uint64 = 0x189d88326c18b519
+ BaseSocketGetAttrOrdinal uint64 = 0x78985e216314dafd
+ BaseSocketSetAttrOrdinal uint64 = 0x4186c0f40d938f46
+ BaseSocketNodeGetFlagsOrdinal uint64 = 0x5b88fffb8eda3aa1
+ BaseSocketNodeSetFlagsOrdinal uint64 = 0x5295b76c71fde733
+ BaseSocketBindOrdinal uint64 = 0xf8457e6b05e15bc
+ BaseSocketConnectOrdinal uint64 = 0x17abeee0b9843bb1
+ BaseSocketDisconnectOrdinal uint64 = 0x20eaedba2e0f70a4
+ BaseSocketGetSockNameOrdinal uint64 = 0x41a618ef19a91f9d
+ BaseSocketGetPeerNameOrdinal uint64 = 0x4009d08a4beb5e95
+ BaseSocketShutdown2Ordinal uint64 = 0x57d3458f9754763b
+ BaseSocketSetReuseAddressOrdinal uint64 = 0x1fd74ee8b9a4a876
+ BaseSocketGetReuseAddressOrdinal uint64 = 0x67b7206b8d1bc0a5
+ BaseSocketGetErrorOrdinal uint64 = 0x5aad39b33e5f6ebb
+ BaseSocketSetBroadcastOrdinal uint64 = 0x6023e081ce3cd947
+ BaseSocketGetBroadcastOrdinal uint64 = 0x68796fc556f9780d
+ BaseSocketSetSendBufferOrdinal uint64 = 0x756eac32d73a7a70
+ BaseSocketGetSendBufferOrdinal uint64 = 0x78a52fd9c7b2410b
+ BaseSocketSetReceiveBufferOrdinal uint64 = 0x6b0cf2f1919c7001
+ BaseSocketGetReceiveBufferOrdinal uint64 = 0x14c1a4b64f709e5c
+ BaseSocketSetKeepAliveOrdinal uint64 = 0x572df8f0b920d2c7
+ BaseSocketGetKeepAliveOrdinal uint64 = 0x2dd29d3215f2c9d2
+ BaseSocketSetOutOfBandInlineOrdinal uint64 = 0x3ecb49968bee439
+ BaseSocketGetOutOfBandInlineOrdinal uint64 = 0x348c1ab3aeca1745
+ BaseSocketSetNoCheckOrdinal uint64 = 0x6bbf00c53a4c78c2
+ BaseSocketGetNoCheckOrdinal uint64 = 0x2cd4249286417694
+ BaseSocketSetLingerOrdinal uint64 = 0x45386351246e998e
+ BaseSocketGetLingerOrdinal uint64 = 0x48eb20fc5ccb0e45
+ BaseSocketSetReusePortOrdinal uint64 = 0x24dd3e5cb36d9ccb
+ BaseSocketGetReusePortOrdinal uint64 = 0x7a112c1ab54ff828
+ BaseSocketGetAcceptConnOrdinal uint64 = 0x67ce6db6c2ec8966
+ BaseSocketSetBindToDeviceOrdinal uint64 = 0x2118b483f28aafc4
+ BaseSocketGetBindToDeviceOrdinal uint64 = 0x1ab1fbf0ef7906c8
+ BaseSocketSetTimestampOrdinal uint64 = 0x285d6516c263d839
+ BaseSocketGetTimestampOrdinal uint64 = 0x49f2fffbbcc2bd27
+ BaseSocketSetIpTypeOfServiceOrdinal uint64 = 0x559849ba9574834a
+ BaseSocketGetIpTypeOfServiceOrdinal uint64 = 0x2740d6bfa379deb1
+ BaseSocketSetIpTtlOrdinal uint64 = 0x67395f7176d7918e
+ BaseSocketGetIpTtlOrdinal uint64 = 0x789d5ddfe26b97ac
+ BaseSocketSetIpPacketInfoOrdinal uint64 = 0x3e02030a2fd13c03
+ BaseSocketGetIpPacketInfoOrdinal uint64 = 0x176f008d5a0dab15
+ BaseSocketSetIpReceiveTypeOfServiceOrdinal uint64 = 0x17148064e563dde5
+ BaseSocketGetIpReceiveTypeOfServiceOrdinal uint64 = 0x26cc26653b0fa460
+ BaseSocketSetIpMulticastInterfaceOrdinal uint64 = 0x6566fdb7061bbcf8
+ BaseSocketGetIpMulticastInterfaceOrdinal uint64 = 0x44415752b16ff024
+ BaseSocketSetIpMulticastTtlOrdinal uint64 = 0x7d1a477776ba00d3
+ BaseSocketGetIpMulticastTtlOrdinal uint64 = 0x17cbd4bd9246fc40
+ BaseSocketSetIpMulticastLoopbackOrdinal uint64 = 0x2a56b32f8f02369
+ BaseSocketGetIpMulticastLoopbackOrdinal uint64 = 0x27b16d7883c08ca8
+ BaseSocketAddIpMembershipOrdinal uint64 = 0x39a4eda6580147a0
+ BaseSocketDropIpMembershipOrdinal uint64 = 0x6d16e8fbaf496254
+ BaseSocketAddIpv6MembershipOrdinal uint64 = 0x231556bfce3194c1
+ BaseSocketDropIpv6MembershipOrdinal uint64 = 0x629c12db293444c0
+ BaseSocketSetIpv6MulticastInterfaceOrdinal uint64 = 0x5d2a568e67b54234
+ BaseSocketGetIpv6MulticastInterfaceOrdinal uint64 = 0x7b8f38fe354f32bc
+ BaseSocketSetIpv6MulticastHopsOrdinal uint64 = 0x2b2167d12c8a495d
+ BaseSocketGetIpv6MulticastHopsOrdinal uint64 = 0x51a3c8257b1a2745
+ BaseSocketSetIpv6MulticastLoopbackOrdinal uint64 = 0x97706949c4163b7
+ BaseSocketGetIpv6MulticastLoopbackOrdinal uint64 = 0x78d6544e48794935
+ BaseSocketSetIpv6OnlyOrdinal uint64 = 0x1d87ce5c02d8bcb2
+ BaseSocketGetIpv6OnlyOrdinal uint64 = 0x25d6755dbe2e9c7e
+ BaseSocketSetIpv6ReceiveTrafficClassOrdinal uint64 = 0x53b93b71c9431fe4
+ BaseSocketGetIpv6ReceiveTrafficClassOrdinal uint64 = 0x1c8433af11cd4596
+ BaseSocketSetIpv6TrafficClassOrdinal uint64 = 0x32da0ca485fad782
+ BaseSocketGetIpv6TrafficClassOrdinal uint64 = 0x6ca5b9166c8d3cba
+)
+
+type BaseSocketWithCtxInterface _bindings.ChannelProxy
+
+// Create another connection to the same remote object.
+//
+// `flags` may be any of:
+//
+// - `OPEN_RIGHT_*`
+// - `OPEN_FLAG_APPEND`
+// - `OPEN_FLAG_NO_REMOTE`
+// - `OPEN_FLAG_DESCRIBE`
+// - `CLONE_FLAG_SAME_RIGHTS`
+//
+// All other flags are ignored.
+//
+// The `OPEN_RIGHT_*` bits in `flags` request corresponding rights over the resulting
+// cloned object.
+// The cloned object must have rights less than or equal to the original object, otherwise
+// returns `ZX_ERR_ACCESS_DENIED`.
+// Alternatively, pass `CLONE_FLAG_SAME_RIGHTS` to inherit the rights on the source connection.
+// It is invalid to pass any of the `OPEN_RIGHT_*` flags together with
+// `CLONE_FLAG_SAME_RIGHTS`.
+func (p *BaseSocketWithCtxInterface) Clone(ctx_ _bindings.Context, flags uint32, object fuchsiaio.NodeWithCtxInterfaceRequest) error {
+ req_ := &baseSocketWithCtxCloneRequest{
+ Flags: flags,
+ Object: object,
+ }
+ err_ := ((*_bindings.ChannelProxy)(p)).Send(BaseSocketCloneOrdinal, req_)
+ return err_
+}
+
+// Terminates connection with object.
+//
+// This method does not require any rights.
+func (p *BaseSocketWithCtxInterface) Close(ctx_ _bindings.Context) (int32, error) {
+ var req_ _bindings.Message
+ resp_ := &baseSocketWithCtxCloseResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketCloseOrdinal, req_, resp_)
+ return resp_.S, err_
+}
+
+// Returns extra information about the type of the object.
+// If the `Describe` operation fails, the connection is closed.
+//
+// This method does not require any rights.
+func (p *BaseSocketWithCtxInterface) Describe(ctx_ _bindings.Context) (fuchsiaio.NodeInfo, error) {
+ var req_ _bindings.Message
+ resp_ := &baseSocketWithCtxDescribeResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketDescribeOrdinal, req_, resp_)
+ return resp_.Info, err_
+}
+
+// An event produced eagerly by a FIDL server if requested by `OPEN_FLAG_DESCRIBE`.
+//
+// Indicates the success or failure of the open operation, and optionally describes the
+// object. If the status is `ZX_OK`, `info` contains descriptive information about the object
+// (the same as would be returned by `Describe`).
+func (p *BaseSocketWithCtxInterface) ExpectOnOpen(ctx_ _bindings.Context) (int32, *fuchsiaio.NodeInfo, error) {
+ resp_ := &baseSocketWithCtxOnOpenResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Recv(BaseSocketOnOpenOrdinal, resp_)
+ return resp_.S, resp_.Info, err_
+}
+
+// Synchronizes updates to the node to the underlying media, if it exists.
+//
+// This method does not require any rights.
+func (p *BaseSocketWithCtxInterface) Sync(ctx_ _bindings.Context) (int32, error) {
+ var req_ _bindings.Message
+ resp_ := &baseSocketWithCtxSyncResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketSyncOrdinal, req_, resp_)
+ return resp_.S, err_
+}
+
+// Acquires information about the node.
+//
+// This method does not require any rights.
+func (p *BaseSocketWithCtxInterface) GetAttr(ctx_ _bindings.Context) (int32, fuchsiaio.NodeAttributes, error) {
+ var req_ _bindings.Message
+ resp_ := &baseSocketWithCtxGetAttrResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketGetAttrOrdinal, req_, resp_)
+ return resp_.S, resp_.Attributes, err_
+}
+
+// Updates information about the node.
+// `flags` may be any of `NODE_ATTRIBUTE_FLAG_*`.
+//
+// This method requires following rights: `OPEN_RIGHT_WRITABLE`, otherwise returns
+// `ZX_ERR_BAD_HANDLE`.
+func (p *BaseSocketWithCtxInterface) SetAttr(ctx_ _bindings.Context, flags uint32, attributes fuchsiaio.NodeAttributes) (int32, error) {
+ req_ := &baseSocketWithCtxSetAttrRequest{
+ Flags: flags,
+ Attributes: attributes,
+ }
+ resp_ := &baseSocketWithCtxSetAttrResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketSetAttrOrdinal, req_, resp_)
+ return resp_.S, err_
+}
+
+// Acquires the `Directory.Open` rights and flags used to access this file.
+//
+// This method does not require any rights.
+// This method has the same functionality as GetFlags for File and is
+// meant as an in-progress replacement.
+func (p *BaseSocketWithCtxInterface) NodeGetFlags(ctx_ _bindings.Context) (int32, uint32, error) {
+ var req_ _bindings.Message
+ resp_ := &baseSocketWithCtxNodeGetFlagsResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketNodeGetFlagsOrdinal, req_, resp_)
+ return resp_.S, resp_.Flags, err_
+}
+
+// Changes the `Directory.Open` flags used to access the file.
+// Supported flags which can be turned on / off:
+// - `OPEN_FLAG_APPEND`
+//
+// This method does not require any rights.
+// This method has the same functionality as SetFlags for File and is
+// meant as an in-progress replacement.
+func (p *BaseSocketWithCtxInterface) NodeSetFlags(ctx_ _bindings.Context, flags uint32) (int32, error) {
+ req_ := &baseSocketWithCtxNodeSetFlagsRequest{
+ Flags: flags,
+ }
+ resp_ := &baseSocketWithCtxNodeSetFlagsResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketNodeSetFlagsOrdinal, req_, resp_)
+ return resp_.S, err_
+}
+
+// Sets the local address used for the socket.
+func (p *BaseSocketWithCtxInterface) Bind(ctx_ _bindings.Context, addr fuchsianet.SocketAddress) (BaseSocketBindResult, error) {
+ req_ := &baseSocketWithCtxBindRequest{
+ Addr: addr,
+ }
+ resp_ := &baseSocketWithCtxBindResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketBindOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Initiates a connection to a remote address.
+func (p *BaseSocketWithCtxInterface) Connect(ctx_ _bindings.Context, addr fuchsianet.SocketAddress) (BaseSocketConnectResult, error) {
+ req_ := &baseSocketWithCtxConnectRequest{
+ Addr: addr,
+ }
+ resp_ := &baseSocketWithCtxConnectResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketConnectOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Clears connection information from this socket.
+func (p *BaseSocketWithCtxInterface) Disconnect(ctx_ _bindings.Context) (BaseSocketDisconnectResult, error) {
+ var req_ _bindings.Message
+ resp_ := &baseSocketWithCtxDisconnectResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketDisconnectOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Retrieves the local socket address.
+func (p *BaseSocketWithCtxInterface) GetSockName(ctx_ _bindings.Context) (BaseSocketGetSockNameResult, error) {
+ var req_ _bindings.Message
+ resp_ := &baseSocketWithCtxGetSockNameResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketGetSockNameOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Retrieves the remote socket address.
+func (p *BaseSocketWithCtxInterface) GetPeerName(ctx_ _bindings.Context) (BaseSocketGetPeerNameResult, error) {
+ var req_ _bindings.Message
+ resp_ := &baseSocketWithCtxGetPeerNameResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketGetPeerNameOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Shuts down part of the socket.
+func (p *BaseSocketWithCtxInterface) Shutdown2(ctx_ _bindings.Context, mode ShutdownMode) (BaseSocketShutdown2Result, error) {
+ req_ := &baseSocketWithCtxShutdown2Request{
+ Mode: mode,
+ }
+ resp_ := &baseSocketWithCtxShutdown2Response{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketShutdown2Ordinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_SOCKET` -> `SO_REUSEADDR`.
+func (p *BaseSocketWithCtxInterface) SetReuseAddress(ctx_ _bindings.Context, value bool) (BaseSocketSetReuseAddressResult, error) {
+ req_ := &baseSocketWithCtxSetReuseAddressRequest{
+ Value: value,
+ }
+ resp_ := &baseSocketWithCtxSetReuseAddressResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketSetReuseAddressOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_SOCKET` -> `SO_REUSEADDR`.
+func (p *BaseSocketWithCtxInterface) GetReuseAddress(ctx_ _bindings.Context) (BaseSocketGetReuseAddressResult, error) {
+ var req_ _bindings.Message
+ resp_ := &baseSocketWithCtxGetReuseAddressResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketGetReuseAddressOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_SOCKET` -> `SO_ERROR`.
+// Returns the last error if there is an error set on the socket.
+func (p *BaseSocketWithCtxInterface) GetError(ctx_ _bindings.Context) (BaseSocketGetErrorResult, error) {
+ var req_ _bindings.Message
+ resp_ := &baseSocketWithCtxGetErrorResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketGetErrorOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_SOCKET` -> `SO_BROADCAST`.
+func (p *BaseSocketWithCtxInterface) SetBroadcast(ctx_ _bindings.Context, value bool) (BaseSocketSetBroadcastResult, error) {
+ req_ := &baseSocketWithCtxSetBroadcastRequest{
+ Value: value,
+ }
+ resp_ := &baseSocketWithCtxSetBroadcastResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketSetBroadcastOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_SOCKET` -> `SO_BROADCAST`.
+func (p *BaseSocketWithCtxInterface) GetBroadcast(ctx_ _bindings.Context) (BaseSocketGetBroadcastResult, error) {
+ var req_ _bindings.Message
+ resp_ := &baseSocketWithCtxGetBroadcastResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketGetBroadcastOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_SOCKET` -> `SO_SNDBUF`.
+func (p *BaseSocketWithCtxInterface) SetSendBuffer(ctx_ _bindings.Context, valueBytes uint64) (BaseSocketSetSendBufferResult, error) {
+ req_ := &baseSocketWithCtxSetSendBufferRequest{
+ ValueBytes: valueBytes,
+ }
+ resp_ := &baseSocketWithCtxSetSendBufferResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketSetSendBufferOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_SOCKET` -> `SO_SNDBUF`.
+func (p *BaseSocketWithCtxInterface) GetSendBuffer(ctx_ _bindings.Context) (BaseSocketGetSendBufferResult, error) {
+ var req_ _bindings.Message
+ resp_ := &baseSocketWithCtxGetSendBufferResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketGetSendBufferOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_SOCKET` -> `SO_RCVBUF`.
+func (p *BaseSocketWithCtxInterface) SetReceiveBuffer(ctx_ _bindings.Context, valueBytes uint64) (BaseSocketSetReceiveBufferResult, error) {
+ req_ := &baseSocketWithCtxSetReceiveBufferRequest{
+ ValueBytes: valueBytes,
+ }
+ resp_ := &baseSocketWithCtxSetReceiveBufferResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketSetReceiveBufferOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_SOCKET` -> `SO_RCVBUF`.
+func (p *BaseSocketWithCtxInterface) GetReceiveBuffer(ctx_ _bindings.Context) (BaseSocketGetReceiveBufferResult, error) {
+ var req_ _bindings.Message
+ resp_ := &baseSocketWithCtxGetReceiveBufferResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketGetReceiveBufferOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_SOCKET` -> `SO_KEEPALIVE`.
+func (p *BaseSocketWithCtxInterface) SetKeepAlive(ctx_ _bindings.Context, value bool) (BaseSocketSetKeepAliveResult, error) {
+ req_ := &baseSocketWithCtxSetKeepAliveRequest{
+ Value: value,
+ }
+ resp_ := &baseSocketWithCtxSetKeepAliveResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketSetKeepAliveOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_SOCKET` -> `SO_KEEPALIVE`.
+func (p *BaseSocketWithCtxInterface) GetKeepAlive(ctx_ _bindings.Context) (BaseSocketGetKeepAliveResult, error) {
+ var req_ _bindings.Message
+ resp_ := &baseSocketWithCtxGetKeepAliveResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketGetKeepAliveOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_SOCKET` -> `SO_OOBINLINE`.
+func (p *BaseSocketWithCtxInterface) SetOutOfBandInline(ctx_ _bindings.Context, value bool) (BaseSocketSetOutOfBandInlineResult, error) {
+ req_ := &baseSocketWithCtxSetOutOfBandInlineRequest{
+ Value: value,
+ }
+ resp_ := &baseSocketWithCtxSetOutOfBandInlineResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketSetOutOfBandInlineOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_SOCKET` -> `SO_OOBINLINE`.
+func (p *BaseSocketWithCtxInterface) GetOutOfBandInline(ctx_ _bindings.Context) (BaseSocketGetOutOfBandInlineResult, error) {
+ var req_ _bindings.Message
+ resp_ := &baseSocketWithCtxGetOutOfBandInlineResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketGetOutOfBandInlineOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_SOCKET` -> `SO_NO_CHECK`.
+func (p *BaseSocketWithCtxInterface) SetNoCheck(ctx_ _bindings.Context, value bool) (BaseSocketSetNoCheckResult, error) {
+ req_ := &baseSocketWithCtxSetNoCheckRequest{
+ Value: value,
+ }
+ resp_ := &baseSocketWithCtxSetNoCheckResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketSetNoCheckOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_SOCKET` -> `SO_NO_CHECK`.
+func (p *BaseSocketWithCtxInterface) GetNoCheck(ctx_ _bindings.Context) (BaseSocketGetNoCheckResult, error) {
+ var req_ _bindings.Message
+ resp_ := &baseSocketWithCtxGetNoCheckResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketGetNoCheckOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_SOCKET` -> `SO_LINGER`.
+func (p *BaseSocketWithCtxInterface) SetLinger(ctx_ _bindings.Context, linger bool, lengthSecs uint32) (BaseSocketSetLingerResult, error) {
+ req_ := &baseSocketWithCtxSetLingerRequest{
+ Linger: linger,
+ LengthSecs: lengthSecs,
+ }
+ resp_ := &baseSocketWithCtxSetLingerResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketSetLingerOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_SOCKET` -> `SO_LINGER`.
+func (p *BaseSocketWithCtxInterface) GetLinger(ctx_ _bindings.Context) (BaseSocketGetLingerResult, error) {
+ var req_ _bindings.Message
+ resp_ := &baseSocketWithCtxGetLingerResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketGetLingerOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_SOCKET` -> `SO_REUSEPORT`.
+func (p *BaseSocketWithCtxInterface) SetReusePort(ctx_ _bindings.Context, value bool) (BaseSocketSetReusePortResult, error) {
+ req_ := &baseSocketWithCtxSetReusePortRequest{
+ Value: value,
+ }
+ resp_ := &baseSocketWithCtxSetReusePortResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketSetReusePortOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_SOCKET` -> `SO_REUSEPORT`.
+func (p *BaseSocketWithCtxInterface) GetReusePort(ctx_ _bindings.Context) (BaseSocketGetReusePortResult, error) {
+ var req_ _bindings.Message
+ resp_ := &baseSocketWithCtxGetReusePortResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketGetReusePortOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_SOCKET` -> `SO_ACCEPTCONN`.
+func (p *BaseSocketWithCtxInterface) GetAcceptConn(ctx_ _bindings.Context) (BaseSocketGetAcceptConnResult, error) {
+ var req_ _bindings.Message
+ resp_ := &baseSocketWithCtxGetAcceptConnResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketGetAcceptConnOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_SOCKET` -> `SO_BINDTODEVICE`.
+func (p *BaseSocketWithCtxInterface) SetBindToDevice(ctx_ _bindings.Context, value string) (BaseSocketSetBindToDeviceResult, error) {
+ req_ := &baseSocketWithCtxSetBindToDeviceRequest{
+ Value: value,
+ }
+ resp_ := &baseSocketWithCtxSetBindToDeviceResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketSetBindToDeviceOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_SOCKET` -> `SO_BINDTODEVICE`.
+func (p *BaseSocketWithCtxInterface) GetBindToDevice(ctx_ _bindings.Context) (BaseSocketGetBindToDeviceResult, error) {
+ var req_ _bindings.Message
+ resp_ := &baseSocketWithCtxGetBindToDeviceResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketGetBindToDeviceOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_SOCKET` -> `SO_TIMESTAMP`.
+func (p *BaseSocketWithCtxInterface) SetTimestamp(ctx_ _bindings.Context, value bool) (BaseSocketSetTimestampResult, error) {
+ req_ := &baseSocketWithCtxSetTimestampRequest{
+ Value: value,
+ }
+ resp_ := &baseSocketWithCtxSetTimestampResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketSetTimestampOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_SOCKET` -> `SO_TIMESTAMP`.
+func (p *BaseSocketWithCtxInterface) GetTimestamp(ctx_ _bindings.Context) (BaseSocketGetTimestampResult, error) {
+ var req_ _bindings.Message
+ resp_ := &baseSocketWithCtxGetTimestampResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketGetTimestampOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IP` -> `IP_TOS`.
+func (p *BaseSocketWithCtxInterface) SetIpTypeOfService(ctx_ _bindings.Context, value uint8) (BaseSocketSetIpTypeOfServiceResult, error) {
+ req_ := &baseSocketWithCtxSetIpTypeOfServiceRequest{
+ Value: value,
+ }
+ resp_ := &baseSocketWithCtxSetIpTypeOfServiceResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketSetIpTypeOfServiceOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_IP` -> `IP_TOS`.
+func (p *BaseSocketWithCtxInterface) GetIpTypeOfService(ctx_ _bindings.Context) (BaseSocketGetIpTypeOfServiceResult, error) {
+ var req_ _bindings.Message
+ resp_ := &baseSocketWithCtxGetIpTypeOfServiceResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketGetIpTypeOfServiceOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IP` -> `IP_TTL`.
+func (p *BaseSocketWithCtxInterface) SetIpTtl(ctx_ _bindings.Context, value OptionalUint8) (BaseSocketSetIpTtlResult, error) {
+ req_ := &baseSocketWithCtxSetIpTtlRequest{
+ Value: value,
+ }
+ resp_ := &baseSocketWithCtxSetIpTtlResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketSetIpTtlOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_IP` -> `IP_TTL`.
+func (p *BaseSocketWithCtxInterface) GetIpTtl(ctx_ _bindings.Context) (BaseSocketGetIpTtlResult, error) {
+ var req_ _bindings.Message
+ resp_ := &baseSocketWithCtxGetIpTtlResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketGetIpTtlOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IP` -> `IP_PKTINFO`.
+func (p *BaseSocketWithCtxInterface) SetIpPacketInfo(ctx_ _bindings.Context, value bool) (BaseSocketSetIpPacketInfoResult, error) {
+ req_ := &baseSocketWithCtxSetIpPacketInfoRequest{
+ Value: value,
+ }
+ resp_ := &baseSocketWithCtxSetIpPacketInfoResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketSetIpPacketInfoOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_IP` -> `IP_PKTINFO`.
+func (p *BaseSocketWithCtxInterface) GetIpPacketInfo(ctx_ _bindings.Context) (BaseSocketGetIpPacketInfoResult, error) {
+ var req_ _bindings.Message
+ resp_ := &baseSocketWithCtxGetIpPacketInfoResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketGetIpPacketInfoOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IP` -> `IP_RECVTOS`.
+func (p *BaseSocketWithCtxInterface) SetIpReceiveTypeOfService(ctx_ _bindings.Context, value bool) (BaseSocketSetIpReceiveTypeOfServiceResult, error) {
+ req_ := &baseSocketWithCtxSetIpReceiveTypeOfServiceRequest{
+ Value: value,
+ }
+ resp_ := &baseSocketWithCtxSetIpReceiveTypeOfServiceResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketSetIpReceiveTypeOfServiceOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_IP` -> `IP_RECVTOS`.
+func (p *BaseSocketWithCtxInterface) GetIpReceiveTypeOfService(ctx_ _bindings.Context) (BaseSocketGetIpReceiveTypeOfServiceResult, error) {
+ var req_ _bindings.Message
+ resp_ := &baseSocketWithCtxGetIpReceiveTypeOfServiceResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketGetIpReceiveTypeOfServiceOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IP` -> `IP_MULTICAST_IF`.
+func (p *BaseSocketWithCtxInterface) SetIpMulticastInterface(ctx_ _bindings.Context, iface uint64, address fuchsianet.Ipv4Address) (BaseSocketSetIpMulticastInterfaceResult, error) {
+ req_ := &baseSocketWithCtxSetIpMulticastInterfaceRequest{
+ Iface: iface,
+ Address: address,
+ }
+ resp_ := &baseSocketWithCtxSetIpMulticastInterfaceResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketSetIpMulticastInterfaceOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_IP` -> `IP_MULTICAST_IF`.
+func (p *BaseSocketWithCtxInterface) GetIpMulticastInterface(ctx_ _bindings.Context) (BaseSocketGetIpMulticastInterfaceResult, error) {
+ var req_ _bindings.Message
+ resp_ := &baseSocketWithCtxGetIpMulticastInterfaceResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketGetIpMulticastInterfaceOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IP` -> `IP_MULTICAST_TTL`.
+func (p *BaseSocketWithCtxInterface) SetIpMulticastTtl(ctx_ _bindings.Context, value OptionalUint8) (BaseSocketSetIpMulticastTtlResult, error) {
+ req_ := &baseSocketWithCtxSetIpMulticastTtlRequest{
+ Value: value,
+ }
+ resp_ := &baseSocketWithCtxSetIpMulticastTtlResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketSetIpMulticastTtlOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_IP` -> `IP_MULTICAST_TTL`.
+func (p *BaseSocketWithCtxInterface) GetIpMulticastTtl(ctx_ _bindings.Context) (BaseSocketGetIpMulticastTtlResult, error) {
+ var req_ _bindings.Message
+ resp_ := &baseSocketWithCtxGetIpMulticastTtlResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketGetIpMulticastTtlOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IP` -> `IP_MULTICAST_LOOP`.
+func (p *BaseSocketWithCtxInterface) SetIpMulticastLoopback(ctx_ _bindings.Context, value bool) (BaseSocketSetIpMulticastLoopbackResult, error) {
+ req_ := &baseSocketWithCtxSetIpMulticastLoopbackRequest{
+ Value: value,
+ }
+ resp_ := &baseSocketWithCtxSetIpMulticastLoopbackResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketSetIpMulticastLoopbackOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_IP` -> `IP_MULTICAST_LOOP`.
+func (p *BaseSocketWithCtxInterface) GetIpMulticastLoopback(ctx_ _bindings.Context) (BaseSocketGetIpMulticastLoopbackResult, error) {
+ var req_ _bindings.Message
+ resp_ := &baseSocketWithCtxGetIpMulticastLoopbackResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketGetIpMulticastLoopbackOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IP` -> `IP_ADD_MEMBERSHIP`
+func (p *BaseSocketWithCtxInterface) AddIpMembership(ctx_ _bindings.Context, membership IpMulticastMembership) (BaseSocketAddIpMembershipResult, error) {
+ req_ := &baseSocketWithCtxAddIpMembershipRequest{
+ Membership: membership,
+ }
+ resp_ := &baseSocketWithCtxAddIpMembershipResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketAddIpMembershipOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IP` -> `IP_DROP_MEMBERSHIP`
+func (p *BaseSocketWithCtxInterface) DropIpMembership(ctx_ _bindings.Context, membership IpMulticastMembership) (BaseSocketDropIpMembershipResult, error) {
+ req_ := &baseSocketWithCtxDropIpMembershipRequest{
+ Membership: membership,
+ }
+ resp_ := &baseSocketWithCtxDropIpMembershipResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketDropIpMembershipOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IPV6` -> `IPV6_ADD_MEMBERSHIP`.
+func (p *BaseSocketWithCtxInterface) AddIpv6Membership(ctx_ _bindings.Context, membership Ipv6MulticastMembership) (BaseSocketAddIpv6MembershipResult, error) {
+ req_ := &baseSocketWithCtxAddIpv6MembershipRequest{
+ Membership: membership,
+ }
+ resp_ := &baseSocketWithCtxAddIpv6MembershipResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketAddIpv6MembershipOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IPV6` -> `IPV6_DROP_MEMBERSHIP`.
+func (p *BaseSocketWithCtxInterface) DropIpv6Membership(ctx_ _bindings.Context, membership Ipv6MulticastMembership) (BaseSocketDropIpv6MembershipResult, error) {
+ req_ := &baseSocketWithCtxDropIpv6MembershipRequest{
+ Membership: membership,
+ }
+ resp_ := &baseSocketWithCtxDropIpv6MembershipResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketDropIpv6MembershipOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
+func (p *BaseSocketWithCtxInterface) SetIpv6MulticastInterface(ctx_ _bindings.Context, value uint64) (BaseSocketSetIpv6MulticastInterfaceResult, error) {
+ req_ := &baseSocketWithCtxSetIpv6MulticastInterfaceRequest{
+ Value: value,
+ }
+ resp_ := &baseSocketWithCtxSetIpv6MulticastInterfaceResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketSetIpv6MulticastInterfaceOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
+func (p *BaseSocketWithCtxInterface) GetIpv6MulticastInterface(ctx_ _bindings.Context) (BaseSocketGetIpv6MulticastInterfaceResult, error) {
+ var req_ _bindings.Message
+ resp_ := &baseSocketWithCtxGetIpv6MulticastInterfaceResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketGetIpv6MulticastInterfaceOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
+func (p *BaseSocketWithCtxInterface) SetIpv6MulticastHops(ctx_ _bindings.Context, value OptionalUint8) (BaseSocketSetIpv6MulticastHopsResult, error) {
+ req_ := &baseSocketWithCtxSetIpv6MulticastHopsRequest{
+ Value: value,
+ }
+ resp_ := &baseSocketWithCtxSetIpv6MulticastHopsResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketSetIpv6MulticastHopsOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
+func (p *BaseSocketWithCtxInterface) GetIpv6MulticastHops(ctx_ _bindings.Context) (BaseSocketGetIpv6MulticastHopsResult, error) {
+ var req_ _bindings.Message
+ resp_ := &baseSocketWithCtxGetIpv6MulticastHopsResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketGetIpv6MulticastHopsOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
+func (p *BaseSocketWithCtxInterface) SetIpv6MulticastLoopback(ctx_ _bindings.Context, value bool) (BaseSocketSetIpv6MulticastLoopbackResult, error) {
+ req_ := &baseSocketWithCtxSetIpv6MulticastLoopbackRequest{
+ Value: value,
+ }
+ resp_ := &baseSocketWithCtxSetIpv6MulticastLoopbackResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketSetIpv6MulticastLoopbackOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
+func (p *BaseSocketWithCtxInterface) GetIpv6MulticastLoopback(ctx_ _bindings.Context) (BaseSocketGetIpv6MulticastLoopbackResult, error) {
+ var req_ _bindings.Message
+ resp_ := &baseSocketWithCtxGetIpv6MulticastLoopbackResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketGetIpv6MulticastLoopbackOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IPV6` -> `IPV6_V6ONLY`.
+func (p *BaseSocketWithCtxInterface) SetIpv6Only(ctx_ _bindings.Context, value bool) (BaseSocketSetIpv6OnlyResult, error) {
+ req_ := &baseSocketWithCtxSetIpv6OnlyRequest{
+ Value: value,
+ }
+ resp_ := &baseSocketWithCtxSetIpv6OnlyResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketSetIpv6OnlyOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_IPV6` -> `IPV6_V6ONLY`.
+func (p *BaseSocketWithCtxInterface) GetIpv6Only(ctx_ _bindings.Context) (BaseSocketGetIpv6OnlyResult, error) {
+ var req_ _bindings.Message
+ resp_ := &baseSocketWithCtxGetIpv6OnlyResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketGetIpv6OnlyOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IPV6` -> `IPV6_RECVTCLASS`.
+func (p *BaseSocketWithCtxInterface) SetIpv6ReceiveTrafficClass(ctx_ _bindings.Context, value bool) (BaseSocketSetIpv6ReceiveTrafficClassResult, error) {
+ req_ := &baseSocketWithCtxSetIpv6ReceiveTrafficClassRequest{
+ Value: value,
+ }
+ resp_ := &baseSocketWithCtxSetIpv6ReceiveTrafficClassResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketSetIpv6ReceiveTrafficClassOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_IPV6` -> `IPV6_RECVTCLASS`.
+func (p *BaseSocketWithCtxInterface) GetIpv6ReceiveTrafficClass(ctx_ _bindings.Context) (BaseSocketGetIpv6ReceiveTrafficClassResult, error) {
+ var req_ _bindings.Message
+ resp_ := &baseSocketWithCtxGetIpv6ReceiveTrafficClassResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketGetIpv6ReceiveTrafficClassOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IPV6` -> `IPV6_TCLASS`
+func (p *BaseSocketWithCtxInterface) SetIpv6TrafficClass(ctx_ _bindings.Context, value OptionalUint8) (BaseSocketSetIpv6TrafficClassResult, error) {
+ req_ := &baseSocketWithCtxSetIpv6TrafficClassRequest{
+ Value: value,
+ }
+ resp_ := &baseSocketWithCtxSetIpv6TrafficClassResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketSetIpv6TrafficClassOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_IPV6` -> `IPV6_TCLASS`.
+func (p *BaseSocketWithCtxInterface) GetIpv6TrafficClass(ctx_ _bindings.Context) (BaseSocketGetIpv6TrafficClassResult, error) {
+ var req_ _bindings.Message
+ resp_ := &baseSocketWithCtxGetIpv6TrafficClassResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(BaseSocketGetIpv6TrafficClassOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// A network socket.
+//
+// Once a socket has been retrieved from a `Provider`, this interface is then used to further
+// configure and use the socket. This interface is essentially POSIX. Its implementation must
+// support Linux-specific arguments to {Get,Set}SockOpt.
+//
+// All methods on this type are nonblocking; their exact behaviors match their Linux counterparts.
+//
+// *Warning:* This protocol is not yet ready for direct use by clients. Instead, clients should
+// use the BSD sockets API to interact with sockets. We plan to change this protocol substantially
+// and clients that couple directly to this protocol will make those changes more difficult.
+type BaseSocketWithCtx interface {
+ // Create another connection to the same remote object.
+ //
+ // `flags` may be any of:
+ //
+ // - `OPEN_RIGHT_*`
+ // - `OPEN_FLAG_APPEND`
+ // - `OPEN_FLAG_NO_REMOTE`
+ // - `OPEN_FLAG_DESCRIBE`
+ // - `CLONE_FLAG_SAME_RIGHTS`
+ //
+ // All other flags are ignored.
+ //
+ // The `OPEN_RIGHT_*` bits in `flags` request corresponding rights over the resulting
+ // cloned object.
+ // The cloned object must have rights less than or equal to the original object, otherwise
+ // returns `ZX_ERR_ACCESS_DENIED`.
+ // Alternatively, pass `CLONE_FLAG_SAME_RIGHTS` to inherit the rights on the source connection.
+ // It is invalid to pass any of the `OPEN_RIGHT_*` flags together with
+ // `CLONE_FLAG_SAME_RIGHTS`.
+ Clone(ctx_ _bindings.Context, flags uint32, object fuchsiaio.NodeWithCtxInterfaceRequest) error
+ // Terminates connection with object.
+ //
+ // This method does not require any rights.
+ Close(ctx_ _bindings.Context) (int32, error)
+ // Returns extra information about the type of the object.
+ // If the `Describe` operation fails, the connection is closed.
+ //
+ // This method does not require any rights.
+ Describe(ctx_ _bindings.Context) (fuchsiaio.NodeInfo, error)
+ // An event produced eagerly by a FIDL server if requested by `OPEN_FLAG_DESCRIBE`.
+ //
+ // Indicates the success or failure of the open operation, and optionally describes the
+ // object. If the status is `ZX_OK`, `info` contains descriptive information about the object
+ // (the same as would be returned by `Describe`).
+ // Synchronizes updates to the node to the underlying media, if it exists.
+ //
+ // This method does not require any rights.
+ Sync(ctx_ _bindings.Context) (int32, error)
+ // Acquires information about the node.
+ //
+ // This method does not require any rights.
+ GetAttr(ctx_ _bindings.Context) (int32, fuchsiaio.NodeAttributes, error)
+ // Updates information about the node.
+ // `flags` may be any of `NODE_ATTRIBUTE_FLAG_*`.
+ //
+ // This method requires following rights: `OPEN_RIGHT_WRITABLE`, otherwise returns
+ // `ZX_ERR_BAD_HANDLE`.
+ SetAttr(ctx_ _bindings.Context, flags uint32, attributes fuchsiaio.NodeAttributes) (int32, error)
+ // Acquires the `Directory.Open` rights and flags used to access this file.
+ //
+ // This method does not require any rights.
+ // This method has the same functionality as GetFlags for File and is
+ // meant as an in-progress replacement.
+ NodeGetFlags(ctx_ _bindings.Context) (int32, uint32, error)
+ // Changes the `Directory.Open` flags used to access the file.
+ // Supported flags which can be turned on / off:
+ // - `OPEN_FLAG_APPEND`
+ //
+ // This method does not require any rights.
+ // This method has the same functionality as SetFlags for File and is
+ // meant as an in-progress replacement.
+ NodeSetFlags(ctx_ _bindings.Context, flags uint32) (int32, error)
+ // Sets the local address used for the socket.
+ Bind(ctx_ _bindings.Context, addr fuchsianet.SocketAddress) (BaseSocketBindResult, error)
+ // Initiates a connection to a remote address.
+ Connect(ctx_ _bindings.Context, addr fuchsianet.SocketAddress) (BaseSocketConnectResult, error)
+ // Clears connection information from this socket.
+ Disconnect(ctx_ _bindings.Context) (BaseSocketDisconnectResult, error)
+ // Retrieves the local socket address.
+ GetSockName(ctx_ _bindings.Context) (BaseSocketGetSockNameResult, error)
+ // Retrieves the remote socket address.
+ GetPeerName(ctx_ _bindings.Context) (BaseSocketGetPeerNameResult, error)
+ // Shuts down part of the socket.
+ Shutdown2(ctx_ _bindings.Context, mode ShutdownMode) (BaseSocketShutdown2Result, error)
+ // Set `SOL_SOCKET` -> `SO_REUSEADDR`.
+ SetReuseAddress(ctx_ _bindings.Context, value bool) (BaseSocketSetReuseAddressResult, error)
+ // Get `SOL_SOCKET` -> `SO_REUSEADDR`.
+ GetReuseAddress(ctx_ _bindings.Context) (BaseSocketGetReuseAddressResult, error)
+ // Get `SOL_SOCKET` -> `SO_ERROR`.
+ // Returns the last error if there is an error set on the socket.
+ GetError(ctx_ _bindings.Context) (BaseSocketGetErrorResult, error)
+ // Set `SOL_SOCKET` -> `SO_BROADCAST`.
+ SetBroadcast(ctx_ _bindings.Context, value bool) (BaseSocketSetBroadcastResult, error)
+ // Get `SOL_SOCKET` -> `SO_BROADCAST`.
+ GetBroadcast(ctx_ _bindings.Context) (BaseSocketGetBroadcastResult, error)
+ // Set `SOL_SOCKET` -> `SO_SNDBUF`.
+ SetSendBuffer(ctx_ _bindings.Context, valueBytes uint64) (BaseSocketSetSendBufferResult, error)
+ // Get `SOL_SOCKET` -> `SO_SNDBUF`.
+ GetSendBuffer(ctx_ _bindings.Context) (BaseSocketGetSendBufferResult, error)
+ // Set `SOL_SOCKET` -> `SO_RCVBUF`.
+ SetReceiveBuffer(ctx_ _bindings.Context, valueBytes uint64) (BaseSocketSetReceiveBufferResult, error)
+ // Get `SOL_SOCKET` -> `SO_RCVBUF`.
+ GetReceiveBuffer(ctx_ _bindings.Context) (BaseSocketGetReceiveBufferResult, error)
+ // Set `SOL_SOCKET` -> `SO_KEEPALIVE`.
+ SetKeepAlive(ctx_ _bindings.Context, value bool) (BaseSocketSetKeepAliveResult, error)
+ // Get `SOL_SOCKET` -> `SO_KEEPALIVE`.
+ GetKeepAlive(ctx_ _bindings.Context) (BaseSocketGetKeepAliveResult, error)
+ // Set `SOL_SOCKET` -> `SO_OOBINLINE`.
+ SetOutOfBandInline(ctx_ _bindings.Context, value bool) (BaseSocketSetOutOfBandInlineResult, error)
+ // Get `SOL_SOCKET` -> `SO_OOBINLINE`.
+ GetOutOfBandInline(ctx_ _bindings.Context) (BaseSocketGetOutOfBandInlineResult, error)
+ // Set `SOL_SOCKET` -> `SO_NO_CHECK`.
+ SetNoCheck(ctx_ _bindings.Context, value bool) (BaseSocketSetNoCheckResult, error)
+ // Get `SOL_SOCKET` -> `SO_NO_CHECK`.
+ GetNoCheck(ctx_ _bindings.Context) (BaseSocketGetNoCheckResult, error)
+ // Set `SOL_SOCKET` -> `SO_LINGER`.
+ SetLinger(ctx_ _bindings.Context, linger bool, lengthSecs uint32) (BaseSocketSetLingerResult, error)
+ // Get `SOL_SOCKET` -> `SO_LINGER`.
+ GetLinger(ctx_ _bindings.Context) (BaseSocketGetLingerResult, error)
+ // Set `SOL_SOCKET` -> `SO_REUSEPORT`.
+ SetReusePort(ctx_ _bindings.Context, value bool) (BaseSocketSetReusePortResult, error)
+ // Get `SOL_SOCKET` -> `SO_REUSEPORT`.
+ GetReusePort(ctx_ _bindings.Context) (BaseSocketGetReusePortResult, error)
+ // Get `SOL_SOCKET` -> `SO_ACCEPTCONN`.
+ GetAcceptConn(ctx_ _bindings.Context) (BaseSocketGetAcceptConnResult, error)
+ // Set `SOL_SOCKET` -> `SO_BINDTODEVICE`.
+ SetBindToDevice(ctx_ _bindings.Context, value string) (BaseSocketSetBindToDeviceResult, error)
+ // Get `SOL_SOCKET` -> `SO_BINDTODEVICE`.
+ GetBindToDevice(ctx_ _bindings.Context) (BaseSocketGetBindToDeviceResult, error)
+ // Set `SOL_SOCKET` -> `SO_TIMESTAMP`.
+ SetTimestamp(ctx_ _bindings.Context, value bool) (BaseSocketSetTimestampResult, error)
+ // Get `SOL_SOCKET` -> `SO_TIMESTAMP`.
+ GetTimestamp(ctx_ _bindings.Context) (BaseSocketGetTimestampResult, error)
+ // Set `SOL_IP` -> `IP_TOS`.
+ SetIpTypeOfService(ctx_ _bindings.Context, value uint8) (BaseSocketSetIpTypeOfServiceResult, error)
+ // Get `SOL_IP` -> `IP_TOS`.
+ GetIpTypeOfService(ctx_ _bindings.Context) (BaseSocketGetIpTypeOfServiceResult, error)
+ // Set `SOL_IP` -> `IP_TTL`.
+ SetIpTtl(ctx_ _bindings.Context, value OptionalUint8) (BaseSocketSetIpTtlResult, error)
+ // Get `SOL_IP` -> `IP_TTL`.
+ GetIpTtl(ctx_ _bindings.Context) (BaseSocketGetIpTtlResult, error)
+ // Set `SOL_IP` -> `IP_PKTINFO`.
+ SetIpPacketInfo(ctx_ _bindings.Context, value bool) (BaseSocketSetIpPacketInfoResult, error)
+ // Get `SOL_IP` -> `IP_PKTINFO`.
+ GetIpPacketInfo(ctx_ _bindings.Context) (BaseSocketGetIpPacketInfoResult, error)
+ // Set `SOL_IP` -> `IP_RECVTOS`.
+ SetIpReceiveTypeOfService(ctx_ _bindings.Context, value bool) (BaseSocketSetIpReceiveTypeOfServiceResult, error)
+ // Get `SOL_IP` -> `IP_RECVTOS`.
+ GetIpReceiveTypeOfService(ctx_ _bindings.Context) (BaseSocketGetIpReceiveTypeOfServiceResult, error)
+ // Set `SOL_IP` -> `IP_MULTICAST_IF`.
+ SetIpMulticastInterface(ctx_ _bindings.Context, iface uint64, address fuchsianet.Ipv4Address) (BaseSocketSetIpMulticastInterfaceResult, error)
+ // Get `SOL_IP` -> `IP_MULTICAST_IF`.
+ GetIpMulticastInterface(ctx_ _bindings.Context) (BaseSocketGetIpMulticastInterfaceResult, error)
+ // Set `SOL_IP` -> `IP_MULTICAST_TTL`.
+ SetIpMulticastTtl(ctx_ _bindings.Context, value OptionalUint8) (BaseSocketSetIpMulticastTtlResult, error)
+ // Get `SOL_IP` -> `IP_MULTICAST_TTL`.
+ GetIpMulticastTtl(ctx_ _bindings.Context) (BaseSocketGetIpMulticastTtlResult, error)
+ // Set `SOL_IP` -> `IP_MULTICAST_LOOP`.
+ SetIpMulticastLoopback(ctx_ _bindings.Context, value bool) (BaseSocketSetIpMulticastLoopbackResult, error)
+ // Get `SOL_IP` -> `IP_MULTICAST_LOOP`.
+ GetIpMulticastLoopback(ctx_ _bindings.Context) (BaseSocketGetIpMulticastLoopbackResult, error)
+ // Set `SOL_IP` -> `IP_ADD_MEMBERSHIP`
+ AddIpMembership(ctx_ _bindings.Context, membership IpMulticastMembership) (BaseSocketAddIpMembershipResult, error)
+ // Set `SOL_IP` -> `IP_DROP_MEMBERSHIP`
+ DropIpMembership(ctx_ _bindings.Context, membership IpMulticastMembership) (BaseSocketDropIpMembershipResult, error)
+ // Set `SOL_IPV6` -> `IPV6_ADD_MEMBERSHIP`.
+ AddIpv6Membership(ctx_ _bindings.Context, membership Ipv6MulticastMembership) (BaseSocketAddIpv6MembershipResult, error)
+ // Set `SOL_IPV6` -> `IPV6_DROP_MEMBERSHIP`.
+ DropIpv6Membership(ctx_ _bindings.Context, membership Ipv6MulticastMembership) (BaseSocketDropIpv6MembershipResult, error)
+ // Set `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
+ SetIpv6MulticastInterface(ctx_ _bindings.Context, value uint64) (BaseSocketSetIpv6MulticastInterfaceResult, error)
+ // Get `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
+ GetIpv6MulticastInterface(ctx_ _bindings.Context) (BaseSocketGetIpv6MulticastInterfaceResult, error)
+ // Set `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
+ SetIpv6MulticastHops(ctx_ _bindings.Context, value OptionalUint8) (BaseSocketSetIpv6MulticastHopsResult, error)
+ // Get `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
+ GetIpv6MulticastHops(ctx_ _bindings.Context) (BaseSocketGetIpv6MulticastHopsResult, error)
+ // Set `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
+ SetIpv6MulticastLoopback(ctx_ _bindings.Context, value bool) (BaseSocketSetIpv6MulticastLoopbackResult, error)
+ // Get `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
+ GetIpv6MulticastLoopback(ctx_ _bindings.Context) (BaseSocketGetIpv6MulticastLoopbackResult, error)
+ // Set `SOL_IPV6` -> `IPV6_V6ONLY`.
+ SetIpv6Only(ctx_ _bindings.Context, value bool) (BaseSocketSetIpv6OnlyResult, error)
+ // Get `SOL_IPV6` -> `IPV6_V6ONLY`.
+ GetIpv6Only(ctx_ _bindings.Context) (BaseSocketGetIpv6OnlyResult, error)
+ // Set `SOL_IPV6` -> `IPV6_RECVTCLASS`.
+ SetIpv6ReceiveTrafficClass(ctx_ _bindings.Context, value bool) (BaseSocketSetIpv6ReceiveTrafficClassResult, error)
+ // Get `SOL_IPV6` -> `IPV6_RECVTCLASS`.
+ GetIpv6ReceiveTrafficClass(ctx_ _bindings.Context) (BaseSocketGetIpv6ReceiveTrafficClassResult, error)
+ // Set `SOL_IPV6` -> `IPV6_TCLASS`
+ SetIpv6TrafficClass(ctx_ _bindings.Context, value OptionalUint8) (BaseSocketSetIpv6TrafficClassResult, error)
+ // Get `SOL_IPV6` -> `IPV6_TCLASS`.
+ GetIpv6TrafficClass(ctx_ _bindings.Context) (BaseSocketGetIpv6TrafficClassResult, error)
+}
+
+type BaseSocketWithCtxTransitionalBase struct{}
+
+func (_ *BaseSocketWithCtxTransitionalBase) NodeGetFlags(ctx_ _bindings.Context) (int32, uint32, error) {
+ panic("Not Implemented")
+}
+func (_ *BaseSocketWithCtxTransitionalBase) NodeSetFlags(ctx_ _bindings.Context, flags uint32) (int32, error) {
+ panic("Not Implemented")
+}
+
+type BaseSocketWithCtxInterfaceRequest _bindings.InterfaceRequest
+
+func NewBaseSocketWithCtxInterfaceRequest() (BaseSocketWithCtxInterfaceRequest, *BaseSocketWithCtxInterface, error) {
+ req, cli, err := _bindings.NewInterfaceRequest()
+ return BaseSocketWithCtxInterfaceRequest(req), (*BaseSocketWithCtxInterface)(cli), err
+}
+
+type BaseSocketWithCtxStub struct {
+ Impl BaseSocketWithCtx
+}
+
+func (s_ *BaseSocketWithCtxStub) Dispatch(args_ _bindings.DispatchArgs) (_bindings.Message, bool, error) {
+ switch args_.Ordinal {
+ case BaseSocketCloneOrdinal:
+ in_ := baseSocketWithCtxCloneRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ err_ := s_.Impl.Clone(args_.Ctx, in_.Flags, in_.Object)
+ return nil, false, err_
+ case BaseSocketCloseOrdinal:
+ s, err_ := s_.Impl.Close(args_.Ctx)
+ out_ := baseSocketWithCtxCloseResponse{}
+ out_.S = s
+ return &out_, true, err_
+ case BaseSocketDescribeOrdinal:
+ info, err_ := s_.Impl.Describe(args_.Ctx)
+ out_ := baseSocketWithCtxDescribeResponse{}
+ out_.Info = info
+ return &out_, true, err_
+ case BaseSocketSyncOrdinal:
+ s, err_ := s_.Impl.Sync(args_.Ctx)
+ out_ := baseSocketWithCtxSyncResponse{}
+ out_.S = s
+ return &out_, true, err_
+ case BaseSocketGetAttrOrdinal:
+ s, attributes, err_ := s_.Impl.GetAttr(args_.Ctx)
+ out_ := baseSocketWithCtxGetAttrResponse{}
+ out_.S = s
+ out_.Attributes = attributes
+ return &out_, true, err_
+ case BaseSocketSetAttrOrdinal:
+ in_ := baseSocketWithCtxSetAttrRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ s, err_ := s_.Impl.SetAttr(args_.Ctx, in_.Flags, in_.Attributes)
+ out_ := baseSocketWithCtxSetAttrResponse{}
+ out_.S = s
+ return &out_, true, err_
+ case BaseSocketNodeGetFlagsOrdinal:
+ s, flags, err_ := s_.Impl.NodeGetFlags(args_.Ctx)
+ out_ := baseSocketWithCtxNodeGetFlagsResponse{}
+ out_.S = s
+ out_.Flags = flags
+ return &out_, true, err_
+ case BaseSocketNodeSetFlagsOrdinal:
+ in_ := baseSocketWithCtxNodeSetFlagsRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ s, err_ := s_.Impl.NodeSetFlags(args_.Ctx, in_.Flags)
+ out_ := baseSocketWithCtxNodeSetFlagsResponse{}
+ out_.S = s
+ return &out_, true, err_
+ case BaseSocketBindOrdinal:
+ in_ := baseSocketWithCtxBindRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.Bind(args_.Ctx, in_.Addr)
+ out_ := baseSocketWithCtxBindResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketConnectOrdinal:
+ in_ := baseSocketWithCtxConnectRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.Connect(args_.Ctx, in_.Addr)
+ out_ := baseSocketWithCtxConnectResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketDisconnectOrdinal:
+ result, err_ := s_.Impl.Disconnect(args_.Ctx)
+ out_ := baseSocketWithCtxDisconnectResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketGetSockNameOrdinal:
+ result, err_ := s_.Impl.GetSockName(args_.Ctx)
+ out_ := baseSocketWithCtxGetSockNameResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketGetPeerNameOrdinal:
+ result, err_ := s_.Impl.GetPeerName(args_.Ctx)
+ out_ := baseSocketWithCtxGetPeerNameResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketShutdown2Ordinal:
+ in_ := baseSocketWithCtxShutdown2Request{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.Shutdown2(args_.Ctx, in_.Mode)
+ out_ := baseSocketWithCtxShutdown2Response{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketSetReuseAddressOrdinal:
+ in_ := baseSocketWithCtxSetReuseAddressRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetReuseAddress(args_.Ctx, in_.Value)
+ out_ := baseSocketWithCtxSetReuseAddressResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketGetReuseAddressOrdinal:
+ result, err_ := s_.Impl.GetReuseAddress(args_.Ctx)
+ out_ := baseSocketWithCtxGetReuseAddressResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketGetErrorOrdinal:
+ result, err_ := s_.Impl.GetError(args_.Ctx)
+ out_ := baseSocketWithCtxGetErrorResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketSetBroadcastOrdinal:
+ in_ := baseSocketWithCtxSetBroadcastRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetBroadcast(args_.Ctx, in_.Value)
+ out_ := baseSocketWithCtxSetBroadcastResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketGetBroadcastOrdinal:
+ result, err_ := s_.Impl.GetBroadcast(args_.Ctx)
+ out_ := baseSocketWithCtxGetBroadcastResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketSetSendBufferOrdinal:
+ in_ := baseSocketWithCtxSetSendBufferRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetSendBuffer(args_.Ctx, in_.ValueBytes)
+ out_ := baseSocketWithCtxSetSendBufferResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketGetSendBufferOrdinal:
+ result, err_ := s_.Impl.GetSendBuffer(args_.Ctx)
+ out_ := baseSocketWithCtxGetSendBufferResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketSetReceiveBufferOrdinal:
+ in_ := baseSocketWithCtxSetReceiveBufferRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetReceiveBuffer(args_.Ctx, in_.ValueBytes)
+ out_ := baseSocketWithCtxSetReceiveBufferResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketGetReceiveBufferOrdinal:
+ result, err_ := s_.Impl.GetReceiveBuffer(args_.Ctx)
+ out_ := baseSocketWithCtxGetReceiveBufferResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketSetKeepAliveOrdinal:
+ in_ := baseSocketWithCtxSetKeepAliveRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetKeepAlive(args_.Ctx, in_.Value)
+ out_ := baseSocketWithCtxSetKeepAliveResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketGetKeepAliveOrdinal:
+ result, err_ := s_.Impl.GetKeepAlive(args_.Ctx)
+ out_ := baseSocketWithCtxGetKeepAliveResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketSetOutOfBandInlineOrdinal:
+ in_ := baseSocketWithCtxSetOutOfBandInlineRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetOutOfBandInline(args_.Ctx, in_.Value)
+ out_ := baseSocketWithCtxSetOutOfBandInlineResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketGetOutOfBandInlineOrdinal:
+ result, err_ := s_.Impl.GetOutOfBandInline(args_.Ctx)
+ out_ := baseSocketWithCtxGetOutOfBandInlineResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketSetNoCheckOrdinal:
+ in_ := baseSocketWithCtxSetNoCheckRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetNoCheck(args_.Ctx, in_.Value)
+ out_ := baseSocketWithCtxSetNoCheckResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketGetNoCheckOrdinal:
+ result, err_ := s_.Impl.GetNoCheck(args_.Ctx)
+ out_ := baseSocketWithCtxGetNoCheckResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketSetLingerOrdinal:
+ in_ := baseSocketWithCtxSetLingerRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetLinger(args_.Ctx, in_.Linger, in_.LengthSecs)
+ out_ := baseSocketWithCtxSetLingerResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketGetLingerOrdinal:
+ result, err_ := s_.Impl.GetLinger(args_.Ctx)
+ out_ := baseSocketWithCtxGetLingerResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketSetReusePortOrdinal:
+ in_ := baseSocketWithCtxSetReusePortRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetReusePort(args_.Ctx, in_.Value)
+ out_ := baseSocketWithCtxSetReusePortResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketGetReusePortOrdinal:
+ result, err_ := s_.Impl.GetReusePort(args_.Ctx)
+ out_ := baseSocketWithCtxGetReusePortResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketGetAcceptConnOrdinal:
+ result, err_ := s_.Impl.GetAcceptConn(args_.Ctx)
+ out_ := baseSocketWithCtxGetAcceptConnResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketSetBindToDeviceOrdinal:
+ in_ := baseSocketWithCtxSetBindToDeviceRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetBindToDevice(args_.Ctx, in_.Value)
+ out_ := baseSocketWithCtxSetBindToDeviceResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketGetBindToDeviceOrdinal:
+ result, err_ := s_.Impl.GetBindToDevice(args_.Ctx)
+ out_ := baseSocketWithCtxGetBindToDeviceResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketSetTimestampOrdinal:
+ in_ := baseSocketWithCtxSetTimestampRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetTimestamp(args_.Ctx, in_.Value)
+ out_ := baseSocketWithCtxSetTimestampResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketGetTimestampOrdinal:
+ result, err_ := s_.Impl.GetTimestamp(args_.Ctx)
+ out_ := baseSocketWithCtxGetTimestampResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketSetIpTypeOfServiceOrdinal:
+ in_ := baseSocketWithCtxSetIpTypeOfServiceRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetIpTypeOfService(args_.Ctx, in_.Value)
+ out_ := baseSocketWithCtxSetIpTypeOfServiceResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketGetIpTypeOfServiceOrdinal:
+ result, err_ := s_.Impl.GetIpTypeOfService(args_.Ctx)
+ out_ := baseSocketWithCtxGetIpTypeOfServiceResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketSetIpTtlOrdinal:
+ in_ := baseSocketWithCtxSetIpTtlRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetIpTtl(args_.Ctx, in_.Value)
+ out_ := baseSocketWithCtxSetIpTtlResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketGetIpTtlOrdinal:
+ result, err_ := s_.Impl.GetIpTtl(args_.Ctx)
+ out_ := baseSocketWithCtxGetIpTtlResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketSetIpPacketInfoOrdinal:
+ in_ := baseSocketWithCtxSetIpPacketInfoRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetIpPacketInfo(args_.Ctx, in_.Value)
+ out_ := baseSocketWithCtxSetIpPacketInfoResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketGetIpPacketInfoOrdinal:
+ result, err_ := s_.Impl.GetIpPacketInfo(args_.Ctx)
+ out_ := baseSocketWithCtxGetIpPacketInfoResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketSetIpReceiveTypeOfServiceOrdinal:
+ in_ := baseSocketWithCtxSetIpReceiveTypeOfServiceRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetIpReceiveTypeOfService(args_.Ctx, in_.Value)
+ out_ := baseSocketWithCtxSetIpReceiveTypeOfServiceResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketGetIpReceiveTypeOfServiceOrdinal:
+ result, err_ := s_.Impl.GetIpReceiveTypeOfService(args_.Ctx)
+ out_ := baseSocketWithCtxGetIpReceiveTypeOfServiceResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketSetIpMulticastInterfaceOrdinal:
+ in_ := baseSocketWithCtxSetIpMulticastInterfaceRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetIpMulticastInterface(args_.Ctx, in_.Iface, in_.Address)
+ out_ := baseSocketWithCtxSetIpMulticastInterfaceResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketGetIpMulticastInterfaceOrdinal:
+ result, err_ := s_.Impl.GetIpMulticastInterface(args_.Ctx)
+ out_ := baseSocketWithCtxGetIpMulticastInterfaceResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketSetIpMulticastTtlOrdinal:
+ in_ := baseSocketWithCtxSetIpMulticastTtlRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetIpMulticastTtl(args_.Ctx, in_.Value)
+ out_ := baseSocketWithCtxSetIpMulticastTtlResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketGetIpMulticastTtlOrdinal:
+ result, err_ := s_.Impl.GetIpMulticastTtl(args_.Ctx)
+ out_ := baseSocketWithCtxGetIpMulticastTtlResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketSetIpMulticastLoopbackOrdinal:
+ in_ := baseSocketWithCtxSetIpMulticastLoopbackRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetIpMulticastLoopback(args_.Ctx, in_.Value)
+ out_ := baseSocketWithCtxSetIpMulticastLoopbackResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketGetIpMulticastLoopbackOrdinal:
+ result, err_ := s_.Impl.GetIpMulticastLoopback(args_.Ctx)
+ out_ := baseSocketWithCtxGetIpMulticastLoopbackResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketAddIpMembershipOrdinal:
+ in_ := baseSocketWithCtxAddIpMembershipRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.AddIpMembership(args_.Ctx, in_.Membership)
+ out_ := baseSocketWithCtxAddIpMembershipResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketDropIpMembershipOrdinal:
+ in_ := baseSocketWithCtxDropIpMembershipRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.DropIpMembership(args_.Ctx, in_.Membership)
+ out_ := baseSocketWithCtxDropIpMembershipResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketAddIpv6MembershipOrdinal:
+ in_ := baseSocketWithCtxAddIpv6MembershipRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.AddIpv6Membership(args_.Ctx, in_.Membership)
+ out_ := baseSocketWithCtxAddIpv6MembershipResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketDropIpv6MembershipOrdinal:
+ in_ := baseSocketWithCtxDropIpv6MembershipRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.DropIpv6Membership(args_.Ctx, in_.Membership)
+ out_ := baseSocketWithCtxDropIpv6MembershipResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketSetIpv6MulticastInterfaceOrdinal:
+ in_ := baseSocketWithCtxSetIpv6MulticastInterfaceRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetIpv6MulticastInterface(args_.Ctx, in_.Value)
+ out_ := baseSocketWithCtxSetIpv6MulticastInterfaceResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketGetIpv6MulticastInterfaceOrdinal:
+ result, err_ := s_.Impl.GetIpv6MulticastInterface(args_.Ctx)
+ out_ := baseSocketWithCtxGetIpv6MulticastInterfaceResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketSetIpv6MulticastHopsOrdinal:
+ in_ := baseSocketWithCtxSetIpv6MulticastHopsRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetIpv6MulticastHops(args_.Ctx, in_.Value)
+ out_ := baseSocketWithCtxSetIpv6MulticastHopsResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketGetIpv6MulticastHopsOrdinal:
+ result, err_ := s_.Impl.GetIpv6MulticastHops(args_.Ctx)
+ out_ := baseSocketWithCtxGetIpv6MulticastHopsResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketSetIpv6MulticastLoopbackOrdinal:
+ in_ := baseSocketWithCtxSetIpv6MulticastLoopbackRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetIpv6MulticastLoopback(args_.Ctx, in_.Value)
+ out_ := baseSocketWithCtxSetIpv6MulticastLoopbackResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketGetIpv6MulticastLoopbackOrdinal:
+ result, err_ := s_.Impl.GetIpv6MulticastLoopback(args_.Ctx)
+ out_ := baseSocketWithCtxGetIpv6MulticastLoopbackResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketSetIpv6OnlyOrdinal:
+ in_ := baseSocketWithCtxSetIpv6OnlyRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetIpv6Only(args_.Ctx, in_.Value)
+ out_ := baseSocketWithCtxSetIpv6OnlyResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketGetIpv6OnlyOrdinal:
+ result, err_ := s_.Impl.GetIpv6Only(args_.Ctx)
+ out_ := baseSocketWithCtxGetIpv6OnlyResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketSetIpv6ReceiveTrafficClassOrdinal:
+ in_ := baseSocketWithCtxSetIpv6ReceiveTrafficClassRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetIpv6ReceiveTrafficClass(args_.Ctx, in_.Value)
+ out_ := baseSocketWithCtxSetIpv6ReceiveTrafficClassResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketGetIpv6ReceiveTrafficClassOrdinal:
+ result, err_ := s_.Impl.GetIpv6ReceiveTrafficClass(args_.Ctx)
+ out_ := baseSocketWithCtxGetIpv6ReceiveTrafficClassResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketSetIpv6TrafficClassOrdinal:
+ in_ := baseSocketWithCtxSetIpv6TrafficClassRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetIpv6TrafficClass(args_.Ctx, in_.Value)
+ out_ := baseSocketWithCtxSetIpv6TrafficClassResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case BaseSocketGetIpv6TrafficClassOrdinal:
+ result, err_ := s_.Impl.GetIpv6TrafficClass(args_.Ctx)
+ out_ := baseSocketWithCtxGetIpv6TrafficClassResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ }
+ return nil, false, _bindings.ErrUnknownOrdinal
+}
+
+type BaseSocketEventProxy _bindings.ChannelProxy
+
+func (p *BaseSocketEventProxy) OnOpen(s int32, info *fuchsiaio.NodeInfo) error {
+ event_ := &baseSocketWithCtxOnOpenResponse{
+ S: s,
+ Info: info,
+ }
+ return ((*_bindings.ChannelProxy)(p)).Send(BaseSocketOnOpenOrdinal, event_)
+}
+
+const (
+ DatagramSocketCloneOrdinal uint64 = 0x5a61678f293ce16f
+ DatagramSocketCloseOrdinal uint64 = 0x5309c5bd1c33dc44
+ DatagramSocketDescribeOrdinal uint64 = 0xffcec215078dea0
+ DatagramSocketOnOpenOrdinal uint64 = 0x7fc7bbb1dbfd1972
+ DatagramSocketSyncOrdinal uint64 = 0x189d88326c18b519
+ DatagramSocketGetAttrOrdinal uint64 = 0x78985e216314dafd
+ DatagramSocketSetAttrOrdinal uint64 = 0x4186c0f40d938f46
+ DatagramSocketNodeGetFlagsOrdinal uint64 = 0x5b88fffb8eda3aa1
+ DatagramSocketNodeSetFlagsOrdinal uint64 = 0x5295b76c71fde733
+ DatagramSocketBindOrdinal uint64 = 0xf8457e6b05e15bc
+ DatagramSocketConnectOrdinal uint64 = 0x17abeee0b9843bb1
+ DatagramSocketDisconnectOrdinal uint64 = 0x20eaedba2e0f70a4
+ DatagramSocketGetSockNameOrdinal uint64 = 0x41a618ef19a91f9d
+ DatagramSocketGetPeerNameOrdinal uint64 = 0x4009d08a4beb5e95
+ DatagramSocketShutdown2Ordinal uint64 = 0x57d3458f9754763b
+ DatagramSocketSetReuseAddressOrdinal uint64 = 0x1fd74ee8b9a4a876
+ DatagramSocketGetReuseAddressOrdinal uint64 = 0x67b7206b8d1bc0a5
+ DatagramSocketGetErrorOrdinal uint64 = 0x5aad39b33e5f6ebb
+ DatagramSocketSetBroadcastOrdinal uint64 = 0x6023e081ce3cd947
+ DatagramSocketGetBroadcastOrdinal uint64 = 0x68796fc556f9780d
+ DatagramSocketSetSendBufferOrdinal uint64 = 0x756eac32d73a7a70
+ DatagramSocketGetSendBufferOrdinal uint64 = 0x78a52fd9c7b2410b
+ DatagramSocketSetReceiveBufferOrdinal uint64 = 0x6b0cf2f1919c7001
+ DatagramSocketGetReceiveBufferOrdinal uint64 = 0x14c1a4b64f709e5c
+ DatagramSocketSetKeepAliveOrdinal uint64 = 0x572df8f0b920d2c7
+ DatagramSocketGetKeepAliveOrdinal uint64 = 0x2dd29d3215f2c9d2
+ DatagramSocketSetOutOfBandInlineOrdinal uint64 = 0x3ecb49968bee439
+ DatagramSocketGetOutOfBandInlineOrdinal uint64 = 0x348c1ab3aeca1745
+ DatagramSocketSetNoCheckOrdinal uint64 = 0x6bbf00c53a4c78c2
+ DatagramSocketGetNoCheckOrdinal uint64 = 0x2cd4249286417694
+ DatagramSocketSetLingerOrdinal uint64 = 0x45386351246e998e
+ DatagramSocketGetLingerOrdinal uint64 = 0x48eb20fc5ccb0e45
+ DatagramSocketSetReusePortOrdinal uint64 = 0x24dd3e5cb36d9ccb
+ DatagramSocketGetReusePortOrdinal uint64 = 0x7a112c1ab54ff828
+ DatagramSocketGetAcceptConnOrdinal uint64 = 0x67ce6db6c2ec8966
+ DatagramSocketSetBindToDeviceOrdinal uint64 = 0x2118b483f28aafc4
+ DatagramSocketGetBindToDeviceOrdinal uint64 = 0x1ab1fbf0ef7906c8
+ DatagramSocketSetTimestampOrdinal uint64 = 0x285d6516c263d839
+ DatagramSocketGetTimestampOrdinal uint64 = 0x49f2fffbbcc2bd27
+ DatagramSocketSetIpTypeOfServiceOrdinal uint64 = 0x559849ba9574834a
+ DatagramSocketGetIpTypeOfServiceOrdinal uint64 = 0x2740d6bfa379deb1
+ DatagramSocketSetIpTtlOrdinal uint64 = 0x67395f7176d7918e
+ DatagramSocketGetIpTtlOrdinal uint64 = 0x789d5ddfe26b97ac
+ DatagramSocketSetIpPacketInfoOrdinal uint64 = 0x3e02030a2fd13c03
+ DatagramSocketGetIpPacketInfoOrdinal uint64 = 0x176f008d5a0dab15
+ DatagramSocketSetIpReceiveTypeOfServiceOrdinal uint64 = 0x17148064e563dde5
+ DatagramSocketGetIpReceiveTypeOfServiceOrdinal uint64 = 0x26cc26653b0fa460
+ DatagramSocketSetIpMulticastInterfaceOrdinal uint64 = 0x6566fdb7061bbcf8
+ DatagramSocketGetIpMulticastInterfaceOrdinal uint64 = 0x44415752b16ff024
+ DatagramSocketSetIpMulticastTtlOrdinal uint64 = 0x7d1a477776ba00d3
+ DatagramSocketGetIpMulticastTtlOrdinal uint64 = 0x17cbd4bd9246fc40
+ DatagramSocketSetIpMulticastLoopbackOrdinal uint64 = 0x2a56b32f8f02369
+ DatagramSocketGetIpMulticastLoopbackOrdinal uint64 = 0x27b16d7883c08ca8
+ DatagramSocketAddIpMembershipOrdinal uint64 = 0x39a4eda6580147a0
+ DatagramSocketDropIpMembershipOrdinal uint64 = 0x6d16e8fbaf496254
+ DatagramSocketAddIpv6MembershipOrdinal uint64 = 0x231556bfce3194c1
+ DatagramSocketDropIpv6MembershipOrdinal uint64 = 0x629c12db293444c0
+ DatagramSocketSetIpv6MulticastInterfaceOrdinal uint64 = 0x5d2a568e67b54234
+ DatagramSocketGetIpv6MulticastInterfaceOrdinal uint64 = 0x7b8f38fe354f32bc
+ DatagramSocketSetIpv6MulticastHopsOrdinal uint64 = 0x2b2167d12c8a495d
+ DatagramSocketGetIpv6MulticastHopsOrdinal uint64 = 0x51a3c8257b1a2745
+ DatagramSocketSetIpv6MulticastLoopbackOrdinal uint64 = 0x97706949c4163b7
+ DatagramSocketGetIpv6MulticastLoopbackOrdinal uint64 = 0x78d6544e48794935
+ DatagramSocketSetIpv6OnlyOrdinal uint64 = 0x1d87ce5c02d8bcb2
+ DatagramSocketGetIpv6OnlyOrdinal uint64 = 0x25d6755dbe2e9c7e
+ DatagramSocketSetIpv6ReceiveTrafficClassOrdinal uint64 = 0x53b93b71c9431fe4
+ DatagramSocketGetIpv6ReceiveTrafficClassOrdinal uint64 = 0x1c8433af11cd4596
+ DatagramSocketSetIpv6TrafficClassOrdinal uint64 = 0x32da0ca485fad782
+ DatagramSocketGetIpv6TrafficClassOrdinal uint64 = 0x6ca5b9166c8d3cba
+ DatagramSocketShutdownOrdinal uint64 = 0x3c6058976bced940
+ DatagramSocketRecvMsgOrdinal uint64 = 0x715341bb02f02b7a
+ DatagramSocketSendMsgOrdinal uint64 = 0x359b626d62a7f17b
+ DatagramSocketGetInfoOrdinal uint64 = 0x6e3122a6b1830c0f
+)
+
+type DatagramSocketWithCtxInterface _bindings.ChannelProxy
+
+// Create another connection to the same remote object.
+//
+// `flags` may be any of:
+//
+// - `OPEN_RIGHT_*`
+// - `OPEN_FLAG_APPEND`
+// - `OPEN_FLAG_NO_REMOTE`
+// - `OPEN_FLAG_DESCRIBE`
+// - `CLONE_FLAG_SAME_RIGHTS`
+//
+// All other flags are ignored.
+//
+// The `OPEN_RIGHT_*` bits in `flags` request corresponding rights over the resulting
+// cloned object.
+// The cloned object must have rights less than or equal to the original object, otherwise
+// returns `ZX_ERR_ACCESS_DENIED`.
+// Alternatively, pass `CLONE_FLAG_SAME_RIGHTS` to inherit the rights on the source connection.
+// It is invalid to pass any of the `OPEN_RIGHT_*` flags together with
+// `CLONE_FLAG_SAME_RIGHTS`.
+func (p *DatagramSocketWithCtxInterface) Clone(ctx_ _bindings.Context, flags uint32, object fuchsiaio.NodeWithCtxInterfaceRequest) error {
+ req_ := &datagramSocketWithCtxCloneRequest{
+ Flags: flags,
+ Object: object,
+ }
+ err_ := ((*_bindings.ChannelProxy)(p)).Send(DatagramSocketCloneOrdinal, req_)
+ return err_
+}
+
+// Terminates connection with object.
+//
+// This method does not require any rights.
+func (p *DatagramSocketWithCtxInterface) Close(ctx_ _bindings.Context) (int32, error) {
+ var req_ _bindings.Message
+ resp_ := &datagramSocketWithCtxCloseResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketCloseOrdinal, req_, resp_)
+ return resp_.S, err_
+}
+
+// Returns extra information about the type of the object.
+// If the `Describe` operation fails, the connection is closed.
+//
+// This method does not require any rights.
+func (p *DatagramSocketWithCtxInterface) Describe(ctx_ _bindings.Context) (fuchsiaio.NodeInfo, error) {
+ var req_ _bindings.Message
+ resp_ := &datagramSocketWithCtxDescribeResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketDescribeOrdinal, req_, resp_)
+ return resp_.Info, err_
+}
+
+// An event produced eagerly by a FIDL server if requested by `OPEN_FLAG_DESCRIBE`.
+//
+// Indicates the success or failure of the open operation, and optionally describes the
+// object. If the status is `ZX_OK`, `info` contains descriptive information about the object
+// (the same as would be returned by `Describe`).
+func (p *DatagramSocketWithCtxInterface) ExpectOnOpen(ctx_ _bindings.Context) (int32, *fuchsiaio.NodeInfo, error) {
+ resp_ := &datagramSocketWithCtxOnOpenResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Recv(DatagramSocketOnOpenOrdinal, resp_)
+ return resp_.S, resp_.Info, err_
+}
+
+// Synchronizes updates to the node to the underlying media, if it exists.
+//
+// This method does not require any rights.
+func (p *DatagramSocketWithCtxInterface) Sync(ctx_ _bindings.Context) (int32, error) {
+ var req_ _bindings.Message
+ resp_ := &datagramSocketWithCtxSyncResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketSyncOrdinal, req_, resp_)
+ return resp_.S, err_
+}
+
+// Acquires information about the node.
+//
+// This method does not require any rights.
+func (p *DatagramSocketWithCtxInterface) GetAttr(ctx_ _bindings.Context) (int32, fuchsiaio.NodeAttributes, error) {
+ var req_ _bindings.Message
+ resp_ := &datagramSocketWithCtxGetAttrResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketGetAttrOrdinal, req_, resp_)
+ return resp_.S, resp_.Attributes, err_
+}
+
+// Updates information about the node.
+// `flags` may be any of `NODE_ATTRIBUTE_FLAG_*`.
+//
+// This method requires following rights: `OPEN_RIGHT_WRITABLE`, otherwise returns
+// `ZX_ERR_BAD_HANDLE`.
+func (p *DatagramSocketWithCtxInterface) SetAttr(ctx_ _bindings.Context, flags uint32, attributes fuchsiaio.NodeAttributes) (int32, error) {
+ req_ := &datagramSocketWithCtxSetAttrRequest{
+ Flags: flags,
+ Attributes: attributes,
+ }
+ resp_ := &datagramSocketWithCtxSetAttrResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketSetAttrOrdinal, req_, resp_)
+ return resp_.S, err_
+}
+
+// Acquires the `Directory.Open` rights and flags used to access this file.
+//
+// This method does not require any rights.
+// This method has the same functionality as GetFlags for File and is
+// meant as an in-progress replacement.
+func (p *DatagramSocketWithCtxInterface) NodeGetFlags(ctx_ _bindings.Context) (int32, uint32, error) {
+ var req_ _bindings.Message
+ resp_ := &datagramSocketWithCtxNodeGetFlagsResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketNodeGetFlagsOrdinal, req_, resp_)
+ return resp_.S, resp_.Flags, err_
+}
+
+// Changes the `Directory.Open` flags used to access the file.
+// Supported flags which can be turned on / off:
+// - `OPEN_FLAG_APPEND`
+//
+// This method does not require any rights.
+// This method has the same functionality as SetFlags for File and is
+// meant as an in-progress replacement.
+func (p *DatagramSocketWithCtxInterface) NodeSetFlags(ctx_ _bindings.Context, flags uint32) (int32, error) {
+ req_ := &datagramSocketWithCtxNodeSetFlagsRequest{
+ Flags: flags,
+ }
+ resp_ := &datagramSocketWithCtxNodeSetFlagsResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketNodeSetFlagsOrdinal, req_, resp_)
+ return resp_.S, err_
+}
+
+// Sets the local address used for the socket.
+func (p *DatagramSocketWithCtxInterface) Bind(ctx_ _bindings.Context, addr fuchsianet.SocketAddress) (BaseSocketBindResult, error) {
+ req_ := &datagramSocketWithCtxBindRequest{
+ Addr: addr,
+ }
+ resp_ := &datagramSocketWithCtxBindResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketBindOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Initiates a connection to a remote address.
+func (p *DatagramSocketWithCtxInterface) Connect(ctx_ _bindings.Context, addr fuchsianet.SocketAddress) (BaseSocketConnectResult, error) {
+ req_ := &datagramSocketWithCtxConnectRequest{
+ Addr: addr,
+ }
+ resp_ := &datagramSocketWithCtxConnectResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketConnectOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Clears connection information from this socket.
+func (p *DatagramSocketWithCtxInterface) Disconnect(ctx_ _bindings.Context) (BaseSocketDisconnectResult, error) {
+ var req_ _bindings.Message
+ resp_ := &datagramSocketWithCtxDisconnectResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketDisconnectOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Retrieves the local socket address.
+func (p *DatagramSocketWithCtxInterface) GetSockName(ctx_ _bindings.Context) (BaseSocketGetSockNameResult, error) {
+ var req_ _bindings.Message
+ resp_ := &datagramSocketWithCtxGetSockNameResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketGetSockNameOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Retrieves the remote socket address.
+func (p *DatagramSocketWithCtxInterface) GetPeerName(ctx_ _bindings.Context) (BaseSocketGetPeerNameResult, error) {
+ var req_ _bindings.Message
+ resp_ := &datagramSocketWithCtxGetPeerNameResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketGetPeerNameOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Shuts down part of the socket.
+func (p *DatagramSocketWithCtxInterface) Shutdown2(ctx_ _bindings.Context, mode ShutdownMode) (BaseSocketShutdown2Result, error) {
+ req_ := &datagramSocketWithCtxShutdown2Request{
+ Mode: mode,
+ }
+ resp_ := &datagramSocketWithCtxShutdown2Response{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketShutdown2Ordinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_SOCKET` -> `SO_REUSEADDR`.
+func (p *DatagramSocketWithCtxInterface) SetReuseAddress(ctx_ _bindings.Context, value bool) (BaseSocketSetReuseAddressResult, error) {
+ req_ := &datagramSocketWithCtxSetReuseAddressRequest{
+ Value: value,
+ }
+ resp_ := &datagramSocketWithCtxSetReuseAddressResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketSetReuseAddressOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_SOCKET` -> `SO_REUSEADDR`.
+func (p *DatagramSocketWithCtxInterface) GetReuseAddress(ctx_ _bindings.Context) (BaseSocketGetReuseAddressResult, error) {
+ var req_ _bindings.Message
+ resp_ := &datagramSocketWithCtxGetReuseAddressResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketGetReuseAddressOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_SOCKET` -> `SO_ERROR`.
+// Returns the last error if there is an error set on the socket.
+func (p *DatagramSocketWithCtxInterface) GetError(ctx_ _bindings.Context) (BaseSocketGetErrorResult, error) {
+ var req_ _bindings.Message
+ resp_ := &datagramSocketWithCtxGetErrorResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketGetErrorOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_SOCKET` -> `SO_BROADCAST`.
+func (p *DatagramSocketWithCtxInterface) SetBroadcast(ctx_ _bindings.Context, value bool) (BaseSocketSetBroadcastResult, error) {
+ req_ := &datagramSocketWithCtxSetBroadcastRequest{
+ Value: value,
+ }
+ resp_ := &datagramSocketWithCtxSetBroadcastResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketSetBroadcastOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_SOCKET` -> `SO_BROADCAST`.
+func (p *DatagramSocketWithCtxInterface) GetBroadcast(ctx_ _bindings.Context) (BaseSocketGetBroadcastResult, error) {
+ var req_ _bindings.Message
+ resp_ := &datagramSocketWithCtxGetBroadcastResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketGetBroadcastOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_SOCKET` -> `SO_SNDBUF`.
+func (p *DatagramSocketWithCtxInterface) SetSendBuffer(ctx_ _bindings.Context, valueBytes uint64) (BaseSocketSetSendBufferResult, error) {
+ req_ := &datagramSocketWithCtxSetSendBufferRequest{
+ ValueBytes: valueBytes,
+ }
+ resp_ := &datagramSocketWithCtxSetSendBufferResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketSetSendBufferOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_SOCKET` -> `SO_SNDBUF`.
+func (p *DatagramSocketWithCtxInterface) GetSendBuffer(ctx_ _bindings.Context) (BaseSocketGetSendBufferResult, error) {
+ var req_ _bindings.Message
+ resp_ := &datagramSocketWithCtxGetSendBufferResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketGetSendBufferOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_SOCKET` -> `SO_RCVBUF`.
+func (p *DatagramSocketWithCtxInterface) SetReceiveBuffer(ctx_ _bindings.Context, valueBytes uint64) (BaseSocketSetReceiveBufferResult, error) {
+ req_ := &datagramSocketWithCtxSetReceiveBufferRequest{
+ ValueBytes: valueBytes,
+ }
+ resp_ := &datagramSocketWithCtxSetReceiveBufferResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketSetReceiveBufferOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_SOCKET` -> `SO_RCVBUF`.
+func (p *DatagramSocketWithCtxInterface) GetReceiveBuffer(ctx_ _bindings.Context) (BaseSocketGetReceiveBufferResult, error) {
+ var req_ _bindings.Message
+ resp_ := &datagramSocketWithCtxGetReceiveBufferResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketGetReceiveBufferOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_SOCKET` -> `SO_KEEPALIVE`.
+func (p *DatagramSocketWithCtxInterface) SetKeepAlive(ctx_ _bindings.Context, value bool) (BaseSocketSetKeepAliveResult, error) {
+ req_ := &datagramSocketWithCtxSetKeepAliveRequest{
+ Value: value,
+ }
+ resp_ := &datagramSocketWithCtxSetKeepAliveResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketSetKeepAliveOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_SOCKET` -> `SO_KEEPALIVE`.
+func (p *DatagramSocketWithCtxInterface) GetKeepAlive(ctx_ _bindings.Context) (BaseSocketGetKeepAliveResult, error) {
+ var req_ _bindings.Message
+ resp_ := &datagramSocketWithCtxGetKeepAliveResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketGetKeepAliveOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_SOCKET` -> `SO_OOBINLINE`.
+func (p *DatagramSocketWithCtxInterface) SetOutOfBandInline(ctx_ _bindings.Context, value bool) (BaseSocketSetOutOfBandInlineResult, error) {
+ req_ := &datagramSocketWithCtxSetOutOfBandInlineRequest{
+ Value: value,
+ }
+ resp_ := &datagramSocketWithCtxSetOutOfBandInlineResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketSetOutOfBandInlineOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_SOCKET` -> `SO_OOBINLINE`.
+func (p *DatagramSocketWithCtxInterface) GetOutOfBandInline(ctx_ _bindings.Context) (BaseSocketGetOutOfBandInlineResult, error) {
+ var req_ _bindings.Message
+ resp_ := &datagramSocketWithCtxGetOutOfBandInlineResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketGetOutOfBandInlineOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_SOCKET` -> `SO_NO_CHECK`.
+func (p *DatagramSocketWithCtxInterface) SetNoCheck(ctx_ _bindings.Context, value bool) (BaseSocketSetNoCheckResult, error) {
+ req_ := &datagramSocketWithCtxSetNoCheckRequest{
+ Value: value,
+ }
+ resp_ := &datagramSocketWithCtxSetNoCheckResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketSetNoCheckOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_SOCKET` -> `SO_NO_CHECK`.
+func (p *DatagramSocketWithCtxInterface) GetNoCheck(ctx_ _bindings.Context) (BaseSocketGetNoCheckResult, error) {
+ var req_ _bindings.Message
+ resp_ := &datagramSocketWithCtxGetNoCheckResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketGetNoCheckOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_SOCKET` -> `SO_LINGER`.
+func (p *DatagramSocketWithCtxInterface) SetLinger(ctx_ _bindings.Context, linger bool, lengthSecs uint32) (BaseSocketSetLingerResult, error) {
+ req_ := &datagramSocketWithCtxSetLingerRequest{
+ Linger: linger,
+ LengthSecs: lengthSecs,
+ }
+ resp_ := &datagramSocketWithCtxSetLingerResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketSetLingerOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_SOCKET` -> `SO_LINGER`.
+func (p *DatagramSocketWithCtxInterface) GetLinger(ctx_ _bindings.Context) (BaseSocketGetLingerResult, error) {
+ var req_ _bindings.Message
+ resp_ := &datagramSocketWithCtxGetLingerResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketGetLingerOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_SOCKET` -> `SO_REUSEPORT`.
+func (p *DatagramSocketWithCtxInterface) SetReusePort(ctx_ _bindings.Context, value bool) (BaseSocketSetReusePortResult, error) {
+ req_ := &datagramSocketWithCtxSetReusePortRequest{
+ Value: value,
+ }
+ resp_ := &datagramSocketWithCtxSetReusePortResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketSetReusePortOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_SOCKET` -> `SO_REUSEPORT`.
+func (p *DatagramSocketWithCtxInterface) GetReusePort(ctx_ _bindings.Context) (BaseSocketGetReusePortResult, error) {
+ var req_ _bindings.Message
+ resp_ := &datagramSocketWithCtxGetReusePortResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketGetReusePortOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_SOCKET` -> `SO_ACCEPTCONN`.
+func (p *DatagramSocketWithCtxInterface) GetAcceptConn(ctx_ _bindings.Context) (BaseSocketGetAcceptConnResult, error) {
+ var req_ _bindings.Message
+ resp_ := &datagramSocketWithCtxGetAcceptConnResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketGetAcceptConnOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_SOCKET` -> `SO_BINDTODEVICE`.
+func (p *DatagramSocketWithCtxInterface) SetBindToDevice(ctx_ _bindings.Context, value string) (BaseSocketSetBindToDeviceResult, error) {
+ req_ := &datagramSocketWithCtxSetBindToDeviceRequest{
+ Value: value,
+ }
+ resp_ := &datagramSocketWithCtxSetBindToDeviceResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketSetBindToDeviceOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_SOCKET` -> `SO_BINDTODEVICE`.
+func (p *DatagramSocketWithCtxInterface) GetBindToDevice(ctx_ _bindings.Context) (BaseSocketGetBindToDeviceResult, error) {
+ var req_ _bindings.Message
+ resp_ := &datagramSocketWithCtxGetBindToDeviceResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketGetBindToDeviceOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_SOCKET` -> `SO_TIMESTAMP`.
+func (p *DatagramSocketWithCtxInterface) SetTimestamp(ctx_ _bindings.Context, value bool) (BaseSocketSetTimestampResult, error) {
+ req_ := &datagramSocketWithCtxSetTimestampRequest{
+ Value: value,
+ }
+ resp_ := &datagramSocketWithCtxSetTimestampResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketSetTimestampOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_SOCKET` -> `SO_TIMESTAMP`.
+func (p *DatagramSocketWithCtxInterface) GetTimestamp(ctx_ _bindings.Context) (BaseSocketGetTimestampResult, error) {
+ var req_ _bindings.Message
+ resp_ := &datagramSocketWithCtxGetTimestampResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketGetTimestampOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IP` -> `IP_TOS`.
+func (p *DatagramSocketWithCtxInterface) SetIpTypeOfService(ctx_ _bindings.Context, value uint8) (BaseSocketSetIpTypeOfServiceResult, error) {
+ req_ := &datagramSocketWithCtxSetIpTypeOfServiceRequest{
+ Value: value,
+ }
+ resp_ := &datagramSocketWithCtxSetIpTypeOfServiceResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketSetIpTypeOfServiceOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_IP` -> `IP_TOS`.
+func (p *DatagramSocketWithCtxInterface) GetIpTypeOfService(ctx_ _bindings.Context) (BaseSocketGetIpTypeOfServiceResult, error) {
+ var req_ _bindings.Message
+ resp_ := &datagramSocketWithCtxGetIpTypeOfServiceResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketGetIpTypeOfServiceOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IP` -> `IP_TTL`.
+func (p *DatagramSocketWithCtxInterface) SetIpTtl(ctx_ _bindings.Context, value OptionalUint8) (BaseSocketSetIpTtlResult, error) {
+ req_ := &datagramSocketWithCtxSetIpTtlRequest{
+ Value: value,
+ }
+ resp_ := &datagramSocketWithCtxSetIpTtlResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketSetIpTtlOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_IP` -> `IP_TTL`.
+func (p *DatagramSocketWithCtxInterface) GetIpTtl(ctx_ _bindings.Context) (BaseSocketGetIpTtlResult, error) {
+ var req_ _bindings.Message
+ resp_ := &datagramSocketWithCtxGetIpTtlResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketGetIpTtlOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IP` -> `IP_PKTINFO`.
+func (p *DatagramSocketWithCtxInterface) SetIpPacketInfo(ctx_ _bindings.Context, value bool) (BaseSocketSetIpPacketInfoResult, error) {
+ req_ := &datagramSocketWithCtxSetIpPacketInfoRequest{
+ Value: value,
+ }
+ resp_ := &datagramSocketWithCtxSetIpPacketInfoResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketSetIpPacketInfoOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_IP` -> `IP_PKTINFO`.
+func (p *DatagramSocketWithCtxInterface) GetIpPacketInfo(ctx_ _bindings.Context) (BaseSocketGetIpPacketInfoResult, error) {
+ var req_ _bindings.Message
+ resp_ := &datagramSocketWithCtxGetIpPacketInfoResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketGetIpPacketInfoOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IP` -> `IP_RECVTOS`.
+func (p *DatagramSocketWithCtxInterface) SetIpReceiveTypeOfService(ctx_ _bindings.Context, value bool) (BaseSocketSetIpReceiveTypeOfServiceResult, error) {
+ req_ := &datagramSocketWithCtxSetIpReceiveTypeOfServiceRequest{
+ Value: value,
+ }
+ resp_ := &datagramSocketWithCtxSetIpReceiveTypeOfServiceResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketSetIpReceiveTypeOfServiceOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_IP` -> `IP_RECVTOS`.
+func (p *DatagramSocketWithCtxInterface) GetIpReceiveTypeOfService(ctx_ _bindings.Context) (BaseSocketGetIpReceiveTypeOfServiceResult, error) {
+ var req_ _bindings.Message
+ resp_ := &datagramSocketWithCtxGetIpReceiveTypeOfServiceResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketGetIpReceiveTypeOfServiceOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IP` -> `IP_MULTICAST_IF`.
+func (p *DatagramSocketWithCtxInterface) SetIpMulticastInterface(ctx_ _bindings.Context, iface uint64, address fuchsianet.Ipv4Address) (BaseSocketSetIpMulticastInterfaceResult, error) {
+ req_ := &datagramSocketWithCtxSetIpMulticastInterfaceRequest{
+ Iface: iface,
+ Address: address,
+ }
+ resp_ := &datagramSocketWithCtxSetIpMulticastInterfaceResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketSetIpMulticastInterfaceOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_IP` -> `IP_MULTICAST_IF`.
+func (p *DatagramSocketWithCtxInterface) GetIpMulticastInterface(ctx_ _bindings.Context) (BaseSocketGetIpMulticastInterfaceResult, error) {
+ var req_ _bindings.Message
+ resp_ := &datagramSocketWithCtxGetIpMulticastInterfaceResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketGetIpMulticastInterfaceOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IP` -> `IP_MULTICAST_TTL`.
+func (p *DatagramSocketWithCtxInterface) SetIpMulticastTtl(ctx_ _bindings.Context, value OptionalUint8) (BaseSocketSetIpMulticastTtlResult, error) {
+ req_ := &datagramSocketWithCtxSetIpMulticastTtlRequest{
+ Value: value,
+ }
+ resp_ := &datagramSocketWithCtxSetIpMulticastTtlResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketSetIpMulticastTtlOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_IP` -> `IP_MULTICAST_TTL`.
+func (p *DatagramSocketWithCtxInterface) GetIpMulticastTtl(ctx_ _bindings.Context) (BaseSocketGetIpMulticastTtlResult, error) {
+ var req_ _bindings.Message
+ resp_ := &datagramSocketWithCtxGetIpMulticastTtlResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketGetIpMulticastTtlOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IP` -> `IP_MULTICAST_LOOP`.
+func (p *DatagramSocketWithCtxInterface) SetIpMulticastLoopback(ctx_ _bindings.Context, value bool) (BaseSocketSetIpMulticastLoopbackResult, error) {
+ req_ := &datagramSocketWithCtxSetIpMulticastLoopbackRequest{
+ Value: value,
+ }
+ resp_ := &datagramSocketWithCtxSetIpMulticastLoopbackResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketSetIpMulticastLoopbackOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_IP` -> `IP_MULTICAST_LOOP`.
+func (p *DatagramSocketWithCtxInterface) GetIpMulticastLoopback(ctx_ _bindings.Context) (BaseSocketGetIpMulticastLoopbackResult, error) {
+ var req_ _bindings.Message
+ resp_ := &datagramSocketWithCtxGetIpMulticastLoopbackResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketGetIpMulticastLoopbackOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IP` -> `IP_ADD_MEMBERSHIP`
+func (p *DatagramSocketWithCtxInterface) AddIpMembership(ctx_ _bindings.Context, membership IpMulticastMembership) (BaseSocketAddIpMembershipResult, error) {
+ req_ := &datagramSocketWithCtxAddIpMembershipRequest{
+ Membership: membership,
+ }
+ resp_ := &datagramSocketWithCtxAddIpMembershipResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketAddIpMembershipOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IP` -> `IP_DROP_MEMBERSHIP`
+func (p *DatagramSocketWithCtxInterface) DropIpMembership(ctx_ _bindings.Context, membership IpMulticastMembership) (BaseSocketDropIpMembershipResult, error) {
+ req_ := &datagramSocketWithCtxDropIpMembershipRequest{
+ Membership: membership,
+ }
+ resp_ := &datagramSocketWithCtxDropIpMembershipResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketDropIpMembershipOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IPV6` -> `IPV6_ADD_MEMBERSHIP`.
+func (p *DatagramSocketWithCtxInterface) AddIpv6Membership(ctx_ _bindings.Context, membership Ipv6MulticastMembership) (BaseSocketAddIpv6MembershipResult, error) {
+ req_ := &datagramSocketWithCtxAddIpv6MembershipRequest{
+ Membership: membership,
+ }
+ resp_ := &datagramSocketWithCtxAddIpv6MembershipResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketAddIpv6MembershipOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IPV6` -> `IPV6_DROP_MEMBERSHIP`.
+func (p *DatagramSocketWithCtxInterface) DropIpv6Membership(ctx_ _bindings.Context, membership Ipv6MulticastMembership) (BaseSocketDropIpv6MembershipResult, error) {
+ req_ := &datagramSocketWithCtxDropIpv6MembershipRequest{
+ Membership: membership,
+ }
+ resp_ := &datagramSocketWithCtxDropIpv6MembershipResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketDropIpv6MembershipOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
+func (p *DatagramSocketWithCtxInterface) SetIpv6MulticastInterface(ctx_ _bindings.Context, value uint64) (BaseSocketSetIpv6MulticastInterfaceResult, error) {
+ req_ := &datagramSocketWithCtxSetIpv6MulticastInterfaceRequest{
+ Value: value,
+ }
+ resp_ := &datagramSocketWithCtxSetIpv6MulticastInterfaceResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketSetIpv6MulticastInterfaceOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
+func (p *DatagramSocketWithCtxInterface) GetIpv6MulticastInterface(ctx_ _bindings.Context) (BaseSocketGetIpv6MulticastInterfaceResult, error) {
+ var req_ _bindings.Message
+ resp_ := &datagramSocketWithCtxGetIpv6MulticastInterfaceResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketGetIpv6MulticastInterfaceOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
+func (p *DatagramSocketWithCtxInterface) SetIpv6MulticastHops(ctx_ _bindings.Context, value OptionalUint8) (BaseSocketSetIpv6MulticastHopsResult, error) {
+ req_ := &datagramSocketWithCtxSetIpv6MulticastHopsRequest{
+ Value: value,
+ }
+ resp_ := &datagramSocketWithCtxSetIpv6MulticastHopsResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketSetIpv6MulticastHopsOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
+func (p *DatagramSocketWithCtxInterface) GetIpv6MulticastHops(ctx_ _bindings.Context) (BaseSocketGetIpv6MulticastHopsResult, error) {
+ var req_ _bindings.Message
+ resp_ := &datagramSocketWithCtxGetIpv6MulticastHopsResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketGetIpv6MulticastHopsOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
+func (p *DatagramSocketWithCtxInterface) SetIpv6MulticastLoopback(ctx_ _bindings.Context, value bool) (BaseSocketSetIpv6MulticastLoopbackResult, error) {
+ req_ := &datagramSocketWithCtxSetIpv6MulticastLoopbackRequest{
+ Value: value,
+ }
+ resp_ := &datagramSocketWithCtxSetIpv6MulticastLoopbackResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketSetIpv6MulticastLoopbackOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
+func (p *DatagramSocketWithCtxInterface) GetIpv6MulticastLoopback(ctx_ _bindings.Context) (BaseSocketGetIpv6MulticastLoopbackResult, error) {
+ var req_ _bindings.Message
+ resp_ := &datagramSocketWithCtxGetIpv6MulticastLoopbackResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketGetIpv6MulticastLoopbackOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IPV6` -> `IPV6_V6ONLY`.
+func (p *DatagramSocketWithCtxInterface) SetIpv6Only(ctx_ _bindings.Context, value bool) (BaseSocketSetIpv6OnlyResult, error) {
+ req_ := &datagramSocketWithCtxSetIpv6OnlyRequest{
+ Value: value,
+ }
+ resp_ := &datagramSocketWithCtxSetIpv6OnlyResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketSetIpv6OnlyOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_IPV6` -> `IPV6_V6ONLY`.
+func (p *DatagramSocketWithCtxInterface) GetIpv6Only(ctx_ _bindings.Context) (BaseSocketGetIpv6OnlyResult, error) {
+ var req_ _bindings.Message
+ resp_ := &datagramSocketWithCtxGetIpv6OnlyResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketGetIpv6OnlyOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IPV6` -> `IPV6_RECVTCLASS`.
+func (p *DatagramSocketWithCtxInterface) SetIpv6ReceiveTrafficClass(ctx_ _bindings.Context, value bool) (BaseSocketSetIpv6ReceiveTrafficClassResult, error) {
+ req_ := &datagramSocketWithCtxSetIpv6ReceiveTrafficClassRequest{
+ Value: value,
+ }
+ resp_ := &datagramSocketWithCtxSetIpv6ReceiveTrafficClassResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketSetIpv6ReceiveTrafficClassOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_IPV6` -> `IPV6_RECVTCLASS`.
+func (p *DatagramSocketWithCtxInterface) GetIpv6ReceiveTrafficClass(ctx_ _bindings.Context) (BaseSocketGetIpv6ReceiveTrafficClassResult, error) {
+ var req_ _bindings.Message
+ resp_ := &datagramSocketWithCtxGetIpv6ReceiveTrafficClassResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketGetIpv6ReceiveTrafficClassOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IPV6` -> `IPV6_TCLASS`
+func (p *DatagramSocketWithCtxInterface) SetIpv6TrafficClass(ctx_ _bindings.Context, value OptionalUint8) (BaseSocketSetIpv6TrafficClassResult, error) {
+ req_ := &datagramSocketWithCtxSetIpv6TrafficClassRequest{
+ Value: value,
+ }
+ resp_ := &datagramSocketWithCtxSetIpv6TrafficClassResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketSetIpv6TrafficClassOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_IPV6` -> `IPV6_TCLASS`.
+func (p *DatagramSocketWithCtxInterface) GetIpv6TrafficClass(ctx_ _bindings.Context) (BaseSocketGetIpv6TrafficClassResult, error) {
+ var req_ _bindings.Message
+ resp_ := &datagramSocketWithCtxGetIpv6TrafficClassResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketGetIpv6TrafficClassOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Shuts down part of the socket.
+func (p *DatagramSocketWithCtxInterface) Shutdown(ctx_ _bindings.Context, mode ShutdownMode) (DatagramSocketShutdownResult, error) {
+ req_ := &datagramSocketWithCtxShutdownRequest{
+ Mode: mode,
+ }
+ resp_ := &datagramSocketWithCtxShutdownResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketShutdownOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Receives a message from the socket.
+func (p *DatagramSocketWithCtxInterface) RecvMsg(ctx_ _bindings.Context, wantAddr bool, dataLen uint32, wantControl bool, flags RecvMsgFlags) (DatagramSocketRecvMsgResult, error) {
+ req_ := &datagramSocketWithCtxRecvMsgRequest{
+ WantAddr: wantAddr,
+ DataLen: dataLen,
+ WantControl: wantControl,
+ Flags: flags,
+ }
+ resp_ := &datagramSocketWithCtxRecvMsgResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketRecvMsgOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Sends a message on the socket.
+func (p *DatagramSocketWithCtxInterface) SendMsg(ctx_ _bindings.Context, addr *fuchsianet.SocketAddress, data []uint8, control SendControlData, flags SendMsgFlags) (DatagramSocketSendMsgResult, error) {
+ req_ := &datagramSocketWithCtxSendMsgRequest{
+ Addr: addr,
+ Data: data,
+ Control: control,
+ Flags: flags,
+ }
+ resp_ := &datagramSocketWithCtxSendMsgResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketSendMsgOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Retrieves creation information from the socket.
+func (p *DatagramSocketWithCtxInterface) GetInfo(ctx_ _bindings.Context) (DatagramSocketGetInfoResult, error) {
+ var req_ _bindings.Message
+ resp_ := &datagramSocketWithCtxGetInfoResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(DatagramSocketGetInfoOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// A datagram socket.
+//
+// This type's [`fuchsia.io.Node/Describe`] method returns an eventpair which is used to signal
+// additional information about the state of the socket such as readiness or shutdown-ness.
+//
+// All methods on this type are nonblocking; their exact behaviors match their Linux counterparts.
+type DatagramSocketWithCtx interface {
+ // Create another connection to the same remote object.
+ //
+ // `flags` may be any of:
+ //
+ // - `OPEN_RIGHT_*`
+ // - `OPEN_FLAG_APPEND`
+ // - `OPEN_FLAG_NO_REMOTE`
+ // - `OPEN_FLAG_DESCRIBE`
+ // - `CLONE_FLAG_SAME_RIGHTS`
+ //
+ // All other flags are ignored.
+ //
+ // The `OPEN_RIGHT_*` bits in `flags` request corresponding rights over the resulting
+ // cloned object.
+ // The cloned object must have rights less than or equal to the original object, otherwise
+ // returns `ZX_ERR_ACCESS_DENIED`.
+ // Alternatively, pass `CLONE_FLAG_SAME_RIGHTS` to inherit the rights on the source connection.
+ // It is invalid to pass any of the `OPEN_RIGHT_*` flags together with
+ // `CLONE_FLAG_SAME_RIGHTS`.
+ Clone(ctx_ _bindings.Context, flags uint32, object fuchsiaio.NodeWithCtxInterfaceRequest) error
+ // Terminates connection with object.
+ //
+ // This method does not require any rights.
+ Close(ctx_ _bindings.Context) (int32, error)
+ // Returns extra information about the type of the object.
+ // If the `Describe` operation fails, the connection is closed.
+ //
+ // This method does not require any rights.
+ Describe(ctx_ _bindings.Context) (fuchsiaio.NodeInfo, error)
+ // An event produced eagerly by a FIDL server if requested by `OPEN_FLAG_DESCRIBE`.
+ //
+ // Indicates the success or failure of the open operation, and optionally describes the
+ // object. If the status is `ZX_OK`, `info` contains descriptive information about the object
+ // (the same as would be returned by `Describe`).
+ // Synchronizes updates to the node to the underlying media, if it exists.
+ //
+ // This method does not require any rights.
+ Sync(ctx_ _bindings.Context) (int32, error)
+ // Acquires information about the node.
+ //
+ // This method does not require any rights.
+ GetAttr(ctx_ _bindings.Context) (int32, fuchsiaio.NodeAttributes, error)
+ // Updates information about the node.
+ // `flags` may be any of `NODE_ATTRIBUTE_FLAG_*`.
+ //
+ // This method requires following rights: `OPEN_RIGHT_WRITABLE`, otherwise returns
+ // `ZX_ERR_BAD_HANDLE`.
+ SetAttr(ctx_ _bindings.Context, flags uint32, attributes fuchsiaio.NodeAttributes) (int32, error)
+ // Acquires the `Directory.Open` rights and flags used to access this file.
+ //
+ // This method does not require any rights.
+ // This method has the same functionality as GetFlags for File and is
+ // meant as an in-progress replacement.
+ NodeGetFlags(ctx_ _bindings.Context) (int32, uint32, error)
+ // Changes the `Directory.Open` flags used to access the file.
+ // Supported flags which can be turned on / off:
+ // - `OPEN_FLAG_APPEND`
+ //
+ // This method does not require any rights.
+ // This method has the same functionality as SetFlags for File and is
+ // meant as an in-progress replacement.
+ NodeSetFlags(ctx_ _bindings.Context, flags uint32) (int32, error)
+ // Sets the local address used for the socket.
+ Bind(ctx_ _bindings.Context, addr fuchsianet.SocketAddress) (BaseSocketBindResult, error)
+ // Initiates a connection to a remote address.
+ Connect(ctx_ _bindings.Context, addr fuchsianet.SocketAddress) (BaseSocketConnectResult, error)
+ // Clears connection information from this socket.
+ Disconnect(ctx_ _bindings.Context) (BaseSocketDisconnectResult, error)
+ // Retrieves the local socket address.
+ GetSockName(ctx_ _bindings.Context) (BaseSocketGetSockNameResult, error)
+ // Retrieves the remote socket address.
+ GetPeerName(ctx_ _bindings.Context) (BaseSocketGetPeerNameResult, error)
+ // Shuts down part of the socket.
+ Shutdown2(ctx_ _bindings.Context, mode ShutdownMode) (BaseSocketShutdown2Result, error)
+ // Set `SOL_SOCKET` -> `SO_REUSEADDR`.
+ SetReuseAddress(ctx_ _bindings.Context, value bool) (BaseSocketSetReuseAddressResult, error)
+ // Get `SOL_SOCKET` -> `SO_REUSEADDR`.
+ GetReuseAddress(ctx_ _bindings.Context) (BaseSocketGetReuseAddressResult, error)
+ // Get `SOL_SOCKET` -> `SO_ERROR`.
+ // Returns the last error if there is an error set on the socket.
+ GetError(ctx_ _bindings.Context) (BaseSocketGetErrorResult, error)
+ // Set `SOL_SOCKET` -> `SO_BROADCAST`.
+ SetBroadcast(ctx_ _bindings.Context, value bool) (BaseSocketSetBroadcastResult, error)
+ // Get `SOL_SOCKET` -> `SO_BROADCAST`.
+ GetBroadcast(ctx_ _bindings.Context) (BaseSocketGetBroadcastResult, error)
+ // Set `SOL_SOCKET` -> `SO_SNDBUF`.
+ SetSendBuffer(ctx_ _bindings.Context, valueBytes uint64) (BaseSocketSetSendBufferResult, error)
+ // Get `SOL_SOCKET` -> `SO_SNDBUF`.
+ GetSendBuffer(ctx_ _bindings.Context) (BaseSocketGetSendBufferResult, error)
+ // Set `SOL_SOCKET` -> `SO_RCVBUF`.
+ SetReceiveBuffer(ctx_ _bindings.Context, valueBytes uint64) (BaseSocketSetReceiveBufferResult, error)
+ // Get `SOL_SOCKET` -> `SO_RCVBUF`.
+ GetReceiveBuffer(ctx_ _bindings.Context) (BaseSocketGetReceiveBufferResult, error)
+ // Set `SOL_SOCKET` -> `SO_KEEPALIVE`.
+ SetKeepAlive(ctx_ _bindings.Context, value bool) (BaseSocketSetKeepAliveResult, error)
+ // Get `SOL_SOCKET` -> `SO_KEEPALIVE`.
+ GetKeepAlive(ctx_ _bindings.Context) (BaseSocketGetKeepAliveResult, error)
+ // Set `SOL_SOCKET` -> `SO_OOBINLINE`.
+ SetOutOfBandInline(ctx_ _bindings.Context, value bool) (BaseSocketSetOutOfBandInlineResult, error)
+ // Get `SOL_SOCKET` -> `SO_OOBINLINE`.
+ GetOutOfBandInline(ctx_ _bindings.Context) (BaseSocketGetOutOfBandInlineResult, error)
+ // Set `SOL_SOCKET` -> `SO_NO_CHECK`.
+ SetNoCheck(ctx_ _bindings.Context, value bool) (BaseSocketSetNoCheckResult, error)
+ // Get `SOL_SOCKET` -> `SO_NO_CHECK`.
+ GetNoCheck(ctx_ _bindings.Context) (BaseSocketGetNoCheckResult, error)
+ // Set `SOL_SOCKET` -> `SO_LINGER`.
+ SetLinger(ctx_ _bindings.Context, linger bool, lengthSecs uint32) (BaseSocketSetLingerResult, error)
+ // Get `SOL_SOCKET` -> `SO_LINGER`.
+ GetLinger(ctx_ _bindings.Context) (BaseSocketGetLingerResult, error)
+ // Set `SOL_SOCKET` -> `SO_REUSEPORT`.
+ SetReusePort(ctx_ _bindings.Context, value bool) (BaseSocketSetReusePortResult, error)
+ // Get `SOL_SOCKET` -> `SO_REUSEPORT`.
+ GetReusePort(ctx_ _bindings.Context) (BaseSocketGetReusePortResult, error)
+ // Get `SOL_SOCKET` -> `SO_ACCEPTCONN`.
+ GetAcceptConn(ctx_ _bindings.Context) (BaseSocketGetAcceptConnResult, error)
+ // Set `SOL_SOCKET` -> `SO_BINDTODEVICE`.
+ SetBindToDevice(ctx_ _bindings.Context, value string) (BaseSocketSetBindToDeviceResult, error)
+ // Get `SOL_SOCKET` -> `SO_BINDTODEVICE`.
+ GetBindToDevice(ctx_ _bindings.Context) (BaseSocketGetBindToDeviceResult, error)
+ // Set `SOL_SOCKET` -> `SO_TIMESTAMP`.
+ SetTimestamp(ctx_ _bindings.Context, value bool) (BaseSocketSetTimestampResult, error)
+ // Get `SOL_SOCKET` -> `SO_TIMESTAMP`.
+ GetTimestamp(ctx_ _bindings.Context) (BaseSocketGetTimestampResult, error)
+ // Set `SOL_IP` -> `IP_TOS`.
+ SetIpTypeOfService(ctx_ _bindings.Context, value uint8) (BaseSocketSetIpTypeOfServiceResult, error)
+ // Get `SOL_IP` -> `IP_TOS`.
+ GetIpTypeOfService(ctx_ _bindings.Context) (BaseSocketGetIpTypeOfServiceResult, error)
+ // Set `SOL_IP` -> `IP_TTL`.
+ SetIpTtl(ctx_ _bindings.Context, value OptionalUint8) (BaseSocketSetIpTtlResult, error)
+ // Get `SOL_IP` -> `IP_TTL`.
+ GetIpTtl(ctx_ _bindings.Context) (BaseSocketGetIpTtlResult, error)
+ // Set `SOL_IP` -> `IP_PKTINFO`.
+ SetIpPacketInfo(ctx_ _bindings.Context, value bool) (BaseSocketSetIpPacketInfoResult, error)
+ // Get `SOL_IP` -> `IP_PKTINFO`.
+ GetIpPacketInfo(ctx_ _bindings.Context) (BaseSocketGetIpPacketInfoResult, error)
+ // Set `SOL_IP` -> `IP_RECVTOS`.
+ SetIpReceiveTypeOfService(ctx_ _bindings.Context, value bool) (BaseSocketSetIpReceiveTypeOfServiceResult, error)
+ // Get `SOL_IP` -> `IP_RECVTOS`.
+ GetIpReceiveTypeOfService(ctx_ _bindings.Context) (BaseSocketGetIpReceiveTypeOfServiceResult, error)
+ // Set `SOL_IP` -> `IP_MULTICAST_IF`.
+ SetIpMulticastInterface(ctx_ _bindings.Context, iface uint64, address fuchsianet.Ipv4Address) (BaseSocketSetIpMulticastInterfaceResult, error)
+ // Get `SOL_IP` -> `IP_MULTICAST_IF`.
+ GetIpMulticastInterface(ctx_ _bindings.Context) (BaseSocketGetIpMulticastInterfaceResult, error)
+ // Set `SOL_IP` -> `IP_MULTICAST_TTL`.
+ SetIpMulticastTtl(ctx_ _bindings.Context, value OptionalUint8) (BaseSocketSetIpMulticastTtlResult, error)
+ // Get `SOL_IP` -> `IP_MULTICAST_TTL`.
+ GetIpMulticastTtl(ctx_ _bindings.Context) (BaseSocketGetIpMulticastTtlResult, error)
+ // Set `SOL_IP` -> `IP_MULTICAST_LOOP`.
+ SetIpMulticastLoopback(ctx_ _bindings.Context, value bool) (BaseSocketSetIpMulticastLoopbackResult, error)
+ // Get `SOL_IP` -> `IP_MULTICAST_LOOP`.
+ GetIpMulticastLoopback(ctx_ _bindings.Context) (BaseSocketGetIpMulticastLoopbackResult, error)
+ // Set `SOL_IP` -> `IP_ADD_MEMBERSHIP`
+ AddIpMembership(ctx_ _bindings.Context, membership IpMulticastMembership) (BaseSocketAddIpMembershipResult, error)
+ // Set `SOL_IP` -> `IP_DROP_MEMBERSHIP`
+ DropIpMembership(ctx_ _bindings.Context, membership IpMulticastMembership) (BaseSocketDropIpMembershipResult, error)
+ // Set `SOL_IPV6` -> `IPV6_ADD_MEMBERSHIP`.
+ AddIpv6Membership(ctx_ _bindings.Context, membership Ipv6MulticastMembership) (BaseSocketAddIpv6MembershipResult, error)
+ // Set `SOL_IPV6` -> `IPV6_DROP_MEMBERSHIP`.
+ DropIpv6Membership(ctx_ _bindings.Context, membership Ipv6MulticastMembership) (BaseSocketDropIpv6MembershipResult, error)
+ // Set `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
+ SetIpv6MulticastInterface(ctx_ _bindings.Context, value uint64) (BaseSocketSetIpv6MulticastInterfaceResult, error)
+ // Get `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
+ GetIpv6MulticastInterface(ctx_ _bindings.Context) (BaseSocketGetIpv6MulticastInterfaceResult, error)
+ // Set `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
+ SetIpv6MulticastHops(ctx_ _bindings.Context, value OptionalUint8) (BaseSocketSetIpv6MulticastHopsResult, error)
+ // Get `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
+ GetIpv6MulticastHops(ctx_ _bindings.Context) (BaseSocketGetIpv6MulticastHopsResult, error)
+ // Set `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
+ SetIpv6MulticastLoopback(ctx_ _bindings.Context, value bool) (BaseSocketSetIpv6MulticastLoopbackResult, error)
+ // Get `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
+ GetIpv6MulticastLoopback(ctx_ _bindings.Context) (BaseSocketGetIpv6MulticastLoopbackResult, error)
+ // Set `SOL_IPV6` -> `IPV6_V6ONLY`.
+ SetIpv6Only(ctx_ _bindings.Context, value bool) (BaseSocketSetIpv6OnlyResult, error)
+ // Get `SOL_IPV6` -> `IPV6_V6ONLY`.
+ GetIpv6Only(ctx_ _bindings.Context) (BaseSocketGetIpv6OnlyResult, error)
+ // Set `SOL_IPV6` -> `IPV6_RECVTCLASS`.
+ SetIpv6ReceiveTrafficClass(ctx_ _bindings.Context, value bool) (BaseSocketSetIpv6ReceiveTrafficClassResult, error)
+ // Get `SOL_IPV6` -> `IPV6_RECVTCLASS`.
+ GetIpv6ReceiveTrafficClass(ctx_ _bindings.Context) (BaseSocketGetIpv6ReceiveTrafficClassResult, error)
+ // Set `SOL_IPV6` -> `IPV6_TCLASS`
+ SetIpv6TrafficClass(ctx_ _bindings.Context, value OptionalUint8) (BaseSocketSetIpv6TrafficClassResult, error)
+ // Get `SOL_IPV6` -> `IPV6_TCLASS`.
+ GetIpv6TrafficClass(ctx_ _bindings.Context) (BaseSocketGetIpv6TrafficClassResult, error)
+ // Shuts down part of the socket.
+ Shutdown(ctx_ _bindings.Context, mode ShutdownMode) (DatagramSocketShutdownResult, error)
+ // Receives a message from the socket.
+ RecvMsg(ctx_ _bindings.Context, wantAddr bool, dataLen uint32, wantControl bool, flags RecvMsgFlags) (DatagramSocketRecvMsgResult, error)
+ // Sends a message on the socket.
+ SendMsg(ctx_ _bindings.Context, addr *fuchsianet.SocketAddress, data []uint8, control SendControlData, flags SendMsgFlags) (DatagramSocketSendMsgResult, error)
+ // Retrieves creation information from the socket.
+ GetInfo(ctx_ _bindings.Context) (DatagramSocketGetInfoResult, error)
+}
+
+type DatagramSocketWithCtxTransitionalBase struct{}
+
+func (_ *DatagramSocketWithCtxTransitionalBase) NodeGetFlags(ctx_ _bindings.Context) (int32, uint32, error) {
+ panic("Not Implemented")
+}
+func (_ *DatagramSocketWithCtxTransitionalBase) NodeSetFlags(ctx_ _bindings.Context, flags uint32) (int32, error) {
+ panic("Not Implemented")
+}
+
+type DatagramSocketWithCtxInterfaceRequest _bindings.InterfaceRequest
+
+func NewDatagramSocketWithCtxInterfaceRequest() (DatagramSocketWithCtxInterfaceRequest, *DatagramSocketWithCtxInterface, error) {
+ req, cli, err := _bindings.NewInterfaceRequest()
+ return DatagramSocketWithCtxInterfaceRequest(req), (*DatagramSocketWithCtxInterface)(cli), err
+}
+
+type DatagramSocketWithCtxStub struct {
+ Impl DatagramSocketWithCtx
+}
+
+func (s_ *DatagramSocketWithCtxStub) Dispatch(args_ _bindings.DispatchArgs) (_bindings.Message, bool, error) {
+ switch args_.Ordinal {
+ case DatagramSocketCloneOrdinal:
+ in_ := datagramSocketWithCtxCloneRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ err_ := s_.Impl.Clone(args_.Ctx, in_.Flags, in_.Object)
+ return nil, false, err_
+ case DatagramSocketCloseOrdinal:
+ s, err_ := s_.Impl.Close(args_.Ctx)
+ out_ := datagramSocketWithCtxCloseResponse{}
+ out_.S = s
+ return &out_, true, err_
+ case DatagramSocketDescribeOrdinal:
+ info, err_ := s_.Impl.Describe(args_.Ctx)
+ out_ := datagramSocketWithCtxDescribeResponse{}
+ out_.Info = info
+ return &out_, true, err_
+ case DatagramSocketSyncOrdinal:
+ s, err_ := s_.Impl.Sync(args_.Ctx)
+ out_ := datagramSocketWithCtxSyncResponse{}
+ out_.S = s
+ return &out_, true, err_
+ case DatagramSocketGetAttrOrdinal:
+ s, attributes, err_ := s_.Impl.GetAttr(args_.Ctx)
+ out_ := datagramSocketWithCtxGetAttrResponse{}
+ out_.S = s
+ out_.Attributes = attributes
+ return &out_, true, err_
+ case DatagramSocketSetAttrOrdinal:
+ in_ := datagramSocketWithCtxSetAttrRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ s, err_ := s_.Impl.SetAttr(args_.Ctx, in_.Flags, in_.Attributes)
+ out_ := datagramSocketWithCtxSetAttrResponse{}
+ out_.S = s
+ return &out_, true, err_
+ case DatagramSocketNodeGetFlagsOrdinal:
+ s, flags, err_ := s_.Impl.NodeGetFlags(args_.Ctx)
+ out_ := datagramSocketWithCtxNodeGetFlagsResponse{}
+ out_.S = s
+ out_.Flags = flags
+ return &out_, true, err_
+ case DatagramSocketNodeSetFlagsOrdinal:
+ in_ := datagramSocketWithCtxNodeSetFlagsRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ s, err_ := s_.Impl.NodeSetFlags(args_.Ctx, in_.Flags)
+ out_ := datagramSocketWithCtxNodeSetFlagsResponse{}
+ out_.S = s
+ return &out_, true, err_
+ case DatagramSocketBindOrdinal:
+ in_ := datagramSocketWithCtxBindRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.Bind(args_.Ctx, in_.Addr)
+ out_ := datagramSocketWithCtxBindResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketConnectOrdinal:
+ in_ := datagramSocketWithCtxConnectRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.Connect(args_.Ctx, in_.Addr)
+ out_ := datagramSocketWithCtxConnectResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketDisconnectOrdinal:
+ result, err_ := s_.Impl.Disconnect(args_.Ctx)
+ out_ := datagramSocketWithCtxDisconnectResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketGetSockNameOrdinal:
+ result, err_ := s_.Impl.GetSockName(args_.Ctx)
+ out_ := datagramSocketWithCtxGetSockNameResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketGetPeerNameOrdinal:
+ result, err_ := s_.Impl.GetPeerName(args_.Ctx)
+ out_ := datagramSocketWithCtxGetPeerNameResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketShutdown2Ordinal:
+ in_ := datagramSocketWithCtxShutdown2Request{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.Shutdown2(args_.Ctx, in_.Mode)
+ out_ := datagramSocketWithCtxShutdown2Response{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketSetReuseAddressOrdinal:
+ in_ := datagramSocketWithCtxSetReuseAddressRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetReuseAddress(args_.Ctx, in_.Value)
+ out_ := datagramSocketWithCtxSetReuseAddressResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketGetReuseAddressOrdinal:
+ result, err_ := s_.Impl.GetReuseAddress(args_.Ctx)
+ out_ := datagramSocketWithCtxGetReuseAddressResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketGetErrorOrdinal:
+ result, err_ := s_.Impl.GetError(args_.Ctx)
+ out_ := datagramSocketWithCtxGetErrorResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketSetBroadcastOrdinal:
+ in_ := datagramSocketWithCtxSetBroadcastRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetBroadcast(args_.Ctx, in_.Value)
+ out_ := datagramSocketWithCtxSetBroadcastResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketGetBroadcastOrdinal:
+ result, err_ := s_.Impl.GetBroadcast(args_.Ctx)
+ out_ := datagramSocketWithCtxGetBroadcastResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketSetSendBufferOrdinal:
+ in_ := datagramSocketWithCtxSetSendBufferRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetSendBuffer(args_.Ctx, in_.ValueBytes)
+ out_ := datagramSocketWithCtxSetSendBufferResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketGetSendBufferOrdinal:
+ result, err_ := s_.Impl.GetSendBuffer(args_.Ctx)
+ out_ := datagramSocketWithCtxGetSendBufferResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketSetReceiveBufferOrdinal:
+ in_ := datagramSocketWithCtxSetReceiveBufferRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetReceiveBuffer(args_.Ctx, in_.ValueBytes)
+ out_ := datagramSocketWithCtxSetReceiveBufferResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketGetReceiveBufferOrdinal:
+ result, err_ := s_.Impl.GetReceiveBuffer(args_.Ctx)
+ out_ := datagramSocketWithCtxGetReceiveBufferResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketSetKeepAliveOrdinal:
+ in_ := datagramSocketWithCtxSetKeepAliveRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetKeepAlive(args_.Ctx, in_.Value)
+ out_ := datagramSocketWithCtxSetKeepAliveResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketGetKeepAliveOrdinal:
+ result, err_ := s_.Impl.GetKeepAlive(args_.Ctx)
+ out_ := datagramSocketWithCtxGetKeepAliveResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketSetOutOfBandInlineOrdinal:
+ in_ := datagramSocketWithCtxSetOutOfBandInlineRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetOutOfBandInline(args_.Ctx, in_.Value)
+ out_ := datagramSocketWithCtxSetOutOfBandInlineResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketGetOutOfBandInlineOrdinal:
+ result, err_ := s_.Impl.GetOutOfBandInline(args_.Ctx)
+ out_ := datagramSocketWithCtxGetOutOfBandInlineResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketSetNoCheckOrdinal:
+ in_ := datagramSocketWithCtxSetNoCheckRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetNoCheck(args_.Ctx, in_.Value)
+ out_ := datagramSocketWithCtxSetNoCheckResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketGetNoCheckOrdinal:
+ result, err_ := s_.Impl.GetNoCheck(args_.Ctx)
+ out_ := datagramSocketWithCtxGetNoCheckResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketSetLingerOrdinal:
+ in_ := datagramSocketWithCtxSetLingerRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetLinger(args_.Ctx, in_.Linger, in_.LengthSecs)
+ out_ := datagramSocketWithCtxSetLingerResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketGetLingerOrdinal:
+ result, err_ := s_.Impl.GetLinger(args_.Ctx)
+ out_ := datagramSocketWithCtxGetLingerResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketSetReusePortOrdinal:
+ in_ := datagramSocketWithCtxSetReusePortRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetReusePort(args_.Ctx, in_.Value)
+ out_ := datagramSocketWithCtxSetReusePortResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketGetReusePortOrdinal:
+ result, err_ := s_.Impl.GetReusePort(args_.Ctx)
+ out_ := datagramSocketWithCtxGetReusePortResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketGetAcceptConnOrdinal:
+ result, err_ := s_.Impl.GetAcceptConn(args_.Ctx)
+ out_ := datagramSocketWithCtxGetAcceptConnResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketSetBindToDeviceOrdinal:
+ in_ := datagramSocketWithCtxSetBindToDeviceRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetBindToDevice(args_.Ctx, in_.Value)
+ out_ := datagramSocketWithCtxSetBindToDeviceResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketGetBindToDeviceOrdinal:
+ result, err_ := s_.Impl.GetBindToDevice(args_.Ctx)
+ out_ := datagramSocketWithCtxGetBindToDeviceResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketSetTimestampOrdinal:
+ in_ := datagramSocketWithCtxSetTimestampRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetTimestamp(args_.Ctx, in_.Value)
+ out_ := datagramSocketWithCtxSetTimestampResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketGetTimestampOrdinal:
+ result, err_ := s_.Impl.GetTimestamp(args_.Ctx)
+ out_ := datagramSocketWithCtxGetTimestampResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketSetIpTypeOfServiceOrdinal:
+ in_ := datagramSocketWithCtxSetIpTypeOfServiceRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetIpTypeOfService(args_.Ctx, in_.Value)
+ out_ := datagramSocketWithCtxSetIpTypeOfServiceResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketGetIpTypeOfServiceOrdinal:
+ result, err_ := s_.Impl.GetIpTypeOfService(args_.Ctx)
+ out_ := datagramSocketWithCtxGetIpTypeOfServiceResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketSetIpTtlOrdinal:
+ in_ := datagramSocketWithCtxSetIpTtlRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetIpTtl(args_.Ctx, in_.Value)
+ out_ := datagramSocketWithCtxSetIpTtlResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketGetIpTtlOrdinal:
+ result, err_ := s_.Impl.GetIpTtl(args_.Ctx)
+ out_ := datagramSocketWithCtxGetIpTtlResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketSetIpPacketInfoOrdinal:
+ in_ := datagramSocketWithCtxSetIpPacketInfoRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetIpPacketInfo(args_.Ctx, in_.Value)
+ out_ := datagramSocketWithCtxSetIpPacketInfoResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketGetIpPacketInfoOrdinal:
+ result, err_ := s_.Impl.GetIpPacketInfo(args_.Ctx)
+ out_ := datagramSocketWithCtxGetIpPacketInfoResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketSetIpReceiveTypeOfServiceOrdinal:
+ in_ := datagramSocketWithCtxSetIpReceiveTypeOfServiceRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetIpReceiveTypeOfService(args_.Ctx, in_.Value)
+ out_ := datagramSocketWithCtxSetIpReceiveTypeOfServiceResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketGetIpReceiveTypeOfServiceOrdinal:
+ result, err_ := s_.Impl.GetIpReceiveTypeOfService(args_.Ctx)
+ out_ := datagramSocketWithCtxGetIpReceiveTypeOfServiceResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketSetIpMulticastInterfaceOrdinal:
+ in_ := datagramSocketWithCtxSetIpMulticastInterfaceRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetIpMulticastInterface(args_.Ctx, in_.Iface, in_.Address)
+ out_ := datagramSocketWithCtxSetIpMulticastInterfaceResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketGetIpMulticastInterfaceOrdinal:
+ result, err_ := s_.Impl.GetIpMulticastInterface(args_.Ctx)
+ out_ := datagramSocketWithCtxGetIpMulticastInterfaceResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketSetIpMulticastTtlOrdinal:
+ in_ := datagramSocketWithCtxSetIpMulticastTtlRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetIpMulticastTtl(args_.Ctx, in_.Value)
+ out_ := datagramSocketWithCtxSetIpMulticastTtlResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketGetIpMulticastTtlOrdinal:
+ result, err_ := s_.Impl.GetIpMulticastTtl(args_.Ctx)
+ out_ := datagramSocketWithCtxGetIpMulticastTtlResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketSetIpMulticastLoopbackOrdinal:
+ in_ := datagramSocketWithCtxSetIpMulticastLoopbackRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetIpMulticastLoopback(args_.Ctx, in_.Value)
+ out_ := datagramSocketWithCtxSetIpMulticastLoopbackResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketGetIpMulticastLoopbackOrdinal:
+ result, err_ := s_.Impl.GetIpMulticastLoopback(args_.Ctx)
+ out_ := datagramSocketWithCtxGetIpMulticastLoopbackResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketAddIpMembershipOrdinal:
+ in_ := datagramSocketWithCtxAddIpMembershipRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.AddIpMembership(args_.Ctx, in_.Membership)
+ out_ := datagramSocketWithCtxAddIpMembershipResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketDropIpMembershipOrdinal:
+ in_ := datagramSocketWithCtxDropIpMembershipRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.DropIpMembership(args_.Ctx, in_.Membership)
+ out_ := datagramSocketWithCtxDropIpMembershipResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketAddIpv6MembershipOrdinal:
+ in_ := datagramSocketWithCtxAddIpv6MembershipRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.AddIpv6Membership(args_.Ctx, in_.Membership)
+ out_ := datagramSocketWithCtxAddIpv6MembershipResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketDropIpv6MembershipOrdinal:
+ in_ := datagramSocketWithCtxDropIpv6MembershipRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.DropIpv6Membership(args_.Ctx, in_.Membership)
+ out_ := datagramSocketWithCtxDropIpv6MembershipResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketSetIpv6MulticastInterfaceOrdinal:
+ in_ := datagramSocketWithCtxSetIpv6MulticastInterfaceRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetIpv6MulticastInterface(args_.Ctx, in_.Value)
+ out_ := datagramSocketWithCtxSetIpv6MulticastInterfaceResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketGetIpv6MulticastInterfaceOrdinal:
+ result, err_ := s_.Impl.GetIpv6MulticastInterface(args_.Ctx)
+ out_ := datagramSocketWithCtxGetIpv6MulticastInterfaceResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketSetIpv6MulticastHopsOrdinal:
+ in_ := datagramSocketWithCtxSetIpv6MulticastHopsRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetIpv6MulticastHops(args_.Ctx, in_.Value)
+ out_ := datagramSocketWithCtxSetIpv6MulticastHopsResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketGetIpv6MulticastHopsOrdinal:
+ result, err_ := s_.Impl.GetIpv6MulticastHops(args_.Ctx)
+ out_ := datagramSocketWithCtxGetIpv6MulticastHopsResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketSetIpv6MulticastLoopbackOrdinal:
+ in_ := datagramSocketWithCtxSetIpv6MulticastLoopbackRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetIpv6MulticastLoopback(args_.Ctx, in_.Value)
+ out_ := datagramSocketWithCtxSetIpv6MulticastLoopbackResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketGetIpv6MulticastLoopbackOrdinal:
+ result, err_ := s_.Impl.GetIpv6MulticastLoopback(args_.Ctx)
+ out_ := datagramSocketWithCtxGetIpv6MulticastLoopbackResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketSetIpv6OnlyOrdinal:
+ in_ := datagramSocketWithCtxSetIpv6OnlyRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetIpv6Only(args_.Ctx, in_.Value)
+ out_ := datagramSocketWithCtxSetIpv6OnlyResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketGetIpv6OnlyOrdinal:
+ result, err_ := s_.Impl.GetIpv6Only(args_.Ctx)
+ out_ := datagramSocketWithCtxGetIpv6OnlyResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketSetIpv6ReceiveTrafficClassOrdinal:
+ in_ := datagramSocketWithCtxSetIpv6ReceiveTrafficClassRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetIpv6ReceiveTrafficClass(args_.Ctx, in_.Value)
+ out_ := datagramSocketWithCtxSetIpv6ReceiveTrafficClassResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketGetIpv6ReceiveTrafficClassOrdinal:
+ result, err_ := s_.Impl.GetIpv6ReceiveTrafficClass(args_.Ctx)
+ out_ := datagramSocketWithCtxGetIpv6ReceiveTrafficClassResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketSetIpv6TrafficClassOrdinal:
+ in_ := datagramSocketWithCtxSetIpv6TrafficClassRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetIpv6TrafficClass(args_.Ctx, in_.Value)
+ out_ := datagramSocketWithCtxSetIpv6TrafficClassResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketGetIpv6TrafficClassOrdinal:
+ result, err_ := s_.Impl.GetIpv6TrafficClass(args_.Ctx)
+ out_ := datagramSocketWithCtxGetIpv6TrafficClassResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketShutdownOrdinal:
+ in_ := datagramSocketWithCtxShutdownRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.Shutdown(args_.Ctx, in_.Mode)
+ out_ := datagramSocketWithCtxShutdownResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketRecvMsgOrdinal:
+ in_ := datagramSocketWithCtxRecvMsgRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.RecvMsg(args_.Ctx, in_.WantAddr, in_.DataLen, in_.WantControl, in_.Flags)
+ out_ := datagramSocketWithCtxRecvMsgResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketSendMsgOrdinal:
+ in_ := datagramSocketWithCtxSendMsgRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SendMsg(args_.Ctx, in_.Addr, in_.Data, in_.Control, in_.Flags)
+ out_ := datagramSocketWithCtxSendMsgResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case DatagramSocketGetInfoOrdinal:
+ result, err_ := s_.Impl.GetInfo(args_.Ctx)
+ out_ := datagramSocketWithCtxGetInfoResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ }
+ return nil, false, _bindings.ErrUnknownOrdinal
+}
+
+type DatagramSocketEventProxy _bindings.ChannelProxy
+
+func (p *DatagramSocketEventProxy) OnOpen(s int32, info *fuchsiaio.NodeInfo) error {
+ event_ := &datagramSocketWithCtxOnOpenResponse{
+ S: s,
+ Info: info,
+ }
+ return ((*_bindings.ChannelProxy)(p)).Send(DatagramSocketOnOpenOrdinal, event_)
+}
+
+const (
+ StreamSocketCloneOrdinal uint64 = 0x5a61678f293ce16f
+ StreamSocketCloseOrdinal uint64 = 0x5309c5bd1c33dc44
+ StreamSocketDescribeOrdinal uint64 = 0xffcec215078dea0
+ StreamSocketOnOpenOrdinal uint64 = 0x7fc7bbb1dbfd1972
+ StreamSocketSyncOrdinal uint64 = 0x189d88326c18b519
+ StreamSocketGetAttrOrdinal uint64 = 0x78985e216314dafd
+ StreamSocketSetAttrOrdinal uint64 = 0x4186c0f40d938f46
+ StreamSocketNodeGetFlagsOrdinal uint64 = 0x5b88fffb8eda3aa1
+ StreamSocketNodeSetFlagsOrdinal uint64 = 0x5295b76c71fde733
+ StreamSocketBindOrdinal uint64 = 0xf8457e6b05e15bc
+ StreamSocketConnectOrdinal uint64 = 0x17abeee0b9843bb1
+ StreamSocketDisconnectOrdinal uint64 = 0x20eaedba2e0f70a4
+ StreamSocketGetSockNameOrdinal uint64 = 0x41a618ef19a91f9d
+ StreamSocketGetPeerNameOrdinal uint64 = 0x4009d08a4beb5e95
+ StreamSocketShutdown2Ordinal uint64 = 0x57d3458f9754763b
+ StreamSocketSetReuseAddressOrdinal uint64 = 0x1fd74ee8b9a4a876
+ StreamSocketGetReuseAddressOrdinal uint64 = 0x67b7206b8d1bc0a5
+ StreamSocketGetErrorOrdinal uint64 = 0x5aad39b33e5f6ebb
+ StreamSocketSetBroadcastOrdinal uint64 = 0x6023e081ce3cd947
+ StreamSocketGetBroadcastOrdinal uint64 = 0x68796fc556f9780d
+ StreamSocketSetSendBufferOrdinal uint64 = 0x756eac32d73a7a70
+ StreamSocketGetSendBufferOrdinal uint64 = 0x78a52fd9c7b2410b
+ StreamSocketSetReceiveBufferOrdinal uint64 = 0x6b0cf2f1919c7001
+ StreamSocketGetReceiveBufferOrdinal uint64 = 0x14c1a4b64f709e5c
+ StreamSocketSetKeepAliveOrdinal uint64 = 0x572df8f0b920d2c7
+ StreamSocketGetKeepAliveOrdinal uint64 = 0x2dd29d3215f2c9d2
+ StreamSocketSetOutOfBandInlineOrdinal uint64 = 0x3ecb49968bee439
+ StreamSocketGetOutOfBandInlineOrdinal uint64 = 0x348c1ab3aeca1745
+ StreamSocketSetNoCheckOrdinal uint64 = 0x6bbf00c53a4c78c2
+ StreamSocketGetNoCheckOrdinal uint64 = 0x2cd4249286417694
+ StreamSocketSetLingerOrdinal uint64 = 0x45386351246e998e
+ StreamSocketGetLingerOrdinal uint64 = 0x48eb20fc5ccb0e45
+ StreamSocketSetReusePortOrdinal uint64 = 0x24dd3e5cb36d9ccb
+ StreamSocketGetReusePortOrdinal uint64 = 0x7a112c1ab54ff828
+ StreamSocketGetAcceptConnOrdinal uint64 = 0x67ce6db6c2ec8966
+ StreamSocketSetBindToDeviceOrdinal uint64 = 0x2118b483f28aafc4
+ StreamSocketGetBindToDeviceOrdinal uint64 = 0x1ab1fbf0ef7906c8
+ StreamSocketSetTimestampOrdinal uint64 = 0x285d6516c263d839
+ StreamSocketGetTimestampOrdinal uint64 = 0x49f2fffbbcc2bd27
+ StreamSocketSetIpTypeOfServiceOrdinal uint64 = 0x559849ba9574834a
+ StreamSocketGetIpTypeOfServiceOrdinal uint64 = 0x2740d6bfa379deb1
+ StreamSocketSetIpTtlOrdinal uint64 = 0x67395f7176d7918e
+ StreamSocketGetIpTtlOrdinal uint64 = 0x789d5ddfe26b97ac
+ StreamSocketSetIpPacketInfoOrdinal uint64 = 0x3e02030a2fd13c03
+ StreamSocketGetIpPacketInfoOrdinal uint64 = 0x176f008d5a0dab15
+ StreamSocketSetIpReceiveTypeOfServiceOrdinal uint64 = 0x17148064e563dde5
+ StreamSocketGetIpReceiveTypeOfServiceOrdinal uint64 = 0x26cc26653b0fa460
+ StreamSocketSetIpMulticastInterfaceOrdinal uint64 = 0x6566fdb7061bbcf8
+ StreamSocketGetIpMulticastInterfaceOrdinal uint64 = 0x44415752b16ff024
+ StreamSocketSetIpMulticastTtlOrdinal uint64 = 0x7d1a477776ba00d3
+ StreamSocketGetIpMulticastTtlOrdinal uint64 = 0x17cbd4bd9246fc40
+ StreamSocketSetIpMulticastLoopbackOrdinal uint64 = 0x2a56b32f8f02369
+ StreamSocketGetIpMulticastLoopbackOrdinal uint64 = 0x27b16d7883c08ca8
+ StreamSocketAddIpMembershipOrdinal uint64 = 0x39a4eda6580147a0
+ StreamSocketDropIpMembershipOrdinal uint64 = 0x6d16e8fbaf496254
+ StreamSocketAddIpv6MembershipOrdinal uint64 = 0x231556bfce3194c1
+ StreamSocketDropIpv6MembershipOrdinal uint64 = 0x629c12db293444c0
+ StreamSocketSetIpv6MulticastInterfaceOrdinal uint64 = 0x5d2a568e67b54234
+ StreamSocketGetIpv6MulticastInterfaceOrdinal uint64 = 0x7b8f38fe354f32bc
+ StreamSocketSetIpv6MulticastHopsOrdinal uint64 = 0x2b2167d12c8a495d
+ StreamSocketGetIpv6MulticastHopsOrdinal uint64 = 0x51a3c8257b1a2745
+ StreamSocketSetIpv6MulticastLoopbackOrdinal uint64 = 0x97706949c4163b7
+ StreamSocketGetIpv6MulticastLoopbackOrdinal uint64 = 0x78d6544e48794935
+ StreamSocketSetIpv6OnlyOrdinal uint64 = 0x1d87ce5c02d8bcb2
+ StreamSocketGetIpv6OnlyOrdinal uint64 = 0x25d6755dbe2e9c7e
+ StreamSocketSetIpv6ReceiveTrafficClassOrdinal uint64 = 0x53b93b71c9431fe4
+ StreamSocketGetIpv6ReceiveTrafficClassOrdinal uint64 = 0x1c8433af11cd4596
+ StreamSocketSetIpv6TrafficClassOrdinal uint64 = 0x32da0ca485fad782
+ StreamSocketGetIpv6TrafficClassOrdinal uint64 = 0x6ca5b9166c8d3cba
+ StreamSocketListenOrdinal uint64 = 0x3d0a65ced3d10108
+ StreamSocketAcceptOrdinal uint64 = 0x5ab7ad620424c163
+ StreamSocketGetInfoOrdinal uint64 = 0x87cfa55d19f878f
+ StreamSocketSetTcpNoDelayOrdinal uint64 = 0x5a59b778f7333ada
+ StreamSocketGetTcpNoDelayOrdinal uint64 = 0xac219a3218b0799
+ StreamSocketSetTcpMaxSegmentOrdinal uint64 = 0xb3d30c498266d18
+ StreamSocketGetTcpMaxSegmentOrdinal uint64 = 0x637404d1b4b9982c
+ StreamSocketSetTcpCorkOrdinal uint64 = 0x62e26891541143a0
+ StreamSocketGetTcpCorkOrdinal uint64 = 0x435bb232e0e74f32
+ StreamSocketSetTcpKeepAliveIdleOrdinal uint64 = 0x196d053d8363c42
+ StreamSocketGetTcpKeepAliveIdleOrdinal uint64 = 0x35ec58564879dac
+ StreamSocketSetTcpKeepAliveIntervalOrdinal uint64 = 0x485ffbc2da1243f2
+ StreamSocketGetTcpKeepAliveIntervalOrdinal uint64 = 0x264eaf46306b284
+ StreamSocketSetTcpKeepAliveCountOrdinal uint64 = 0x2ab2e8c111708421
+ StreamSocketGetTcpKeepAliveCountOrdinal uint64 = 0x2f176ae271fe7a09
+ StreamSocketSetTcpSynCountOrdinal uint64 = 0x4dcd6ab5573c1eb3
+ StreamSocketGetTcpSynCountOrdinal uint64 = 0x7d457cba8f5f3ee6
+ StreamSocketSetTcpLingerOrdinal uint64 = 0xd5cc1e8654d36e4
+ StreamSocketGetTcpLingerOrdinal uint64 = 0xad870d311cf30eb
+ StreamSocketSetTcpDeferAcceptOrdinal uint64 = 0x15092f181e57c404
+ StreamSocketGetTcpDeferAcceptOrdinal uint64 = 0x64589790842cb7c6
+ StreamSocketSetTcpWindowClampOrdinal uint64 = 0x4a26ce07d847f1c6
+ StreamSocketGetTcpWindowClampOrdinal uint64 = 0x2df6b636bf0a6a4e
+ StreamSocketGetTcpInfoOrdinal uint64 = 0x1ffb123d9f03ead2
+ StreamSocketSetTcpQuickAckOrdinal uint64 = 0x6fa811be8fde7457
+ StreamSocketGetTcpQuickAckOrdinal uint64 = 0x7356a949bef2df32
+ StreamSocketSetTcpCongestionOrdinal uint64 = 0x7924c6eabde7819e
+ StreamSocketGetTcpCongestionOrdinal uint64 = 0x11e16397e1b72a47
+ StreamSocketSetTcpUserTimeoutOrdinal uint64 = 0x6b459e81c3741a60
+ StreamSocketGetTcpUserTimeoutOrdinal uint64 = 0x24bbd5858ad8c380
+)
+
+type StreamSocketWithCtxInterface _bindings.ChannelProxy
+
+// Create another connection to the same remote object.
+//
+// `flags` may be any of:
+//
+// - `OPEN_RIGHT_*`
+// - `OPEN_FLAG_APPEND`
+// - `OPEN_FLAG_NO_REMOTE`
+// - `OPEN_FLAG_DESCRIBE`
+// - `CLONE_FLAG_SAME_RIGHTS`
+//
+// All other flags are ignored.
+//
+// The `OPEN_RIGHT_*` bits in `flags` request corresponding rights over the resulting
+// cloned object.
+// The cloned object must have rights less than or equal to the original object, otherwise
+// returns `ZX_ERR_ACCESS_DENIED`.
+// Alternatively, pass `CLONE_FLAG_SAME_RIGHTS` to inherit the rights on the source connection.
+// It is invalid to pass any of the `OPEN_RIGHT_*` flags together with
+// `CLONE_FLAG_SAME_RIGHTS`.
+func (p *StreamSocketWithCtxInterface) Clone(ctx_ _bindings.Context, flags uint32, object fuchsiaio.NodeWithCtxInterfaceRequest) error {
+ req_ := &streamSocketWithCtxCloneRequest{
+ Flags: flags,
+ Object: object,
+ }
+ err_ := ((*_bindings.ChannelProxy)(p)).Send(StreamSocketCloneOrdinal, req_)
+ return err_
+}
+
+// Terminates connection with object.
+//
+// This method does not require any rights.
+func (p *StreamSocketWithCtxInterface) Close(ctx_ _bindings.Context) (int32, error) {
+ var req_ _bindings.Message
+ resp_ := &streamSocketWithCtxCloseResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketCloseOrdinal, req_, resp_)
+ return resp_.S, err_
+}
+
+// Returns extra information about the type of the object.
+// If the `Describe` operation fails, the connection is closed.
+//
+// This method does not require any rights.
+func (p *StreamSocketWithCtxInterface) Describe(ctx_ _bindings.Context) (fuchsiaio.NodeInfo, error) {
+ var req_ _bindings.Message
+ resp_ := &streamSocketWithCtxDescribeResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketDescribeOrdinal, req_, resp_)
+ return resp_.Info, err_
+}
+
+// An event produced eagerly by a FIDL server if requested by `OPEN_FLAG_DESCRIBE`.
+//
+// Indicates the success or failure of the open operation, and optionally describes the
+// object. If the status is `ZX_OK`, `info` contains descriptive information about the object
+// (the same as would be returned by `Describe`).
+func (p *StreamSocketWithCtxInterface) ExpectOnOpen(ctx_ _bindings.Context) (int32, *fuchsiaio.NodeInfo, error) {
+ resp_ := &streamSocketWithCtxOnOpenResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Recv(StreamSocketOnOpenOrdinal, resp_)
+ return resp_.S, resp_.Info, err_
+}
+
+// Synchronizes updates to the node to the underlying media, if it exists.
+//
+// This method does not require any rights.
+func (p *StreamSocketWithCtxInterface) Sync(ctx_ _bindings.Context) (int32, error) {
+ var req_ _bindings.Message
+ resp_ := &streamSocketWithCtxSyncResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketSyncOrdinal, req_, resp_)
+ return resp_.S, err_
+}
+
+// Acquires information about the node.
+//
+// This method does not require any rights.
+func (p *StreamSocketWithCtxInterface) GetAttr(ctx_ _bindings.Context) (int32, fuchsiaio.NodeAttributes, error) {
+ var req_ _bindings.Message
+ resp_ := &streamSocketWithCtxGetAttrResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketGetAttrOrdinal, req_, resp_)
+ return resp_.S, resp_.Attributes, err_
+}
+
+// Updates information about the node.
+// `flags` may be any of `NODE_ATTRIBUTE_FLAG_*`.
+//
+// This method requires following rights: `OPEN_RIGHT_WRITABLE`, otherwise returns
+// `ZX_ERR_BAD_HANDLE`.
+func (p *StreamSocketWithCtxInterface) SetAttr(ctx_ _bindings.Context, flags uint32, attributes fuchsiaio.NodeAttributes) (int32, error) {
+ req_ := &streamSocketWithCtxSetAttrRequest{
+ Flags: flags,
+ Attributes: attributes,
+ }
+ resp_ := &streamSocketWithCtxSetAttrResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketSetAttrOrdinal, req_, resp_)
+ return resp_.S, err_
+}
+
+// Acquires the `Directory.Open` rights and flags used to access this file.
+//
+// This method does not require any rights.
+// This method has the same functionality as GetFlags for File and is
+// meant as an in-progress replacement.
+func (p *StreamSocketWithCtxInterface) NodeGetFlags(ctx_ _bindings.Context) (int32, uint32, error) {
+ var req_ _bindings.Message
+ resp_ := &streamSocketWithCtxNodeGetFlagsResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketNodeGetFlagsOrdinal, req_, resp_)
+ return resp_.S, resp_.Flags, err_
+}
+
+// Changes the `Directory.Open` flags used to access the file.
+// Supported flags which can be turned on / off:
+// - `OPEN_FLAG_APPEND`
+//
+// This method does not require any rights.
+// This method has the same functionality as SetFlags for File and is
+// meant as an in-progress replacement.
+func (p *StreamSocketWithCtxInterface) NodeSetFlags(ctx_ _bindings.Context, flags uint32) (int32, error) {
+ req_ := &streamSocketWithCtxNodeSetFlagsRequest{
+ Flags: flags,
+ }
+ resp_ := &streamSocketWithCtxNodeSetFlagsResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketNodeSetFlagsOrdinal, req_, resp_)
+ return resp_.S, err_
+}
+
+// Sets the local address used for the socket.
+func (p *StreamSocketWithCtxInterface) Bind(ctx_ _bindings.Context, addr fuchsianet.SocketAddress) (BaseSocketBindResult, error) {
+ req_ := &streamSocketWithCtxBindRequest{
+ Addr: addr,
+ }
+ resp_ := &streamSocketWithCtxBindResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketBindOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Initiates a connection to a remote address.
+func (p *StreamSocketWithCtxInterface) Connect(ctx_ _bindings.Context, addr fuchsianet.SocketAddress) (BaseSocketConnectResult, error) {
+ req_ := &streamSocketWithCtxConnectRequest{
+ Addr: addr,
+ }
+ resp_ := &streamSocketWithCtxConnectResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketConnectOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Clears connection information from this socket.
+func (p *StreamSocketWithCtxInterface) Disconnect(ctx_ _bindings.Context) (BaseSocketDisconnectResult, error) {
+ var req_ _bindings.Message
+ resp_ := &streamSocketWithCtxDisconnectResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketDisconnectOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Retrieves the local socket address.
+func (p *StreamSocketWithCtxInterface) GetSockName(ctx_ _bindings.Context) (BaseSocketGetSockNameResult, error) {
+ var req_ _bindings.Message
+ resp_ := &streamSocketWithCtxGetSockNameResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketGetSockNameOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Retrieves the remote socket address.
+func (p *StreamSocketWithCtxInterface) GetPeerName(ctx_ _bindings.Context) (BaseSocketGetPeerNameResult, error) {
+ var req_ _bindings.Message
+ resp_ := &streamSocketWithCtxGetPeerNameResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketGetPeerNameOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Shuts down part of the socket.
+func (p *StreamSocketWithCtxInterface) Shutdown2(ctx_ _bindings.Context, mode ShutdownMode) (BaseSocketShutdown2Result, error) {
+ req_ := &streamSocketWithCtxShutdown2Request{
+ Mode: mode,
+ }
+ resp_ := &streamSocketWithCtxShutdown2Response{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketShutdown2Ordinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_SOCKET` -> `SO_REUSEADDR`.
+func (p *StreamSocketWithCtxInterface) SetReuseAddress(ctx_ _bindings.Context, value bool) (BaseSocketSetReuseAddressResult, error) {
+ req_ := &streamSocketWithCtxSetReuseAddressRequest{
+ Value: value,
+ }
+ resp_ := &streamSocketWithCtxSetReuseAddressResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketSetReuseAddressOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_SOCKET` -> `SO_REUSEADDR`.
+func (p *StreamSocketWithCtxInterface) GetReuseAddress(ctx_ _bindings.Context) (BaseSocketGetReuseAddressResult, error) {
+ var req_ _bindings.Message
+ resp_ := &streamSocketWithCtxGetReuseAddressResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketGetReuseAddressOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_SOCKET` -> `SO_ERROR`.
+// Returns the last error if there is an error set on the socket.
+func (p *StreamSocketWithCtxInterface) GetError(ctx_ _bindings.Context) (BaseSocketGetErrorResult, error) {
+ var req_ _bindings.Message
+ resp_ := &streamSocketWithCtxGetErrorResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketGetErrorOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_SOCKET` -> `SO_BROADCAST`.
+func (p *StreamSocketWithCtxInterface) SetBroadcast(ctx_ _bindings.Context, value bool) (BaseSocketSetBroadcastResult, error) {
+ req_ := &streamSocketWithCtxSetBroadcastRequest{
+ Value: value,
+ }
+ resp_ := &streamSocketWithCtxSetBroadcastResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketSetBroadcastOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_SOCKET` -> `SO_BROADCAST`.
+func (p *StreamSocketWithCtxInterface) GetBroadcast(ctx_ _bindings.Context) (BaseSocketGetBroadcastResult, error) {
+ var req_ _bindings.Message
+ resp_ := &streamSocketWithCtxGetBroadcastResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketGetBroadcastOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_SOCKET` -> `SO_SNDBUF`.
+func (p *StreamSocketWithCtxInterface) SetSendBuffer(ctx_ _bindings.Context, valueBytes uint64) (BaseSocketSetSendBufferResult, error) {
+ req_ := &streamSocketWithCtxSetSendBufferRequest{
+ ValueBytes: valueBytes,
+ }
+ resp_ := &streamSocketWithCtxSetSendBufferResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketSetSendBufferOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_SOCKET` -> `SO_SNDBUF`.
+func (p *StreamSocketWithCtxInterface) GetSendBuffer(ctx_ _bindings.Context) (BaseSocketGetSendBufferResult, error) {
+ var req_ _bindings.Message
+ resp_ := &streamSocketWithCtxGetSendBufferResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketGetSendBufferOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_SOCKET` -> `SO_RCVBUF`.
+func (p *StreamSocketWithCtxInterface) SetReceiveBuffer(ctx_ _bindings.Context, valueBytes uint64) (BaseSocketSetReceiveBufferResult, error) {
+ req_ := &streamSocketWithCtxSetReceiveBufferRequest{
+ ValueBytes: valueBytes,
+ }
+ resp_ := &streamSocketWithCtxSetReceiveBufferResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketSetReceiveBufferOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_SOCKET` -> `SO_RCVBUF`.
+func (p *StreamSocketWithCtxInterface) GetReceiveBuffer(ctx_ _bindings.Context) (BaseSocketGetReceiveBufferResult, error) {
+ var req_ _bindings.Message
+ resp_ := &streamSocketWithCtxGetReceiveBufferResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketGetReceiveBufferOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_SOCKET` -> `SO_KEEPALIVE`.
+func (p *StreamSocketWithCtxInterface) SetKeepAlive(ctx_ _bindings.Context, value bool) (BaseSocketSetKeepAliveResult, error) {
+ req_ := &streamSocketWithCtxSetKeepAliveRequest{
+ Value: value,
+ }
+ resp_ := &streamSocketWithCtxSetKeepAliveResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketSetKeepAliveOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_SOCKET` -> `SO_KEEPALIVE`.
+func (p *StreamSocketWithCtxInterface) GetKeepAlive(ctx_ _bindings.Context) (BaseSocketGetKeepAliveResult, error) {
+ var req_ _bindings.Message
+ resp_ := &streamSocketWithCtxGetKeepAliveResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketGetKeepAliveOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_SOCKET` -> `SO_OOBINLINE`.
+func (p *StreamSocketWithCtxInterface) SetOutOfBandInline(ctx_ _bindings.Context, value bool) (BaseSocketSetOutOfBandInlineResult, error) {
+ req_ := &streamSocketWithCtxSetOutOfBandInlineRequest{
+ Value: value,
+ }
+ resp_ := &streamSocketWithCtxSetOutOfBandInlineResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketSetOutOfBandInlineOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_SOCKET` -> `SO_OOBINLINE`.
+func (p *StreamSocketWithCtxInterface) GetOutOfBandInline(ctx_ _bindings.Context) (BaseSocketGetOutOfBandInlineResult, error) {
+ var req_ _bindings.Message
+ resp_ := &streamSocketWithCtxGetOutOfBandInlineResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketGetOutOfBandInlineOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_SOCKET` -> `SO_NO_CHECK`.
+func (p *StreamSocketWithCtxInterface) SetNoCheck(ctx_ _bindings.Context, value bool) (BaseSocketSetNoCheckResult, error) {
+ req_ := &streamSocketWithCtxSetNoCheckRequest{
+ Value: value,
+ }
+ resp_ := &streamSocketWithCtxSetNoCheckResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketSetNoCheckOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_SOCKET` -> `SO_NO_CHECK`.
+func (p *StreamSocketWithCtxInterface) GetNoCheck(ctx_ _bindings.Context) (BaseSocketGetNoCheckResult, error) {
+ var req_ _bindings.Message
+ resp_ := &streamSocketWithCtxGetNoCheckResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketGetNoCheckOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_SOCKET` -> `SO_LINGER`.
+func (p *StreamSocketWithCtxInterface) SetLinger(ctx_ _bindings.Context, linger bool, lengthSecs uint32) (BaseSocketSetLingerResult, error) {
+ req_ := &streamSocketWithCtxSetLingerRequest{
+ Linger: linger,
+ LengthSecs: lengthSecs,
+ }
+ resp_ := &streamSocketWithCtxSetLingerResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketSetLingerOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_SOCKET` -> `SO_LINGER`.
+func (p *StreamSocketWithCtxInterface) GetLinger(ctx_ _bindings.Context) (BaseSocketGetLingerResult, error) {
+ var req_ _bindings.Message
+ resp_ := &streamSocketWithCtxGetLingerResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketGetLingerOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_SOCKET` -> `SO_REUSEPORT`.
+func (p *StreamSocketWithCtxInterface) SetReusePort(ctx_ _bindings.Context, value bool) (BaseSocketSetReusePortResult, error) {
+ req_ := &streamSocketWithCtxSetReusePortRequest{
+ Value: value,
+ }
+ resp_ := &streamSocketWithCtxSetReusePortResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketSetReusePortOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_SOCKET` -> `SO_REUSEPORT`.
+func (p *StreamSocketWithCtxInterface) GetReusePort(ctx_ _bindings.Context) (BaseSocketGetReusePortResult, error) {
+ var req_ _bindings.Message
+ resp_ := &streamSocketWithCtxGetReusePortResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketGetReusePortOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_SOCKET` -> `SO_ACCEPTCONN`.
+func (p *StreamSocketWithCtxInterface) GetAcceptConn(ctx_ _bindings.Context) (BaseSocketGetAcceptConnResult, error) {
+ var req_ _bindings.Message
+ resp_ := &streamSocketWithCtxGetAcceptConnResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketGetAcceptConnOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_SOCKET` -> `SO_BINDTODEVICE`.
+func (p *StreamSocketWithCtxInterface) SetBindToDevice(ctx_ _bindings.Context, value string) (BaseSocketSetBindToDeviceResult, error) {
+ req_ := &streamSocketWithCtxSetBindToDeviceRequest{
+ Value: value,
+ }
+ resp_ := &streamSocketWithCtxSetBindToDeviceResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketSetBindToDeviceOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_SOCKET` -> `SO_BINDTODEVICE`.
+func (p *StreamSocketWithCtxInterface) GetBindToDevice(ctx_ _bindings.Context) (BaseSocketGetBindToDeviceResult, error) {
+ var req_ _bindings.Message
+ resp_ := &streamSocketWithCtxGetBindToDeviceResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketGetBindToDeviceOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_SOCKET` -> `SO_TIMESTAMP`.
+func (p *StreamSocketWithCtxInterface) SetTimestamp(ctx_ _bindings.Context, value bool) (BaseSocketSetTimestampResult, error) {
+ req_ := &streamSocketWithCtxSetTimestampRequest{
+ Value: value,
+ }
+ resp_ := &streamSocketWithCtxSetTimestampResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketSetTimestampOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_SOCKET` -> `SO_TIMESTAMP`.
+func (p *StreamSocketWithCtxInterface) GetTimestamp(ctx_ _bindings.Context) (BaseSocketGetTimestampResult, error) {
+ var req_ _bindings.Message
+ resp_ := &streamSocketWithCtxGetTimestampResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketGetTimestampOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IP` -> `IP_TOS`.
+func (p *StreamSocketWithCtxInterface) SetIpTypeOfService(ctx_ _bindings.Context, value uint8) (BaseSocketSetIpTypeOfServiceResult, error) {
+ req_ := &streamSocketWithCtxSetIpTypeOfServiceRequest{
+ Value: value,
+ }
+ resp_ := &streamSocketWithCtxSetIpTypeOfServiceResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketSetIpTypeOfServiceOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_IP` -> `IP_TOS`.
+func (p *StreamSocketWithCtxInterface) GetIpTypeOfService(ctx_ _bindings.Context) (BaseSocketGetIpTypeOfServiceResult, error) {
+ var req_ _bindings.Message
+ resp_ := &streamSocketWithCtxGetIpTypeOfServiceResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketGetIpTypeOfServiceOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IP` -> `IP_TTL`.
+func (p *StreamSocketWithCtxInterface) SetIpTtl(ctx_ _bindings.Context, value OptionalUint8) (BaseSocketSetIpTtlResult, error) {
+ req_ := &streamSocketWithCtxSetIpTtlRequest{
+ Value: value,
+ }
+ resp_ := &streamSocketWithCtxSetIpTtlResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketSetIpTtlOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_IP` -> `IP_TTL`.
+func (p *StreamSocketWithCtxInterface) GetIpTtl(ctx_ _bindings.Context) (BaseSocketGetIpTtlResult, error) {
+ var req_ _bindings.Message
+ resp_ := &streamSocketWithCtxGetIpTtlResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketGetIpTtlOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IP` -> `IP_PKTINFO`.
+func (p *StreamSocketWithCtxInterface) SetIpPacketInfo(ctx_ _bindings.Context, value bool) (BaseSocketSetIpPacketInfoResult, error) {
+ req_ := &streamSocketWithCtxSetIpPacketInfoRequest{
+ Value: value,
+ }
+ resp_ := &streamSocketWithCtxSetIpPacketInfoResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketSetIpPacketInfoOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_IP` -> `IP_PKTINFO`.
+func (p *StreamSocketWithCtxInterface) GetIpPacketInfo(ctx_ _bindings.Context) (BaseSocketGetIpPacketInfoResult, error) {
+ var req_ _bindings.Message
+ resp_ := &streamSocketWithCtxGetIpPacketInfoResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketGetIpPacketInfoOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IP` -> `IP_RECVTOS`.
+func (p *StreamSocketWithCtxInterface) SetIpReceiveTypeOfService(ctx_ _bindings.Context, value bool) (BaseSocketSetIpReceiveTypeOfServiceResult, error) {
+ req_ := &streamSocketWithCtxSetIpReceiveTypeOfServiceRequest{
+ Value: value,
+ }
+ resp_ := &streamSocketWithCtxSetIpReceiveTypeOfServiceResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketSetIpReceiveTypeOfServiceOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_IP` -> `IP_RECVTOS`.
+func (p *StreamSocketWithCtxInterface) GetIpReceiveTypeOfService(ctx_ _bindings.Context) (BaseSocketGetIpReceiveTypeOfServiceResult, error) {
+ var req_ _bindings.Message
+ resp_ := &streamSocketWithCtxGetIpReceiveTypeOfServiceResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketGetIpReceiveTypeOfServiceOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IP` -> `IP_MULTICAST_IF`.
+func (p *StreamSocketWithCtxInterface) SetIpMulticastInterface(ctx_ _bindings.Context, iface uint64, address fuchsianet.Ipv4Address) (BaseSocketSetIpMulticastInterfaceResult, error) {
+ req_ := &streamSocketWithCtxSetIpMulticastInterfaceRequest{
+ Iface: iface,
+ Address: address,
+ }
+ resp_ := &streamSocketWithCtxSetIpMulticastInterfaceResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketSetIpMulticastInterfaceOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_IP` -> `IP_MULTICAST_IF`.
+func (p *StreamSocketWithCtxInterface) GetIpMulticastInterface(ctx_ _bindings.Context) (BaseSocketGetIpMulticastInterfaceResult, error) {
+ var req_ _bindings.Message
+ resp_ := &streamSocketWithCtxGetIpMulticastInterfaceResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketGetIpMulticastInterfaceOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IP` -> `IP_MULTICAST_TTL`.
+func (p *StreamSocketWithCtxInterface) SetIpMulticastTtl(ctx_ _bindings.Context, value OptionalUint8) (BaseSocketSetIpMulticastTtlResult, error) {
+ req_ := &streamSocketWithCtxSetIpMulticastTtlRequest{
+ Value: value,
+ }
+ resp_ := &streamSocketWithCtxSetIpMulticastTtlResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketSetIpMulticastTtlOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_IP` -> `IP_MULTICAST_TTL`.
+func (p *StreamSocketWithCtxInterface) GetIpMulticastTtl(ctx_ _bindings.Context) (BaseSocketGetIpMulticastTtlResult, error) {
+ var req_ _bindings.Message
+ resp_ := &streamSocketWithCtxGetIpMulticastTtlResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketGetIpMulticastTtlOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IP` -> `IP_MULTICAST_LOOP`.
+func (p *StreamSocketWithCtxInterface) SetIpMulticastLoopback(ctx_ _bindings.Context, value bool) (BaseSocketSetIpMulticastLoopbackResult, error) {
+ req_ := &streamSocketWithCtxSetIpMulticastLoopbackRequest{
+ Value: value,
+ }
+ resp_ := &streamSocketWithCtxSetIpMulticastLoopbackResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketSetIpMulticastLoopbackOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_IP` -> `IP_MULTICAST_LOOP`.
+func (p *StreamSocketWithCtxInterface) GetIpMulticastLoopback(ctx_ _bindings.Context) (BaseSocketGetIpMulticastLoopbackResult, error) {
+ var req_ _bindings.Message
+ resp_ := &streamSocketWithCtxGetIpMulticastLoopbackResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketGetIpMulticastLoopbackOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IP` -> `IP_ADD_MEMBERSHIP`
+func (p *StreamSocketWithCtxInterface) AddIpMembership(ctx_ _bindings.Context, membership IpMulticastMembership) (BaseSocketAddIpMembershipResult, error) {
+ req_ := &streamSocketWithCtxAddIpMembershipRequest{
+ Membership: membership,
+ }
+ resp_ := &streamSocketWithCtxAddIpMembershipResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketAddIpMembershipOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IP` -> `IP_DROP_MEMBERSHIP`
+func (p *StreamSocketWithCtxInterface) DropIpMembership(ctx_ _bindings.Context, membership IpMulticastMembership) (BaseSocketDropIpMembershipResult, error) {
+ req_ := &streamSocketWithCtxDropIpMembershipRequest{
+ Membership: membership,
+ }
+ resp_ := &streamSocketWithCtxDropIpMembershipResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketDropIpMembershipOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IPV6` -> `IPV6_ADD_MEMBERSHIP`.
+func (p *StreamSocketWithCtxInterface) AddIpv6Membership(ctx_ _bindings.Context, membership Ipv6MulticastMembership) (BaseSocketAddIpv6MembershipResult, error) {
+ req_ := &streamSocketWithCtxAddIpv6MembershipRequest{
+ Membership: membership,
+ }
+ resp_ := &streamSocketWithCtxAddIpv6MembershipResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketAddIpv6MembershipOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IPV6` -> `IPV6_DROP_MEMBERSHIP`.
+func (p *StreamSocketWithCtxInterface) DropIpv6Membership(ctx_ _bindings.Context, membership Ipv6MulticastMembership) (BaseSocketDropIpv6MembershipResult, error) {
+ req_ := &streamSocketWithCtxDropIpv6MembershipRequest{
+ Membership: membership,
+ }
+ resp_ := &streamSocketWithCtxDropIpv6MembershipResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketDropIpv6MembershipOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
+func (p *StreamSocketWithCtxInterface) SetIpv6MulticastInterface(ctx_ _bindings.Context, value uint64) (BaseSocketSetIpv6MulticastInterfaceResult, error) {
+ req_ := &streamSocketWithCtxSetIpv6MulticastInterfaceRequest{
+ Value: value,
+ }
+ resp_ := &streamSocketWithCtxSetIpv6MulticastInterfaceResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketSetIpv6MulticastInterfaceOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
+func (p *StreamSocketWithCtxInterface) GetIpv6MulticastInterface(ctx_ _bindings.Context) (BaseSocketGetIpv6MulticastInterfaceResult, error) {
+ var req_ _bindings.Message
+ resp_ := &streamSocketWithCtxGetIpv6MulticastInterfaceResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketGetIpv6MulticastInterfaceOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
+func (p *StreamSocketWithCtxInterface) SetIpv6MulticastHops(ctx_ _bindings.Context, value OptionalUint8) (BaseSocketSetIpv6MulticastHopsResult, error) {
+ req_ := &streamSocketWithCtxSetIpv6MulticastHopsRequest{
+ Value: value,
+ }
+ resp_ := &streamSocketWithCtxSetIpv6MulticastHopsResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketSetIpv6MulticastHopsOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
+func (p *StreamSocketWithCtxInterface) GetIpv6MulticastHops(ctx_ _bindings.Context) (BaseSocketGetIpv6MulticastHopsResult, error) {
+ var req_ _bindings.Message
+ resp_ := &streamSocketWithCtxGetIpv6MulticastHopsResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketGetIpv6MulticastHopsOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
+func (p *StreamSocketWithCtxInterface) SetIpv6MulticastLoopback(ctx_ _bindings.Context, value bool) (BaseSocketSetIpv6MulticastLoopbackResult, error) {
+ req_ := &streamSocketWithCtxSetIpv6MulticastLoopbackRequest{
+ Value: value,
+ }
+ resp_ := &streamSocketWithCtxSetIpv6MulticastLoopbackResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketSetIpv6MulticastLoopbackOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
+func (p *StreamSocketWithCtxInterface) GetIpv6MulticastLoopback(ctx_ _bindings.Context) (BaseSocketGetIpv6MulticastLoopbackResult, error) {
+ var req_ _bindings.Message
+ resp_ := &streamSocketWithCtxGetIpv6MulticastLoopbackResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketGetIpv6MulticastLoopbackOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IPV6` -> `IPV6_V6ONLY`.
+func (p *StreamSocketWithCtxInterface) SetIpv6Only(ctx_ _bindings.Context, value bool) (BaseSocketSetIpv6OnlyResult, error) {
+ req_ := &streamSocketWithCtxSetIpv6OnlyRequest{
+ Value: value,
+ }
+ resp_ := &streamSocketWithCtxSetIpv6OnlyResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketSetIpv6OnlyOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_IPV6` -> `IPV6_V6ONLY`.
+func (p *StreamSocketWithCtxInterface) GetIpv6Only(ctx_ _bindings.Context) (BaseSocketGetIpv6OnlyResult, error) {
+ var req_ _bindings.Message
+ resp_ := &streamSocketWithCtxGetIpv6OnlyResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketGetIpv6OnlyOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IPV6` -> `IPV6_RECVTCLASS`.
+func (p *StreamSocketWithCtxInterface) SetIpv6ReceiveTrafficClass(ctx_ _bindings.Context, value bool) (BaseSocketSetIpv6ReceiveTrafficClassResult, error) {
+ req_ := &streamSocketWithCtxSetIpv6ReceiveTrafficClassRequest{
+ Value: value,
+ }
+ resp_ := &streamSocketWithCtxSetIpv6ReceiveTrafficClassResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketSetIpv6ReceiveTrafficClassOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_IPV6` -> `IPV6_RECVTCLASS`.
+func (p *StreamSocketWithCtxInterface) GetIpv6ReceiveTrafficClass(ctx_ _bindings.Context) (BaseSocketGetIpv6ReceiveTrafficClassResult, error) {
+ var req_ _bindings.Message
+ resp_ := &streamSocketWithCtxGetIpv6ReceiveTrafficClassResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketGetIpv6ReceiveTrafficClassOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_IPV6` -> `IPV6_TCLASS`
+func (p *StreamSocketWithCtxInterface) SetIpv6TrafficClass(ctx_ _bindings.Context, value OptionalUint8) (BaseSocketSetIpv6TrafficClassResult, error) {
+ req_ := &streamSocketWithCtxSetIpv6TrafficClassRequest{
+ Value: value,
+ }
+ resp_ := &streamSocketWithCtxSetIpv6TrafficClassResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketSetIpv6TrafficClassOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_IPV6` -> `IPV6_TCLASS`.
+func (p *StreamSocketWithCtxInterface) GetIpv6TrafficClass(ctx_ _bindings.Context) (BaseSocketGetIpv6TrafficClassResult, error) {
+ var req_ _bindings.Message
+ resp_ := &streamSocketWithCtxGetIpv6TrafficClassResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketGetIpv6TrafficClassOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Begins listening for new incoming connections. At most `backlog` connections will be
+// buffered.
+func (p *StreamSocketWithCtxInterface) Listen(ctx_ _bindings.Context, backlog int16) (StreamSocketListenResult, error) {
+ req_ := &streamSocketWithCtxListenRequest{
+ Backlog: backlog,
+ }
+ resp_ := &streamSocketWithCtxListenResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketListenOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Accepts a buffered incoming connection.
+func (p *StreamSocketWithCtxInterface) Accept(ctx_ _bindings.Context, wantAddr bool) (StreamSocketAcceptResult, error) {
+ req_ := &streamSocketWithCtxAcceptRequest{
+ WantAddr: wantAddr,
+ }
+ resp_ := &streamSocketWithCtxAcceptResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketAcceptOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Retrieves creation information from the socket.
+func (p *StreamSocketWithCtxInterface) GetInfo(ctx_ _bindings.Context) (StreamSocketGetInfoResult, error) {
+ var req_ _bindings.Message
+ resp_ := &streamSocketWithCtxGetInfoResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketGetInfoOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_TCP` -> `TCP_NODELAY`.
+func (p *StreamSocketWithCtxInterface) SetTcpNoDelay(ctx_ _bindings.Context, value bool) (StreamSocketSetTcpNoDelayResult, error) {
+ req_ := &streamSocketWithCtxSetTcpNoDelayRequest{
+ Value: value,
+ }
+ resp_ := &streamSocketWithCtxSetTcpNoDelayResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketSetTcpNoDelayOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_TCP` -> `TCP_NODELAY`.
+func (p *StreamSocketWithCtxInterface) GetTcpNoDelay(ctx_ _bindings.Context) (StreamSocketGetTcpNoDelayResult, error) {
+ var req_ _bindings.Message
+ resp_ := &streamSocketWithCtxGetTcpNoDelayResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketGetTcpNoDelayOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_TCP` -> `TCP_MAXSEG`.
+func (p *StreamSocketWithCtxInterface) SetTcpMaxSegment(ctx_ _bindings.Context, valueBytes uint32) (StreamSocketSetTcpMaxSegmentResult, error) {
+ req_ := &streamSocketWithCtxSetTcpMaxSegmentRequest{
+ ValueBytes: valueBytes,
+ }
+ resp_ := &streamSocketWithCtxSetTcpMaxSegmentResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketSetTcpMaxSegmentOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_TCP` -> `TCP_MAXSEG`.
+func (p *StreamSocketWithCtxInterface) GetTcpMaxSegment(ctx_ _bindings.Context) (StreamSocketGetTcpMaxSegmentResult, error) {
+ var req_ _bindings.Message
+ resp_ := &streamSocketWithCtxGetTcpMaxSegmentResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketGetTcpMaxSegmentOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_TCP` -> `TCP_CORK`.
+func (p *StreamSocketWithCtxInterface) SetTcpCork(ctx_ _bindings.Context, value bool) (StreamSocketSetTcpCorkResult, error) {
+ req_ := &streamSocketWithCtxSetTcpCorkRequest{
+ Value: value,
+ }
+ resp_ := &streamSocketWithCtxSetTcpCorkResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketSetTcpCorkOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_TCP` -> `TCP_CORK`.
+func (p *StreamSocketWithCtxInterface) GetTcpCork(ctx_ _bindings.Context) (StreamSocketGetTcpCorkResult, error) {
+ var req_ _bindings.Message
+ resp_ := &streamSocketWithCtxGetTcpCorkResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketGetTcpCorkOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_TCP` -> `TCP_KEEPIDLE`.
+func (p *StreamSocketWithCtxInterface) SetTcpKeepAliveIdle(ctx_ _bindings.Context, valueSecs uint32) (StreamSocketSetTcpKeepAliveIdleResult, error) {
+ req_ := &streamSocketWithCtxSetTcpKeepAliveIdleRequest{
+ ValueSecs: valueSecs,
+ }
+ resp_ := &streamSocketWithCtxSetTcpKeepAliveIdleResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketSetTcpKeepAliveIdleOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_TCP` -> `TCP_KEEPIDLE`.
+func (p *StreamSocketWithCtxInterface) GetTcpKeepAliveIdle(ctx_ _bindings.Context) (StreamSocketGetTcpKeepAliveIdleResult, error) {
+ var req_ _bindings.Message
+ resp_ := &streamSocketWithCtxGetTcpKeepAliveIdleResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketGetTcpKeepAliveIdleOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_TCP` -> `TCP_KEEPINTVL`.
+func (p *StreamSocketWithCtxInterface) SetTcpKeepAliveInterval(ctx_ _bindings.Context, valueSecs uint32) (StreamSocketSetTcpKeepAliveIntervalResult, error) {
+ req_ := &streamSocketWithCtxSetTcpKeepAliveIntervalRequest{
+ ValueSecs: valueSecs,
+ }
+ resp_ := &streamSocketWithCtxSetTcpKeepAliveIntervalResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketSetTcpKeepAliveIntervalOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_TCP` -> `TCP_KEEPINTVL`.
+func (p *StreamSocketWithCtxInterface) GetTcpKeepAliveInterval(ctx_ _bindings.Context) (StreamSocketGetTcpKeepAliveIntervalResult, error) {
+ var req_ _bindings.Message
+ resp_ := &streamSocketWithCtxGetTcpKeepAliveIntervalResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketGetTcpKeepAliveIntervalOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_TCP` -> `TCP_KEEPCNT`.
+func (p *StreamSocketWithCtxInterface) SetTcpKeepAliveCount(ctx_ _bindings.Context, value uint32) (StreamSocketSetTcpKeepAliveCountResult, error) {
+ req_ := &streamSocketWithCtxSetTcpKeepAliveCountRequest{
+ Value: value,
+ }
+ resp_ := &streamSocketWithCtxSetTcpKeepAliveCountResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketSetTcpKeepAliveCountOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_TCP` -> `TCP_KEEPCNT`.
+func (p *StreamSocketWithCtxInterface) GetTcpKeepAliveCount(ctx_ _bindings.Context) (StreamSocketGetTcpKeepAliveCountResult, error) {
+ var req_ _bindings.Message
+ resp_ := &streamSocketWithCtxGetTcpKeepAliveCountResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketGetTcpKeepAliveCountOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_TCP` -> `TCP_SYNCNT`.
+func (p *StreamSocketWithCtxInterface) SetTcpSynCount(ctx_ _bindings.Context, value uint32) (StreamSocketSetTcpSynCountResult, error) {
+ req_ := &streamSocketWithCtxSetTcpSynCountRequest{
+ Value: value,
+ }
+ resp_ := &streamSocketWithCtxSetTcpSynCountResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketSetTcpSynCountOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_TCP` -> `TCP_SYNCNT`.
+func (p *StreamSocketWithCtxInterface) GetTcpSynCount(ctx_ _bindings.Context) (StreamSocketGetTcpSynCountResult, error) {
+ var req_ _bindings.Message
+ resp_ := &streamSocketWithCtxGetTcpSynCountResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketGetTcpSynCountOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_TCP` -> `TCP_LINGER2`.
+func (p *StreamSocketWithCtxInterface) SetTcpLinger(ctx_ _bindings.Context, valueSecs OptionalUint32) (StreamSocketSetTcpLingerResult, error) {
+ req_ := &streamSocketWithCtxSetTcpLingerRequest{
+ ValueSecs: valueSecs,
+ }
+ resp_ := &streamSocketWithCtxSetTcpLingerResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketSetTcpLingerOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_TCP` -> `TCP_LINGER2`.
+func (p *StreamSocketWithCtxInterface) GetTcpLinger(ctx_ _bindings.Context) (StreamSocketGetTcpLingerResult, error) {
+ var req_ _bindings.Message
+ resp_ := &streamSocketWithCtxGetTcpLingerResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketGetTcpLingerOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_TCP` -> `TCP_DEFER_ACCEPT`.
+func (p *StreamSocketWithCtxInterface) SetTcpDeferAccept(ctx_ _bindings.Context, valueSecs uint32) (StreamSocketSetTcpDeferAcceptResult, error) {
+ req_ := &streamSocketWithCtxSetTcpDeferAcceptRequest{
+ ValueSecs: valueSecs,
+ }
+ resp_ := &streamSocketWithCtxSetTcpDeferAcceptResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketSetTcpDeferAcceptOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_TCP` -> `TCP_DEFER_ACCEPT`.
+func (p *StreamSocketWithCtxInterface) GetTcpDeferAccept(ctx_ _bindings.Context) (StreamSocketGetTcpDeferAcceptResult, error) {
+ var req_ _bindings.Message
+ resp_ := &streamSocketWithCtxGetTcpDeferAcceptResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketGetTcpDeferAcceptOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_TCP` -> `TCP_WINDOW_CLAMP`.
+func (p *StreamSocketWithCtxInterface) SetTcpWindowClamp(ctx_ _bindings.Context, value uint32) (StreamSocketSetTcpWindowClampResult, error) {
+ req_ := &streamSocketWithCtxSetTcpWindowClampRequest{
+ Value: value,
+ }
+ resp_ := &streamSocketWithCtxSetTcpWindowClampResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketSetTcpWindowClampOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_TCP` -> `TCP_WINDOW_CLAMP`.
+func (p *StreamSocketWithCtxInterface) GetTcpWindowClamp(ctx_ _bindings.Context) (StreamSocketGetTcpWindowClampResult, error) {
+ var req_ _bindings.Message
+ resp_ := &streamSocketWithCtxGetTcpWindowClampResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketGetTcpWindowClampOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_TCP` -> `TCP_INFO`.
+func (p *StreamSocketWithCtxInterface) GetTcpInfo(ctx_ _bindings.Context) (StreamSocketGetTcpInfoResult, error) {
+ var req_ _bindings.Message
+ resp_ := &streamSocketWithCtxGetTcpInfoResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketGetTcpInfoOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_TCP` -> `TCP_QUICKACK`.
+func (p *StreamSocketWithCtxInterface) SetTcpQuickAck(ctx_ _bindings.Context, value bool) (StreamSocketSetTcpQuickAckResult, error) {
+ req_ := &streamSocketWithCtxSetTcpQuickAckRequest{
+ Value: value,
+ }
+ resp_ := &streamSocketWithCtxSetTcpQuickAckResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketSetTcpQuickAckOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_TCP` -> `TCP_QUICKACK`.
+func (p *StreamSocketWithCtxInterface) GetTcpQuickAck(ctx_ _bindings.Context) (StreamSocketGetTcpQuickAckResult, error) {
+ var req_ _bindings.Message
+ resp_ := &streamSocketWithCtxGetTcpQuickAckResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketGetTcpQuickAckOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_TCP` -> `TCP_CONGESTION`.
+func (p *StreamSocketWithCtxInterface) SetTcpCongestion(ctx_ _bindings.Context, value TcpCongestionControl) (StreamSocketSetTcpCongestionResult, error) {
+ req_ := &streamSocketWithCtxSetTcpCongestionRequest{
+ Value: value,
+ }
+ resp_ := &streamSocketWithCtxSetTcpCongestionResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketSetTcpCongestionOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_TCP` -> `TCP_CONGESTION`.
+func (p *StreamSocketWithCtxInterface) GetTcpCongestion(ctx_ _bindings.Context) (StreamSocketGetTcpCongestionResult, error) {
+ var req_ _bindings.Message
+ resp_ := &streamSocketWithCtxGetTcpCongestionResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketGetTcpCongestionOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Set `SOL_TCP` -> `TCP_USER_TIMEOUT`.
+func (p *StreamSocketWithCtxInterface) SetTcpUserTimeout(ctx_ _bindings.Context, valueMillis uint32) (StreamSocketSetTcpUserTimeoutResult, error) {
+ req_ := &streamSocketWithCtxSetTcpUserTimeoutRequest{
+ ValueMillis: valueMillis,
+ }
+ resp_ := &streamSocketWithCtxSetTcpUserTimeoutResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketSetTcpUserTimeoutOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Get `SOL_TCP` -> `TCP_USER_TIMEOUT`.
+func (p *StreamSocketWithCtxInterface) GetTcpUserTimeout(ctx_ _bindings.Context) (StreamSocketGetTcpUserTimeoutResult, error) {
+ var req_ _bindings.Message
+ resp_ := &streamSocketWithCtxGetTcpUserTimeoutResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(StreamSocketGetTcpUserTimeoutOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// A stream socket.
+//
+// This type's [`fuchsia.io.Node/Describe`] method returns a socket which is used to transfer data
+// to and from the caller. Signals are used to communicate additional information about the state
+// of the socket such as connectedness and the presence of incoming connections in the case of a
+// listening socket.
+//
+// All methods on this type are nonblocking; their exact behaviors match their Linux counterparts.
+type StreamSocketWithCtx interface {
+ // Create another connection to the same remote object.
+ //
+ // `flags` may be any of:
+ //
+ // - `OPEN_RIGHT_*`
+ // - `OPEN_FLAG_APPEND`
+ // - `OPEN_FLAG_NO_REMOTE`
+ // - `OPEN_FLAG_DESCRIBE`
+ // - `CLONE_FLAG_SAME_RIGHTS`
+ //
+ // All other flags are ignored.
+ //
+ // The `OPEN_RIGHT_*` bits in `flags` request corresponding rights over the resulting
+ // cloned object.
+ // The cloned object must have rights less than or equal to the original object, otherwise
+ // returns `ZX_ERR_ACCESS_DENIED`.
+ // Alternatively, pass `CLONE_FLAG_SAME_RIGHTS` to inherit the rights on the source connection.
+ // It is invalid to pass any of the `OPEN_RIGHT_*` flags together with
+ // `CLONE_FLAG_SAME_RIGHTS`.
+ Clone(ctx_ _bindings.Context, flags uint32, object fuchsiaio.NodeWithCtxInterfaceRequest) error
+ // Terminates connection with object.
+ //
+ // This method does not require any rights.
+ Close(ctx_ _bindings.Context) (int32, error)
+ // Returns extra information about the type of the object.
+ // If the `Describe` operation fails, the connection is closed.
+ //
+ // This method does not require any rights.
+ Describe(ctx_ _bindings.Context) (fuchsiaio.NodeInfo, error)
+ // An event produced eagerly by a FIDL server if requested by `OPEN_FLAG_DESCRIBE`.
+ //
+ // Indicates the success or failure of the open operation, and optionally describes the
+ // object. If the status is `ZX_OK`, `info` contains descriptive information about the object
+ // (the same as would be returned by `Describe`).
+ // Synchronizes updates to the node to the underlying media, if it exists.
+ //
+ // This method does not require any rights.
+ Sync(ctx_ _bindings.Context) (int32, error)
+ // Acquires information about the node.
+ //
+ // This method does not require any rights.
+ GetAttr(ctx_ _bindings.Context) (int32, fuchsiaio.NodeAttributes, error)
+ // Updates information about the node.
+ // `flags` may be any of `NODE_ATTRIBUTE_FLAG_*`.
+ //
+ // This method requires following rights: `OPEN_RIGHT_WRITABLE`, otherwise returns
+ // `ZX_ERR_BAD_HANDLE`.
+ SetAttr(ctx_ _bindings.Context, flags uint32, attributes fuchsiaio.NodeAttributes) (int32, error)
+ // Acquires the `Directory.Open` rights and flags used to access this file.
+ //
+ // This method does not require any rights.
+ // This method has the same functionality as GetFlags for File and is
+ // meant as an in-progress replacement.
+ NodeGetFlags(ctx_ _bindings.Context) (int32, uint32, error)
+ // Changes the `Directory.Open` flags used to access the file.
+ // Supported flags which can be turned on / off:
+ // - `OPEN_FLAG_APPEND`
+ //
+ // This method does not require any rights.
+ // This method has the same functionality as SetFlags for File and is
+ // meant as an in-progress replacement.
+ NodeSetFlags(ctx_ _bindings.Context, flags uint32) (int32, error)
+ // Sets the local address used for the socket.
+ Bind(ctx_ _bindings.Context, addr fuchsianet.SocketAddress) (BaseSocketBindResult, error)
+ // Initiates a connection to a remote address.
+ Connect(ctx_ _bindings.Context, addr fuchsianet.SocketAddress) (BaseSocketConnectResult, error)
+ // Clears connection information from this socket.
+ Disconnect(ctx_ _bindings.Context) (BaseSocketDisconnectResult, error)
+ // Retrieves the local socket address.
+ GetSockName(ctx_ _bindings.Context) (BaseSocketGetSockNameResult, error)
+ // Retrieves the remote socket address.
+ GetPeerName(ctx_ _bindings.Context) (BaseSocketGetPeerNameResult, error)
+ // Shuts down part of the socket.
+ Shutdown2(ctx_ _bindings.Context, mode ShutdownMode) (BaseSocketShutdown2Result, error)
+ // Set `SOL_SOCKET` -> `SO_REUSEADDR`.
+ SetReuseAddress(ctx_ _bindings.Context, value bool) (BaseSocketSetReuseAddressResult, error)
+ // Get `SOL_SOCKET` -> `SO_REUSEADDR`.
+ GetReuseAddress(ctx_ _bindings.Context) (BaseSocketGetReuseAddressResult, error)
+ // Get `SOL_SOCKET` -> `SO_ERROR`.
+ // Returns the last error if there is an error set on the socket.
+ GetError(ctx_ _bindings.Context) (BaseSocketGetErrorResult, error)
+ // Set `SOL_SOCKET` -> `SO_BROADCAST`.
+ SetBroadcast(ctx_ _bindings.Context, value bool) (BaseSocketSetBroadcastResult, error)
+ // Get `SOL_SOCKET` -> `SO_BROADCAST`.
+ GetBroadcast(ctx_ _bindings.Context) (BaseSocketGetBroadcastResult, error)
+ // Set `SOL_SOCKET` -> `SO_SNDBUF`.
+ SetSendBuffer(ctx_ _bindings.Context, valueBytes uint64) (BaseSocketSetSendBufferResult, error)
+ // Get `SOL_SOCKET` -> `SO_SNDBUF`.
+ GetSendBuffer(ctx_ _bindings.Context) (BaseSocketGetSendBufferResult, error)
+ // Set `SOL_SOCKET` -> `SO_RCVBUF`.
+ SetReceiveBuffer(ctx_ _bindings.Context, valueBytes uint64) (BaseSocketSetReceiveBufferResult, error)
+ // Get `SOL_SOCKET` -> `SO_RCVBUF`.
+ GetReceiveBuffer(ctx_ _bindings.Context) (BaseSocketGetReceiveBufferResult, error)
+ // Set `SOL_SOCKET` -> `SO_KEEPALIVE`.
+ SetKeepAlive(ctx_ _bindings.Context, value bool) (BaseSocketSetKeepAliveResult, error)
+ // Get `SOL_SOCKET` -> `SO_KEEPALIVE`.
+ GetKeepAlive(ctx_ _bindings.Context) (BaseSocketGetKeepAliveResult, error)
+ // Set `SOL_SOCKET` -> `SO_OOBINLINE`.
+ SetOutOfBandInline(ctx_ _bindings.Context, value bool) (BaseSocketSetOutOfBandInlineResult, error)
+ // Get `SOL_SOCKET` -> `SO_OOBINLINE`.
+ GetOutOfBandInline(ctx_ _bindings.Context) (BaseSocketGetOutOfBandInlineResult, error)
+ // Set `SOL_SOCKET` -> `SO_NO_CHECK`.
+ SetNoCheck(ctx_ _bindings.Context, value bool) (BaseSocketSetNoCheckResult, error)
+ // Get `SOL_SOCKET` -> `SO_NO_CHECK`.
+ GetNoCheck(ctx_ _bindings.Context) (BaseSocketGetNoCheckResult, error)
+ // Set `SOL_SOCKET` -> `SO_LINGER`.
+ SetLinger(ctx_ _bindings.Context, linger bool, lengthSecs uint32) (BaseSocketSetLingerResult, error)
+ // Get `SOL_SOCKET` -> `SO_LINGER`.
+ GetLinger(ctx_ _bindings.Context) (BaseSocketGetLingerResult, error)
+ // Set `SOL_SOCKET` -> `SO_REUSEPORT`.
+ SetReusePort(ctx_ _bindings.Context, value bool) (BaseSocketSetReusePortResult, error)
+ // Get `SOL_SOCKET` -> `SO_REUSEPORT`.
+ GetReusePort(ctx_ _bindings.Context) (BaseSocketGetReusePortResult, error)
+ // Get `SOL_SOCKET` -> `SO_ACCEPTCONN`.
+ GetAcceptConn(ctx_ _bindings.Context) (BaseSocketGetAcceptConnResult, error)
+ // Set `SOL_SOCKET` -> `SO_BINDTODEVICE`.
+ SetBindToDevice(ctx_ _bindings.Context, value string) (BaseSocketSetBindToDeviceResult, error)
+ // Get `SOL_SOCKET` -> `SO_BINDTODEVICE`.
+ GetBindToDevice(ctx_ _bindings.Context) (BaseSocketGetBindToDeviceResult, error)
+ // Set `SOL_SOCKET` -> `SO_TIMESTAMP`.
+ SetTimestamp(ctx_ _bindings.Context, value bool) (BaseSocketSetTimestampResult, error)
+ // Get `SOL_SOCKET` -> `SO_TIMESTAMP`.
+ GetTimestamp(ctx_ _bindings.Context) (BaseSocketGetTimestampResult, error)
+ // Set `SOL_IP` -> `IP_TOS`.
+ SetIpTypeOfService(ctx_ _bindings.Context, value uint8) (BaseSocketSetIpTypeOfServiceResult, error)
+ // Get `SOL_IP` -> `IP_TOS`.
+ GetIpTypeOfService(ctx_ _bindings.Context) (BaseSocketGetIpTypeOfServiceResult, error)
+ // Set `SOL_IP` -> `IP_TTL`.
+ SetIpTtl(ctx_ _bindings.Context, value OptionalUint8) (BaseSocketSetIpTtlResult, error)
+ // Get `SOL_IP` -> `IP_TTL`.
+ GetIpTtl(ctx_ _bindings.Context) (BaseSocketGetIpTtlResult, error)
+ // Set `SOL_IP` -> `IP_PKTINFO`.
+ SetIpPacketInfo(ctx_ _bindings.Context, value bool) (BaseSocketSetIpPacketInfoResult, error)
+ // Get `SOL_IP` -> `IP_PKTINFO`.
+ GetIpPacketInfo(ctx_ _bindings.Context) (BaseSocketGetIpPacketInfoResult, error)
+ // Set `SOL_IP` -> `IP_RECVTOS`.
+ SetIpReceiveTypeOfService(ctx_ _bindings.Context, value bool) (BaseSocketSetIpReceiveTypeOfServiceResult, error)
+ // Get `SOL_IP` -> `IP_RECVTOS`.
+ GetIpReceiveTypeOfService(ctx_ _bindings.Context) (BaseSocketGetIpReceiveTypeOfServiceResult, error)
+ // Set `SOL_IP` -> `IP_MULTICAST_IF`.
+ SetIpMulticastInterface(ctx_ _bindings.Context, iface uint64, address fuchsianet.Ipv4Address) (BaseSocketSetIpMulticastInterfaceResult, error)
+ // Get `SOL_IP` -> `IP_MULTICAST_IF`.
+ GetIpMulticastInterface(ctx_ _bindings.Context) (BaseSocketGetIpMulticastInterfaceResult, error)
+ // Set `SOL_IP` -> `IP_MULTICAST_TTL`.
+ SetIpMulticastTtl(ctx_ _bindings.Context, value OptionalUint8) (BaseSocketSetIpMulticastTtlResult, error)
+ // Get `SOL_IP` -> `IP_MULTICAST_TTL`.
+ GetIpMulticastTtl(ctx_ _bindings.Context) (BaseSocketGetIpMulticastTtlResult, error)
+ // Set `SOL_IP` -> `IP_MULTICAST_LOOP`.
+ SetIpMulticastLoopback(ctx_ _bindings.Context, value bool) (BaseSocketSetIpMulticastLoopbackResult, error)
+ // Get `SOL_IP` -> `IP_MULTICAST_LOOP`.
+ GetIpMulticastLoopback(ctx_ _bindings.Context) (BaseSocketGetIpMulticastLoopbackResult, error)
+ // Set `SOL_IP` -> `IP_ADD_MEMBERSHIP`
+ AddIpMembership(ctx_ _bindings.Context, membership IpMulticastMembership) (BaseSocketAddIpMembershipResult, error)
+ // Set `SOL_IP` -> `IP_DROP_MEMBERSHIP`
+ DropIpMembership(ctx_ _bindings.Context, membership IpMulticastMembership) (BaseSocketDropIpMembershipResult, error)
+ // Set `SOL_IPV6` -> `IPV6_ADD_MEMBERSHIP`.
+ AddIpv6Membership(ctx_ _bindings.Context, membership Ipv6MulticastMembership) (BaseSocketAddIpv6MembershipResult, error)
+ // Set `SOL_IPV6` -> `IPV6_DROP_MEMBERSHIP`.
+ DropIpv6Membership(ctx_ _bindings.Context, membership Ipv6MulticastMembership) (BaseSocketDropIpv6MembershipResult, error)
+ // Set `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
+ SetIpv6MulticastInterface(ctx_ _bindings.Context, value uint64) (BaseSocketSetIpv6MulticastInterfaceResult, error)
+ // Get `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
+ GetIpv6MulticastInterface(ctx_ _bindings.Context) (BaseSocketGetIpv6MulticastInterfaceResult, error)
+ // Set `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
+ SetIpv6MulticastHops(ctx_ _bindings.Context, value OptionalUint8) (BaseSocketSetIpv6MulticastHopsResult, error)
+ // Get `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
+ GetIpv6MulticastHops(ctx_ _bindings.Context) (BaseSocketGetIpv6MulticastHopsResult, error)
+ // Set `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
+ SetIpv6MulticastLoopback(ctx_ _bindings.Context, value bool) (BaseSocketSetIpv6MulticastLoopbackResult, error)
+ // Get `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
+ GetIpv6MulticastLoopback(ctx_ _bindings.Context) (BaseSocketGetIpv6MulticastLoopbackResult, error)
+ // Set `SOL_IPV6` -> `IPV6_V6ONLY`.
+ SetIpv6Only(ctx_ _bindings.Context, value bool) (BaseSocketSetIpv6OnlyResult, error)
+ // Get `SOL_IPV6` -> `IPV6_V6ONLY`.
+ GetIpv6Only(ctx_ _bindings.Context) (BaseSocketGetIpv6OnlyResult, error)
+ // Set `SOL_IPV6` -> `IPV6_RECVTCLASS`.
+ SetIpv6ReceiveTrafficClass(ctx_ _bindings.Context, value bool) (BaseSocketSetIpv6ReceiveTrafficClassResult, error)
+ // Get `SOL_IPV6` -> `IPV6_RECVTCLASS`.
+ GetIpv6ReceiveTrafficClass(ctx_ _bindings.Context) (BaseSocketGetIpv6ReceiveTrafficClassResult, error)
+ // Set `SOL_IPV6` -> `IPV6_TCLASS`
+ SetIpv6TrafficClass(ctx_ _bindings.Context, value OptionalUint8) (BaseSocketSetIpv6TrafficClassResult, error)
+ // Get `SOL_IPV6` -> `IPV6_TCLASS`.
+ GetIpv6TrafficClass(ctx_ _bindings.Context) (BaseSocketGetIpv6TrafficClassResult, error)
+ // Begins listening for new incoming connections. At most `backlog` connections will be
+ // buffered.
+ Listen(ctx_ _bindings.Context, backlog int16) (StreamSocketListenResult, error)
+ // Accepts a buffered incoming connection.
+ Accept(ctx_ _bindings.Context, wantAddr bool) (StreamSocketAcceptResult, error)
+ // Retrieves creation information from the socket.
+ GetInfo(ctx_ _bindings.Context) (StreamSocketGetInfoResult, error)
+ // Set `SOL_TCP` -> `TCP_NODELAY`.
+ SetTcpNoDelay(ctx_ _bindings.Context, value bool) (StreamSocketSetTcpNoDelayResult, error)
+ // Get `SOL_TCP` -> `TCP_NODELAY`.
+ GetTcpNoDelay(ctx_ _bindings.Context) (StreamSocketGetTcpNoDelayResult, error)
+ // Set `SOL_TCP` -> `TCP_MAXSEG`.
+ SetTcpMaxSegment(ctx_ _bindings.Context, valueBytes uint32) (StreamSocketSetTcpMaxSegmentResult, error)
+ // Get `SOL_TCP` -> `TCP_MAXSEG`.
+ GetTcpMaxSegment(ctx_ _bindings.Context) (StreamSocketGetTcpMaxSegmentResult, error)
+ // Set `SOL_TCP` -> `TCP_CORK`.
+ SetTcpCork(ctx_ _bindings.Context, value bool) (StreamSocketSetTcpCorkResult, error)
+ // Get `SOL_TCP` -> `TCP_CORK`.
+ GetTcpCork(ctx_ _bindings.Context) (StreamSocketGetTcpCorkResult, error)
+ // Set `SOL_TCP` -> `TCP_KEEPIDLE`.
+ SetTcpKeepAliveIdle(ctx_ _bindings.Context, valueSecs uint32) (StreamSocketSetTcpKeepAliveIdleResult, error)
+ // Get `SOL_TCP` -> `TCP_KEEPIDLE`.
+ GetTcpKeepAliveIdle(ctx_ _bindings.Context) (StreamSocketGetTcpKeepAliveIdleResult, error)
+ // Set `SOL_TCP` -> `TCP_KEEPINTVL`.
+ SetTcpKeepAliveInterval(ctx_ _bindings.Context, valueSecs uint32) (StreamSocketSetTcpKeepAliveIntervalResult, error)
+ // Get `SOL_TCP` -> `TCP_KEEPINTVL`.
+ GetTcpKeepAliveInterval(ctx_ _bindings.Context) (StreamSocketGetTcpKeepAliveIntervalResult, error)
+ // Set `SOL_TCP` -> `TCP_KEEPCNT`.
+ SetTcpKeepAliveCount(ctx_ _bindings.Context, value uint32) (StreamSocketSetTcpKeepAliveCountResult, error)
+ // Get `SOL_TCP` -> `TCP_KEEPCNT`.
+ GetTcpKeepAliveCount(ctx_ _bindings.Context) (StreamSocketGetTcpKeepAliveCountResult, error)
+ // Set `SOL_TCP` -> `TCP_SYNCNT`.
+ SetTcpSynCount(ctx_ _bindings.Context, value uint32) (StreamSocketSetTcpSynCountResult, error)
+ // Get `SOL_TCP` -> `TCP_SYNCNT`.
+ GetTcpSynCount(ctx_ _bindings.Context) (StreamSocketGetTcpSynCountResult, error)
+ // Set `SOL_TCP` -> `TCP_LINGER2`.
+ SetTcpLinger(ctx_ _bindings.Context, valueSecs OptionalUint32) (StreamSocketSetTcpLingerResult, error)
+ // Get `SOL_TCP` -> `TCP_LINGER2`.
+ GetTcpLinger(ctx_ _bindings.Context) (StreamSocketGetTcpLingerResult, error)
+ // Set `SOL_TCP` -> `TCP_DEFER_ACCEPT`.
+ SetTcpDeferAccept(ctx_ _bindings.Context, valueSecs uint32) (StreamSocketSetTcpDeferAcceptResult, error)
+ // Get `SOL_TCP` -> `TCP_DEFER_ACCEPT`.
+ GetTcpDeferAccept(ctx_ _bindings.Context) (StreamSocketGetTcpDeferAcceptResult, error)
+ // Set `SOL_TCP` -> `TCP_WINDOW_CLAMP`.
+ SetTcpWindowClamp(ctx_ _bindings.Context, value uint32) (StreamSocketSetTcpWindowClampResult, error)
+ // Get `SOL_TCP` -> `TCP_WINDOW_CLAMP`.
+ GetTcpWindowClamp(ctx_ _bindings.Context) (StreamSocketGetTcpWindowClampResult, error)
+ // Get `SOL_TCP` -> `TCP_INFO`.
+ GetTcpInfo(ctx_ _bindings.Context) (StreamSocketGetTcpInfoResult, error)
+ // Set `SOL_TCP` -> `TCP_QUICKACK`.
+ SetTcpQuickAck(ctx_ _bindings.Context, value bool) (StreamSocketSetTcpQuickAckResult, error)
+ // Get `SOL_TCP` -> `TCP_QUICKACK`.
+ GetTcpQuickAck(ctx_ _bindings.Context) (StreamSocketGetTcpQuickAckResult, error)
+ // Set `SOL_TCP` -> `TCP_CONGESTION`.
+ SetTcpCongestion(ctx_ _bindings.Context, value TcpCongestionControl) (StreamSocketSetTcpCongestionResult, error)
+ // Get `SOL_TCP` -> `TCP_CONGESTION`.
+ GetTcpCongestion(ctx_ _bindings.Context) (StreamSocketGetTcpCongestionResult, error)
+ // Set `SOL_TCP` -> `TCP_USER_TIMEOUT`.
+ SetTcpUserTimeout(ctx_ _bindings.Context, valueMillis uint32) (StreamSocketSetTcpUserTimeoutResult, error)
+ // Get `SOL_TCP` -> `TCP_USER_TIMEOUT`.
+ GetTcpUserTimeout(ctx_ _bindings.Context) (StreamSocketGetTcpUserTimeoutResult, error)
+}
+
+type StreamSocketWithCtxTransitionalBase struct{}
+
+func (_ *StreamSocketWithCtxTransitionalBase) NodeGetFlags(ctx_ _bindings.Context) (int32, uint32, error) {
+ panic("Not Implemented")
+}
+func (_ *StreamSocketWithCtxTransitionalBase) NodeSetFlags(ctx_ _bindings.Context, flags uint32) (int32, error) {
+ panic("Not Implemented")
+}
+
+type StreamSocketWithCtxInterfaceRequest _bindings.InterfaceRequest
+
+func NewStreamSocketWithCtxInterfaceRequest() (StreamSocketWithCtxInterfaceRequest, *StreamSocketWithCtxInterface, error) {
+ req, cli, err := _bindings.NewInterfaceRequest()
+ return StreamSocketWithCtxInterfaceRequest(req), (*StreamSocketWithCtxInterface)(cli), err
+}
+
+type StreamSocketWithCtxStub struct {
+ Impl StreamSocketWithCtx
+}
+
+func (s_ *StreamSocketWithCtxStub) Dispatch(args_ _bindings.DispatchArgs) (_bindings.Message, bool, error) {
+ switch args_.Ordinal {
+ case StreamSocketCloneOrdinal:
+ in_ := streamSocketWithCtxCloneRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ err_ := s_.Impl.Clone(args_.Ctx, in_.Flags, in_.Object)
+ return nil, false, err_
+ case StreamSocketCloseOrdinal:
+ s, err_ := s_.Impl.Close(args_.Ctx)
+ out_ := streamSocketWithCtxCloseResponse{}
+ out_.S = s
+ return &out_, true, err_
+ case StreamSocketDescribeOrdinal:
+ info, err_ := s_.Impl.Describe(args_.Ctx)
+ out_ := streamSocketWithCtxDescribeResponse{}
+ out_.Info = info
+ return &out_, true, err_
+ case StreamSocketSyncOrdinal:
+ s, err_ := s_.Impl.Sync(args_.Ctx)
+ out_ := streamSocketWithCtxSyncResponse{}
+ out_.S = s
+ return &out_, true, err_
+ case StreamSocketGetAttrOrdinal:
+ s, attributes, err_ := s_.Impl.GetAttr(args_.Ctx)
+ out_ := streamSocketWithCtxGetAttrResponse{}
+ out_.S = s
+ out_.Attributes = attributes
+ return &out_, true, err_
+ case StreamSocketSetAttrOrdinal:
+ in_ := streamSocketWithCtxSetAttrRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ s, err_ := s_.Impl.SetAttr(args_.Ctx, in_.Flags, in_.Attributes)
+ out_ := streamSocketWithCtxSetAttrResponse{}
+ out_.S = s
+ return &out_, true, err_
+ case StreamSocketNodeGetFlagsOrdinal:
+ s, flags, err_ := s_.Impl.NodeGetFlags(args_.Ctx)
+ out_ := streamSocketWithCtxNodeGetFlagsResponse{}
+ out_.S = s
+ out_.Flags = flags
+ return &out_, true, err_
+ case StreamSocketNodeSetFlagsOrdinal:
+ in_ := streamSocketWithCtxNodeSetFlagsRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ s, err_ := s_.Impl.NodeSetFlags(args_.Ctx, in_.Flags)
+ out_ := streamSocketWithCtxNodeSetFlagsResponse{}
+ out_.S = s
+ return &out_, true, err_
+ case StreamSocketBindOrdinal:
+ in_ := streamSocketWithCtxBindRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.Bind(args_.Ctx, in_.Addr)
+ out_ := streamSocketWithCtxBindResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketConnectOrdinal:
+ in_ := streamSocketWithCtxConnectRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.Connect(args_.Ctx, in_.Addr)
+ out_ := streamSocketWithCtxConnectResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketDisconnectOrdinal:
+ result, err_ := s_.Impl.Disconnect(args_.Ctx)
+ out_ := streamSocketWithCtxDisconnectResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketGetSockNameOrdinal:
+ result, err_ := s_.Impl.GetSockName(args_.Ctx)
+ out_ := streamSocketWithCtxGetSockNameResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketGetPeerNameOrdinal:
+ result, err_ := s_.Impl.GetPeerName(args_.Ctx)
+ out_ := streamSocketWithCtxGetPeerNameResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketShutdown2Ordinal:
+ in_ := streamSocketWithCtxShutdown2Request{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.Shutdown2(args_.Ctx, in_.Mode)
+ out_ := streamSocketWithCtxShutdown2Response{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketSetReuseAddressOrdinal:
+ in_ := streamSocketWithCtxSetReuseAddressRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetReuseAddress(args_.Ctx, in_.Value)
+ out_ := streamSocketWithCtxSetReuseAddressResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketGetReuseAddressOrdinal:
+ result, err_ := s_.Impl.GetReuseAddress(args_.Ctx)
+ out_ := streamSocketWithCtxGetReuseAddressResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketGetErrorOrdinal:
+ result, err_ := s_.Impl.GetError(args_.Ctx)
+ out_ := streamSocketWithCtxGetErrorResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketSetBroadcastOrdinal:
+ in_ := streamSocketWithCtxSetBroadcastRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetBroadcast(args_.Ctx, in_.Value)
+ out_ := streamSocketWithCtxSetBroadcastResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketGetBroadcastOrdinal:
+ result, err_ := s_.Impl.GetBroadcast(args_.Ctx)
+ out_ := streamSocketWithCtxGetBroadcastResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketSetSendBufferOrdinal:
+ in_ := streamSocketWithCtxSetSendBufferRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetSendBuffer(args_.Ctx, in_.ValueBytes)
+ out_ := streamSocketWithCtxSetSendBufferResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketGetSendBufferOrdinal:
+ result, err_ := s_.Impl.GetSendBuffer(args_.Ctx)
+ out_ := streamSocketWithCtxGetSendBufferResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketSetReceiveBufferOrdinal:
+ in_ := streamSocketWithCtxSetReceiveBufferRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetReceiveBuffer(args_.Ctx, in_.ValueBytes)
+ out_ := streamSocketWithCtxSetReceiveBufferResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketGetReceiveBufferOrdinal:
+ result, err_ := s_.Impl.GetReceiveBuffer(args_.Ctx)
+ out_ := streamSocketWithCtxGetReceiveBufferResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketSetKeepAliveOrdinal:
+ in_ := streamSocketWithCtxSetKeepAliveRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetKeepAlive(args_.Ctx, in_.Value)
+ out_ := streamSocketWithCtxSetKeepAliveResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketGetKeepAliveOrdinal:
+ result, err_ := s_.Impl.GetKeepAlive(args_.Ctx)
+ out_ := streamSocketWithCtxGetKeepAliveResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketSetOutOfBandInlineOrdinal:
+ in_ := streamSocketWithCtxSetOutOfBandInlineRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetOutOfBandInline(args_.Ctx, in_.Value)
+ out_ := streamSocketWithCtxSetOutOfBandInlineResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketGetOutOfBandInlineOrdinal:
+ result, err_ := s_.Impl.GetOutOfBandInline(args_.Ctx)
+ out_ := streamSocketWithCtxGetOutOfBandInlineResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketSetNoCheckOrdinal:
+ in_ := streamSocketWithCtxSetNoCheckRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetNoCheck(args_.Ctx, in_.Value)
+ out_ := streamSocketWithCtxSetNoCheckResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketGetNoCheckOrdinal:
+ result, err_ := s_.Impl.GetNoCheck(args_.Ctx)
+ out_ := streamSocketWithCtxGetNoCheckResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketSetLingerOrdinal:
+ in_ := streamSocketWithCtxSetLingerRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetLinger(args_.Ctx, in_.Linger, in_.LengthSecs)
+ out_ := streamSocketWithCtxSetLingerResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketGetLingerOrdinal:
+ result, err_ := s_.Impl.GetLinger(args_.Ctx)
+ out_ := streamSocketWithCtxGetLingerResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketSetReusePortOrdinal:
+ in_ := streamSocketWithCtxSetReusePortRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetReusePort(args_.Ctx, in_.Value)
+ out_ := streamSocketWithCtxSetReusePortResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketGetReusePortOrdinal:
+ result, err_ := s_.Impl.GetReusePort(args_.Ctx)
+ out_ := streamSocketWithCtxGetReusePortResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketGetAcceptConnOrdinal:
+ result, err_ := s_.Impl.GetAcceptConn(args_.Ctx)
+ out_ := streamSocketWithCtxGetAcceptConnResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketSetBindToDeviceOrdinal:
+ in_ := streamSocketWithCtxSetBindToDeviceRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetBindToDevice(args_.Ctx, in_.Value)
+ out_ := streamSocketWithCtxSetBindToDeviceResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketGetBindToDeviceOrdinal:
+ result, err_ := s_.Impl.GetBindToDevice(args_.Ctx)
+ out_ := streamSocketWithCtxGetBindToDeviceResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketSetTimestampOrdinal:
+ in_ := streamSocketWithCtxSetTimestampRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetTimestamp(args_.Ctx, in_.Value)
+ out_ := streamSocketWithCtxSetTimestampResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketGetTimestampOrdinal:
+ result, err_ := s_.Impl.GetTimestamp(args_.Ctx)
+ out_ := streamSocketWithCtxGetTimestampResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketSetIpTypeOfServiceOrdinal:
+ in_ := streamSocketWithCtxSetIpTypeOfServiceRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetIpTypeOfService(args_.Ctx, in_.Value)
+ out_ := streamSocketWithCtxSetIpTypeOfServiceResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketGetIpTypeOfServiceOrdinal:
+ result, err_ := s_.Impl.GetIpTypeOfService(args_.Ctx)
+ out_ := streamSocketWithCtxGetIpTypeOfServiceResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketSetIpTtlOrdinal:
+ in_ := streamSocketWithCtxSetIpTtlRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetIpTtl(args_.Ctx, in_.Value)
+ out_ := streamSocketWithCtxSetIpTtlResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketGetIpTtlOrdinal:
+ result, err_ := s_.Impl.GetIpTtl(args_.Ctx)
+ out_ := streamSocketWithCtxGetIpTtlResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketSetIpPacketInfoOrdinal:
+ in_ := streamSocketWithCtxSetIpPacketInfoRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetIpPacketInfo(args_.Ctx, in_.Value)
+ out_ := streamSocketWithCtxSetIpPacketInfoResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketGetIpPacketInfoOrdinal:
+ result, err_ := s_.Impl.GetIpPacketInfo(args_.Ctx)
+ out_ := streamSocketWithCtxGetIpPacketInfoResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketSetIpReceiveTypeOfServiceOrdinal:
+ in_ := streamSocketWithCtxSetIpReceiveTypeOfServiceRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetIpReceiveTypeOfService(args_.Ctx, in_.Value)
+ out_ := streamSocketWithCtxSetIpReceiveTypeOfServiceResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketGetIpReceiveTypeOfServiceOrdinal:
+ result, err_ := s_.Impl.GetIpReceiveTypeOfService(args_.Ctx)
+ out_ := streamSocketWithCtxGetIpReceiveTypeOfServiceResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketSetIpMulticastInterfaceOrdinal:
+ in_ := streamSocketWithCtxSetIpMulticastInterfaceRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetIpMulticastInterface(args_.Ctx, in_.Iface, in_.Address)
+ out_ := streamSocketWithCtxSetIpMulticastInterfaceResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketGetIpMulticastInterfaceOrdinal:
+ result, err_ := s_.Impl.GetIpMulticastInterface(args_.Ctx)
+ out_ := streamSocketWithCtxGetIpMulticastInterfaceResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketSetIpMulticastTtlOrdinal:
+ in_ := streamSocketWithCtxSetIpMulticastTtlRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetIpMulticastTtl(args_.Ctx, in_.Value)
+ out_ := streamSocketWithCtxSetIpMulticastTtlResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketGetIpMulticastTtlOrdinal:
+ result, err_ := s_.Impl.GetIpMulticastTtl(args_.Ctx)
+ out_ := streamSocketWithCtxGetIpMulticastTtlResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketSetIpMulticastLoopbackOrdinal:
+ in_ := streamSocketWithCtxSetIpMulticastLoopbackRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetIpMulticastLoopback(args_.Ctx, in_.Value)
+ out_ := streamSocketWithCtxSetIpMulticastLoopbackResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketGetIpMulticastLoopbackOrdinal:
+ result, err_ := s_.Impl.GetIpMulticastLoopback(args_.Ctx)
+ out_ := streamSocketWithCtxGetIpMulticastLoopbackResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketAddIpMembershipOrdinal:
+ in_ := streamSocketWithCtxAddIpMembershipRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.AddIpMembership(args_.Ctx, in_.Membership)
+ out_ := streamSocketWithCtxAddIpMembershipResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketDropIpMembershipOrdinal:
+ in_ := streamSocketWithCtxDropIpMembershipRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.DropIpMembership(args_.Ctx, in_.Membership)
+ out_ := streamSocketWithCtxDropIpMembershipResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketAddIpv6MembershipOrdinal:
+ in_ := streamSocketWithCtxAddIpv6MembershipRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.AddIpv6Membership(args_.Ctx, in_.Membership)
+ out_ := streamSocketWithCtxAddIpv6MembershipResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketDropIpv6MembershipOrdinal:
+ in_ := streamSocketWithCtxDropIpv6MembershipRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.DropIpv6Membership(args_.Ctx, in_.Membership)
+ out_ := streamSocketWithCtxDropIpv6MembershipResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketSetIpv6MulticastInterfaceOrdinal:
+ in_ := streamSocketWithCtxSetIpv6MulticastInterfaceRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetIpv6MulticastInterface(args_.Ctx, in_.Value)
+ out_ := streamSocketWithCtxSetIpv6MulticastInterfaceResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketGetIpv6MulticastInterfaceOrdinal:
+ result, err_ := s_.Impl.GetIpv6MulticastInterface(args_.Ctx)
+ out_ := streamSocketWithCtxGetIpv6MulticastInterfaceResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketSetIpv6MulticastHopsOrdinal:
+ in_ := streamSocketWithCtxSetIpv6MulticastHopsRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetIpv6MulticastHops(args_.Ctx, in_.Value)
+ out_ := streamSocketWithCtxSetIpv6MulticastHopsResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketGetIpv6MulticastHopsOrdinal:
+ result, err_ := s_.Impl.GetIpv6MulticastHops(args_.Ctx)
+ out_ := streamSocketWithCtxGetIpv6MulticastHopsResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketSetIpv6MulticastLoopbackOrdinal:
+ in_ := streamSocketWithCtxSetIpv6MulticastLoopbackRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetIpv6MulticastLoopback(args_.Ctx, in_.Value)
+ out_ := streamSocketWithCtxSetIpv6MulticastLoopbackResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketGetIpv6MulticastLoopbackOrdinal:
+ result, err_ := s_.Impl.GetIpv6MulticastLoopback(args_.Ctx)
+ out_ := streamSocketWithCtxGetIpv6MulticastLoopbackResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketSetIpv6OnlyOrdinal:
+ in_ := streamSocketWithCtxSetIpv6OnlyRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetIpv6Only(args_.Ctx, in_.Value)
+ out_ := streamSocketWithCtxSetIpv6OnlyResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketGetIpv6OnlyOrdinal:
+ result, err_ := s_.Impl.GetIpv6Only(args_.Ctx)
+ out_ := streamSocketWithCtxGetIpv6OnlyResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketSetIpv6ReceiveTrafficClassOrdinal:
+ in_ := streamSocketWithCtxSetIpv6ReceiveTrafficClassRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetIpv6ReceiveTrafficClass(args_.Ctx, in_.Value)
+ out_ := streamSocketWithCtxSetIpv6ReceiveTrafficClassResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketGetIpv6ReceiveTrafficClassOrdinal:
+ result, err_ := s_.Impl.GetIpv6ReceiveTrafficClass(args_.Ctx)
+ out_ := streamSocketWithCtxGetIpv6ReceiveTrafficClassResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketSetIpv6TrafficClassOrdinal:
+ in_ := streamSocketWithCtxSetIpv6TrafficClassRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetIpv6TrafficClass(args_.Ctx, in_.Value)
+ out_ := streamSocketWithCtxSetIpv6TrafficClassResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketGetIpv6TrafficClassOrdinal:
+ result, err_ := s_.Impl.GetIpv6TrafficClass(args_.Ctx)
+ out_ := streamSocketWithCtxGetIpv6TrafficClassResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketListenOrdinal:
+ in_ := streamSocketWithCtxListenRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.Listen(args_.Ctx, in_.Backlog)
+ out_ := streamSocketWithCtxListenResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketAcceptOrdinal:
+ in_ := streamSocketWithCtxAcceptRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.Accept(args_.Ctx, in_.WantAddr)
+ out_ := streamSocketWithCtxAcceptResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketGetInfoOrdinal:
+ result, err_ := s_.Impl.GetInfo(args_.Ctx)
+ out_ := streamSocketWithCtxGetInfoResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketSetTcpNoDelayOrdinal:
+ in_ := streamSocketWithCtxSetTcpNoDelayRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetTcpNoDelay(args_.Ctx, in_.Value)
+ out_ := streamSocketWithCtxSetTcpNoDelayResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketGetTcpNoDelayOrdinal:
+ result, err_ := s_.Impl.GetTcpNoDelay(args_.Ctx)
+ out_ := streamSocketWithCtxGetTcpNoDelayResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketSetTcpMaxSegmentOrdinal:
+ in_ := streamSocketWithCtxSetTcpMaxSegmentRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetTcpMaxSegment(args_.Ctx, in_.ValueBytes)
+ out_ := streamSocketWithCtxSetTcpMaxSegmentResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketGetTcpMaxSegmentOrdinal:
+ result, err_ := s_.Impl.GetTcpMaxSegment(args_.Ctx)
+ out_ := streamSocketWithCtxGetTcpMaxSegmentResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketSetTcpCorkOrdinal:
+ in_ := streamSocketWithCtxSetTcpCorkRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetTcpCork(args_.Ctx, in_.Value)
+ out_ := streamSocketWithCtxSetTcpCorkResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketGetTcpCorkOrdinal:
+ result, err_ := s_.Impl.GetTcpCork(args_.Ctx)
+ out_ := streamSocketWithCtxGetTcpCorkResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketSetTcpKeepAliveIdleOrdinal:
+ in_ := streamSocketWithCtxSetTcpKeepAliveIdleRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetTcpKeepAliveIdle(args_.Ctx, in_.ValueSecs)
+ out_ := streamSocketWithCtxSetTcpKeepAliveIdleResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketGetTcpKeepAliveIdleOrdinal:
+ result, err_ := s_.Impl.GetTcpKeepAliveIdle(args_.Ctx)
+ out_ := streamSocketWithCtxGetTcpKeepAliveIdleResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketSetTcpKeepAliveIntervalOrdinal:
+ in_ := streamSocketWithCtxSetTcpKeepAliveIntervalRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetTcpKeepAliveInterval(args_.Ctx, in_.ValueSecs)
+ out_ := streamSocketWithCtxSetTcpKeepAliveIntervalResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketGetTcpKeepAliveIntervalOrdinal:
+ result, err_ := s_.Impl.GetTcpKeepAliveInterval(args_.Ctx)
+ out_ := streamSocketWithCtxGetTcpKeepAliveIntervalResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketSetTcpKeepAliveCountOrdinal:
+ in_ := streamSocketWithCtxSetTcpKeepAliveCountRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetTcpKeepAliveCount(args_.Ctx, in_.Value)
+ out_ := streamSocketWithCtxSetTcpKeepAliveCountResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketGetTcpKeepAliveCountOrdinal:
+ result, err_ := s_.Impl.GetTcpKeepAliveCount(args_.Ctx)
+ out_ := streamSocketWithCtxGetTcpKeepAliveCountResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketSetTcpSynCountOrdinal:
+ in_ := streamSocketWithCtxSetTcpSynCountRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetTcpSynCount(args_.Ctx, in_.Value)
+ out_ := streamSocketWithCtxSetTcpSynCountResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketGetTcpSynCountOrdinal:
+ result, err_ := s_.Impl.GetTcpSynCount(args_.Ctx)
+ out_ := streamSocketWithCtxGetTcpSynCountResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketSetTcpLingerOrdinal:
+ in_ := streamSocketWithCtxSetTcpLingerRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetTcpLinger(args_.Ctx, in_.ValueSecs)
+ out_ := streamSocketWithCtxSetTcpLingerResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketGetTcpLingerOrdinal:
+ result, err_ := s_.Impl.GetTcpLinger(args_.Ctx)
+ out_ := streamSocketWithCtxGetTcpLingerResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketSetTcpDeferAcceptOrdinal:
+ in_ := streamSocketWithCtxSetTcpDeferAcceptRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetTcpDeferAccept(args_.Ctx, in_.ValueSecs)
+ out_ := streamSocketWithCtxSetTcpDeferAcceptResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketGetTcpDeferAcceptOrdinal:
+ result, err_ := s_.Impl.GetTcpDeferAccept(args_.Ctx)
+ out_ := streamSocketWithCtxGetTcpDeferAcceptResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketSetTcpWindowClampOrdinal:
+ in_ := streamSocketWithCtxSetTcpWindowClampRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetTcpWindowClamp(args_.Ctx, in_.Value)
+ out_ := streamSocketWithCtxSetTcpWindowClampResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketGetTcpWindowClampOrdinal:
+ result, err_ := s_.Impl.GetTcpWindowClamp(args_.Ctx)
+ out_ := streamSocketWithCtxGetTcpWindowClampResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketGetTcpInfoOrdinal:
+ result, err_ := s_.Impl.GetTcpInfo(args_.Ctx)
+ out_ := streamSocketWithCtxGetTcpInfoResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketSetTcpQuickAckOrdinal:
+ in_ := streamSocketWithCtxSetTcpQuickAckRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetTcpQuickAck(args_.Ctx, in_.Value)
+ out_ := streamSocketWithCtxSetTcpQuickAckResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketGetTcpQuickAckOrdinal:
+ result, err_ := s_.Impl.GetTcpQuickAck(args_.Ctx)
+ out_ := streamSocketWithCtxGetTcpQuickAckResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketSetTcpCongestionOrdinal:
+ in_ := streamSocketWithCtxSetTcpCongestionRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetTcpCongestion(args_.Ctx, in_.Value)
+ out_ := streamSocketWithCtxSetTcpCongestionResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketGetTcpCongestionOrdinal:
+ result, err_ := s_.Impl.GetTcpCongestion(args_.Ctx)
+ out_ := streamSocketWithCtxGetTcpCongestionResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketSetTcpUserTimeoutOrdinal:
+ in_ := streamSocketWithCtxSetTcpUserTimeoutRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.SetTcpUserTimeout(args_.Ctx, in_.ValueMillis)
+ out_ := streamSocketWithCtxSetTcpUserTimeoutResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case StreamSocketGetTcpUserTimeoutOrdinal:
+ result, err_ := s_.Impl.GetTcpUserTimeout(args_.Ctx)
+ out_ := streamSocketWithCtxGetTcpUserTimeoutResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ }
+ return nil, false, _bindings.ErrUnknownOrdinal
+}
+
+type StreamSocketEventProxy _bindings.ChannelProxy
+
+func (p *StreamSocketEventProxy) OnOpen(s int32, info *fuchsiaio.NodeInfo) error {
+ event_ := &streamSocketWithCtxOnOpenResponse{
+ S: s,
+ Info: info,
+ }
+ return ((*_bindings.ChannelProxy)(p)).Send(StreamSocketOnOpenOrdinal, event_)
+}
+
+const (
+ ProviderStreamSocketOrdinal uint64 = 0x27c3581da2155545
+ ProviderDatagramSocketOrdinal uint64 = 0x38876c87cf031cb1
+ ProviderInterfaceIndexToNameOrdinal uint64 = 0x4d59a64fce98272f
+ ProviderInterfaceNameToIndexOrdinal uint64 = 0x690cd8d2f2d650f8
+ ProviderInterfaceNameToFlagsOrdinal uint64 = 0x25d0efcdb6671a0b
+ ProviderGetInterfaceAddressesOrdinal uint64 = 0x2e7b9aaf327c870
+)
+
+type ProviderWithCtxInterface _bindings.ChannelProxy
+
+// Requests a stream socket with the specified parameters.
+func (p *ProviderWithCtxInterface) StreamSocket(ctx_ _bindings.Context, domain Domain, proto StreamSocketProtocol) (ProviderStreamSocketResult, error) {
+ req_ := &providerWithCtxStreamSocketRequest{
+ Domain: domain,
+ Proto: proto,
+ }
+ resp_ := &providerWithCtxStreamSocketResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(ProviderStreamSocketOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Requests a datagram socket with the specified parameters.
+func (p *ProviderWithCtxInterface) DatagramSocket(ctx_ _bindings.Context, domain Domain, proto DatagramSocketProtocol) (ProviderDatagramSocketResult, error) {
+ req_ := &providerWithCtxDatagramSocketRequest{
+ Domain: domain,
+ Proto: proto,
+ }
+ resp_ := &providerWithCtxDatagramSocketResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(ProviderDatagramSocketOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Looks up an interface by its index and returns its name. Returns `ZX_ERR_NOT_FOUND` if the
+// specified index doesn't exist.
+func (p *ProviderWithCtxInterface) InterfaceIndexToName(ctx_ _bindings.Context, index uint64) (ProviderInterfaceIndexToNameResult, error) {
+ req_ := &providerWithCtxInterfaceIndexToNameRequest{
+ Index: index,
+ }
+ resp_ := &providerWithCtxInterfaceIndexToNameResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(ProviderInterfaceIndexToNameOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Looks up an interface by its name and returns its index. Returns `ZX_ERR_NOT_FOUND` if the
+// specified name doesn't exist.
+func (p *ProviderWithCtxInterface) InterfaceNameToIndex(ctx_ _bindings.Context, name string) (ProviderInterfaceNameToIndexResult, error) {
+ req_ := &providerWithCtxInterfaceNameToIndexRequest{
+ Name: name,
+ }
+ resp_ := &providerWithCtxInterfaceNameToIndexResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(ProviderInterfaceNameToIndexOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Looks up an interface by its name and returns its flags. Returns `ZX_ERR_NOT_FOUND` if the
+// specified name doesn't exist.
+func (p *ProviderWithCtxInterface) InterfaceNameToFlags(ctx_ _bindings.Context, name string) (ProviderInterfaceNameToFlagsResult, error) {
+ req_ := &providerWithCtxInterfaceNameToFlagsRequest{
+ Name: name,
+ }
+ resp_ := &providerWithCtxInterfaceNameToFlagsResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(ProviderInterfaceNameToFlagsOrdinal, req_, resp_)
+ return resp_.Result, err_
+}
+
+// Requests a list of [`fuchsia.posix.socket.InterfaceAddresses`]
+// describing the network interfaces on the system.
+func (p *ProviderWithCtxInterface) GetInterfaceAddresses(ctx_ _bindings.Context) ([]InterfaceAddresses, error) {
+ var req_ _bindings.Message
+ resp_ := &providerWithCtxGetInterfaceAddressesResponse{}
+ err_ := ((*_bindings.ChannelProxy)(p)).Call(ProviderGetInterfaceAddressesOrdinal, req_, resp_)
+ return resp_.Interfaces, err_
+}
+
+// Provider implements the POSIX sockets API.
+type ProviderWithCtx interface {
+ // Requests a stream socket with the specified parameters.
+ StreamSocket(ctx_ _bindings.Context, domain Domain, proto StreamSocketProtocol) (ProviderStreamSocketResult, error)
+ // Requests a datagram socket with the specified parameters.
+ DatagramSocket(ctx_ _bindings.Context, domain Domain, proto DatagramSocketProtocol) (ProviderDatagramSocketResult, error)
+ // Looks up an interface by its index and returns its name. Returns `ZX_ERR_NOT_FOUND` if the
+ // specified index doesn't exist.
+ InterfaceIndexToName(ctx_ _bindings.Context, index uint64) (ProviderInterfaceIndexToNameResult, error)
+ // Looks up an interface by its name and returns its index. Returns `ZX_ERR_NOT_FOUND` if the
+ // specified name doesn't exist.
+ InterfaceNameToIndex(ctx_ _bindings.Context, name string) (ProviderInterfaceNameToIndexResult, error)
+ // Looks up an interface by its name and returns its flags. Returns `ZX_ERR_NOT_FOUND` if the
+ // specified name doesn't exist.
+ InterfaceNameToFlags(ctx_ _bindings.Context, name string) (ProviderInterfaceNameToFlagsResult, error)
+ // Requests a list of [`fuchsia.posix.socket.InterfaceAddresses`]
+ // describing the network interfaces on the system.
+ GetInterfaceAddresses(ctx_ _bindings.Context) ([]InterfaceAddresses, error)
+}
+
+type ProviderWithCtxTransitionalBase struct{}
+
+type ProviderWithCtxInterfaceRequest _bindings.InterfaceRequest
+
+func NewProviderWithCtxInterfaceRequest() (ProviderWithCtxInterfaceRequest, *ProviderWithCtxInterface, error) {
+ req, cli, err := _bindings.NewInterfaceRequest()
+ return ProviderWithCtxInterfaceRequest(req), (*ProviderWithCtxInterface)(cli), err
+}
+
+// Implements ServiceRequest.
+func (_ ProviderWithCtxInterfaceRequest) Name() string {
+ return "fuchsia.posix.socket.Provider"
+}
+func (c ProviderWithCtxInterfaceRequest) ToChannel() _zx.Channel {
+ return c.Channel
+}
+
+const ProviderName = "fuchsia.posix.socket.Provider"
+
+type ProviderWithCtxStub struct {
+ Impl ProviderWithCtx
+}
+
+func (s_ *ProviderWithCtxStub) Dispatch(args_ _bindings.DispatchArgs) (_bindings.Message, bool, error) {
+ switch args_.Ordinal {
+ case ProviderStreamSocketOrdinal:
+ in_ := providerWithCtxStreamSocketRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.StreamSocket(args_.Ctx, in_.Domain, in_.Proto)
+ out_ := providerWithCtxStreamSocketResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case ProviderDatagramSocketOrdinal:
+ in_ := providerWithCtxDatagramSocketRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.DatagramSocket(args_.Ctx, in_.Domain, in_.Proto)
+ out_ := providerWithCtxDatagramSocketResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case ProviderInterfaceIndexToNameOrdinal:
+ in_ := providerWithCtxInterfaceIndexToNameRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.InterfaceIndexToName(args_.Ctx, in_.Index)
+ out_ := providerWithCtxInterfaceIndexToNameResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case ProviderInterfaceNameToIndexOrdinal:
+ in_ := providerWithCtxInterfaceNameToIndexRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.InterfaceNameToIndex(args_.Ctx, in_.Name)
+ out_ := providerWithCtxInterfaceNameToIndexResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case ProviderInterfaceNameToFlagsOrdinal:
+ in_ := providerWithCtxInterfaceNameToFlagsRequest{}
+ marshalerCtx, ok := _bindings.GetMarshalerContext(args_.Ctx)
+ if !ok {
+ return nil, false, _bindings.ErrMissingMarshalerContext
+ }
+ if _, _, err_ := _bindings.UnmarshalWithContext2(marshalerCtx, args_.Bytes, args_.HandleInfos, &in_); err_ != nil {
+ return nil, false, err_
+ }
+ result, err_ := s_.Impl.InterfaceNameToFlags(args_.Ctx, in_.Name)
+ out_ := providerWithCtxInterfaceNameToFlagsResponse{}
+ out_.Result = result
+ return &out_, true, err_
+ case ProviderGetInterfaceAddressesOrdinal:
+ interfaces, err_ := s_.Impl.GetInterfaceAddresses(args_.Ctx)
+ out_ := providerWithCtxGetInterfaceAddressesResponse{}
+ out_.Interfaces = interfaces
+ return &out_, true, err_
+ }
+ return nil, false, _bindings.ErrUnknownOrdinal
+}
+
+type ProviderEventProxy _bindings.ChannelProxy
diff --git a/src/syscall/zx/syscalls_fuchsia.go b/src/syscall/zx/syscalls_fuchsia.go
new file mode 100644
index 0000000..031e236
--- /dev/null
+++ b/src/syscall/zx/syscalls_fuchsia.go
@@ -0,0 +1,741 @@
+// Copyright 2019 The Fuchsia Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// WARNING: THIS FILE IS MACHINE GENERATED BY //tools/kazoo. DO NOT EDIT.
+
+package zx
+
+import "unsafe"
+
+//go:noescape
+//go:nosplit
+func Sys_bti_create(iommu Handle, options uint32, bti_id uint64, out *Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_bti_pin(handle Handle, options uint32, vmo Handle, offset uint64, size uint64, addrs *Paddr, num_addrs uint, pmt *Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_bti_release_quarantine(handle Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_cache_flush(addr unsafe.Pointer, size uint, options uint32) Status
+
+//go:noescape
+//go:nosplit
+func Sys_channel_create(options uint32, out0 *Handle, out1 *Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_channel_read(handle Handle, options uint32, bytes unsafe.Pointer, handles *Handle, num_bytes uint32, num_handles uint32, actual_bytes *uint32, actual_handles *uint32) Status
+
+//go:noescape
+//go:nosplit
+func Sys_channel_read_etc(handle Handle, options uint32, bytes unsafe.Pointer, handles *HandleInfo, num_bytes uint32, num_handles uint32, actual_bytes *uint32, actual_handles *uint32) Status
+
+//go:noescape
+//go:nosplit
+func Sys_channel_write(handle Handle, options uint32, bytes unsafe.Pointer, num_bytes uint32, handles *Handle, num_handles uint32) Status
+
+//go:noescape
+//go:nosplit
+func Sys_channel_write_etc(handle Handle, options uint32, bytes unsafe.Pointer, num_bytes uint32, handles *HandleDisposition, num_handles uint32) Status
+
+//go:noescape
+//go:nosplit
+func Sys_channel_call_noretry(handle Handle, options uint32, deadline Time, args *ChannelCallArgs, actual_bytes *uint32, actual_handles *uint32) Status
+
+//go:noescape
+//go:nosplit
+func Sys_channel_call_finish(deadline Time, args *ChannelCallArgs, actual_bytes *uint32, actual_handles *uint32) Status
+
+//go:noescape
+//go:nosplit
+func Sys_channel_call(handle Handle, options uint32, deadline Time, args *ChannelCallArgs, actual_bytes *uint32, actual_handles *uint32) Status
+
+//go:noescape
+//go:nosplit
+func Sys_channel_call_etc_noretry(handle Handle, options uint32, deadline Time, args *ChannelCallEtcArgs, actual_bytes *uint32, actual_handles *uint32) Status
+
+//go:noescape
+//go:nosplit
+func Sys_channel_call_etc_finish(deadline Time, args *ChannelCallEtcArgs, actual_bytes *uint32, actual_handles *uint32) Status
+
+//go:noescape
+//go:nosplit
+func Sys_channel_call_etc(handle Handle, options uint32, deadline Time, args *ChannelCallEtcArgs, actual_bytes *uint32, actual_handles *uint32) Status
+
+//go:noescape
+//go:nosplit
+func Sys_clock_get_monotonic() Time
+
+//go:noescape
+//go:nosplit
+func Sys_clock_get_monotonic_via_kernel() Time
+
+//go:noescape
+//go:nosplit
+func Sys_clock_create(options uint64, args unsafe.Pointer, out *Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_clock_read(handle Handle, now *Time) Status
+
+//go:noescape
+//go:nosplit
+func Sys_clock_get_details(handle Handle, options uint64, details unsafe.Pointer) Status
+
+//go:noescape
+//go:nosplit
+func Sys_clock_update(handle Handle, options uint64, args unsafe.Pointer) Status
+
+//go:noescape
+//go:nosplit
+func Sys_cprng_draw_once(buffer unsafe.Pointer, buffer_size uint) Status
+
+//go:noescape
+//go:nosplit
+func Sys_cprng_draw(buffer unsafe.Pointer, buffer_size uint)
+
+//go:noescape
+//go:nosplit
+func Sys_cprng_add_entropy(buffer unsafe.Pointer, buffer_size uint) Status
+
+//go:noescape
+//go:nosplit
+func Sys_debug_read(handle Handle, buffer *uint8, buffer_size uint, actual *uint) Status
+
+//go:noescape
+//go:nosplit
+func Sys_debug_write(buffer *uint8, buffer_size uint) Status
+
+//go:noescape
+//go:nosplit
+func Sys_debug_send_command(resource Handle, buffer *uint8, buffer_size uint) Status
+
+//go:noescape
+//go:nosplit
+func Sys_debuglog_create(resource Handle, options uint32, out *Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_debuglog_write(handle Handle, options uint32, buffer unsafe.Pointer, buffer_size uint) Status
+
+//go:noescape
+//go:nosplit
+func Sys_debuglog_read(handle Handle, options uint32, buffer unsafe.Pointer, buffer_size uint) Status
+
+//go:noescape
+//go:nosplit
+func Sys_event_create(options uint32, out *Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_eventpair_create(options uint32, out0 *Handle, out1 *Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_exception_get_thread(handle Handle, out *Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_exception_get_process(handle Handle, out *Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_fifo_create(elem_count uint, elem_size uint, options uint32, out0 *Handle, out1 *Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_fifo_read(handle Handle, elem_size uint, data unsafe.Pointer, data_size uint, actual_count *uint) Status
+
+//go:noescape
+//go:nosplit
+func Sys_fifo_write(handle Handle, elem_size uint, data unsafe.Pointer, count uint, actual_count *uint) Status
+
+//go:noescape
+//go:nosplit
+func Sys_framebuffer_get_info(resource Handle, format *uint32, width *uint32, height *uint32, stride *uint32) Status
+
+//go:noescape
+//go:nosplit
+func Sys_framebuffer_set_range(resource Handle, vmo Handle, len uint32, format uint32, width uint32, height uint32, stride uint32) Status
+
+//go:noescape
+//go:nosplit
+func Sys_futex_wait(value_ptr *int32, current_value int32, new_futex_owner Handle, deadline Time) Status
+
+//go:noescape
+//go:nosplit
+func Sys_futex_wake(value_ptr *int32, wake_count uint32) Status
+
+//go:noescape
+//go:nosplit
+func Sys_futex_requeue(value_ptr *int32, wake_count uint32, current_value int32, requeue_ptr *int32, requeue_count uint32, new_requeue_owner Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_futex_wake_single_owner(value_ptr *int32) Status
+
+//go:noescape
+//go:nosplit
+func Sys_futex_requeue_single_owner(value_ptr *int32, current_value int32, requeue_ptr *int32, requeue_count uint32, new_requeue_owner Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_futex_get_owner(value_ptr *int32, koid *uint64) Status
+
+//go:noescape
+//go:nosplit
+func Sys_guest_create(resource Handle, options uint32, guest_handle *Handle, vmar_handle *Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_guest_set_trap(handle Handle, kind uint32, addr Vaddr, size uint, port_handle Handle, key uint64) Status
+
+//go:noescape
+//go:nosplit
+func Sys_handle_close(handle Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_handle_close_many(handles *Handle, num_handles uint) Status
+
+//go:noescape
+//go:nosplit
+func Sys_handle_duplicate(handle Handle, rights Rights, out *Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_handle_replace(handle Handle, rights Rights, out *Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_interrupt_create(src_obj Handle, src_num uint32, options uint32, out_handle *Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_interrupt_bind(handle Handle, port_handle Handle, key uint64, options uint32) Status
+
+//go:noescape
+//go:nosplit
+func Sys_interrupt_wait(handle Handle, out_timestamp *Time) Status
+
+//go:noescape
+//go:nosplit
+func Sys_interrupt_destroy(handle Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_interrupt_ack(handle Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_interrupt_trigger(handle Handle, options uint32, timestamp Time) Status
+
+//go:noescape
+//go:nosplit
+func Sys_interrupt_bind_vcpu(handle Handle, vcpu Handle, options uint32) Status
+
+//go:noescape
+//go:nosplit
+func Sys_iommu_create(resource Handle, typ uint32, desc unsafe.Pointer, desc_size uint, out *Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_ioports_request(resource Handle, io_addr uint16, len uint32) Status
+
+//go:noescape
+//go:nosplit
+func Sys_ioports_release(resource Handle, io_addr uint16, len uint32) Status
+
+//go:noescape
+//go:nosplit
+func Sys_job_create(parent_job Handle, options uint32, out *Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_job_set_policy(handle Handle, options uint32, topic uint32, policy unsafe.Pointer, policy_size uint32) Status
+
+//go:noescape
+//go:nosplit
+func Sys_job_set_critical(job Handle, options uint32, process Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_ktrace_read(handle Handle, data unsafe.Pointer, offset uint32, data_size uint, actual *uint) Status
+
+//go:noescape
+//go:nosplit
+func Sys_ktrace_control(handle Handle, action uint32, options uint32, ptr unsafe.Pointer) Status
+
+//go:noescape
+//go:nosplit
+func Sys_ktrace_write(handle Handle, id uint32, arg0 uint32, arg1 uint32) Status
+
+//go:noescape
+//go:nosplit
+func Sys_nanosleep(deadline Time) Status
+
+//go:noescape
+//go:nosplit
+func Sys_ticks_get() int64
+
+//go:noescape
+//go:nosplit
+func Sys_ticks_per_second() int64
+
+//go:noescape
+//go:nosplit
+func Sys_deadline_after(nanoseconds Duration) Time
+
+//go:noescape
+//go:nosplit
+func Sys_vmar_unmap_handle_close_thread_exit(vmar_handle Handle, addr Vaddr, size uint, close_handle Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_futex_wake_handle_close_thread_exit(value_ptr *int32, wake_count uint32, new_value int32, close_handle Handle)
+
+//go:noescape
+//go:nosplit
+func Sys_ticks_get_via_kernel() int64
+
+//go:noescape
+//go:nosplit
+func Sys_msi_allocate(handle Handle, count uint32, out_allocation *Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_msi_create(handle Handle, options uint32, msi_id uint32, vmo Handle, vmo_offset uint, out_interrupt *Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_mtrace_control(handle Handle, kind uint32, action uint32, options uint32, ptr unsafe.Pointer, ptr_size uint) Status
+
+//go:noescape
+//go:nosplit
+func Sys_object_wait_one(handle Handle, signals Signals, deadline Time, observed *Signals) Status
+
+//go:noescape
+//go:nosplit
+func Sys_object_wait_many(items *WaitItem, num_items uint, deadline Time) Status
+
+//go:noescape
+//go:nosplit
+func Sys_object_wait_async(handle Handle, port Handle, key uint64, signals Signals, options uint32) Status
+
+//go:noescape
+//go:nosplit
+func Sys_object_signal(handle Handle, clear_mask uint32, set_mask uint32) Status
+
+//go:noescape
+//go:nosplit
+func Sys_object_signal_peer(handle Handle, clear_mask uint32, set_mask uint32) Status
+
+//go:noescape
+//go:nosplit
+func Sys_object_get_property(handle Handle, property uint32, value unsafe.Pointer, value_size uint) Status
+
+//go:noescape
+//go:nosplit
+func Sys_object_set_property(handle Handle, property uint32, value unsafe.Pointer, value_size uint) Status
+
+//go:noescape
+//go:nosplit
+func Sys_object_get_info(handle Handle, topic uint32, buffer unsafe.Pointer, buffer_size uint, actual *uint, avail *uint) Status
+
+//go:noescape
+//go:nosplit
+func Sys_object_get_child(handle Handle, koid uint64, rights Rights, out *Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_object_set_profile(handle Handle, profile Handle, options uint32) Status
+
+//go:noescape
+//go:nosplit
+func Sys_pager_create(options uint32, out *Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_pager_create_vmo(pager Handle, options uint32, port Handle, key uint64, size uint64, out *Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_pager_detach_vmo(pager Handle, vmo Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_pager_supply_pages(pager Handle, pager_vmo Handle, offset uint64, length uint64, aux_vmo Handle, aux_offset uint64) Status
+
+//go:noescape
+//go:nosplit
+func Sys_pager_op_range(pager Handle, op uint32, pager_vmo Handle, offset uint64, length uint64, data uint64) Status
+
+//go:noescape
+//go:nosplit
+func Sys_pc_firmware_tables(handle Handle, acpi_rsdp *Paddr, smbios *Paddr) Status
+
+//go:noescape
+//go:nosplit
+func Sys_pci_get_nth_device(handle Handle, index uint32, out_info *uintptr, out_handle *Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_pci_enable_bus_master(handle Handle, enable uint32) Status
+
+//go:noescape
+//go:nosplit
+func Sys_pci_reset_device(handle Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_pci_config_read(handle Handle, offset uint16, width uint, out_val *uint32) Status
+
+//go:noescape
+//go:nosplit
+func Sys_pci_config_write(handle Handle, offset uint16, width uint, val uint32) Status
+
+//go:noescape
+//go:nosplit
+func Sys_pci_cfg_pio_rw(handle Handle, bus uint8, dev uint8, funk uint8, offset uint8, val *uint32, width uint, write uint32) Status
+
+//go:noescape
+//go:nosplit
+func Sys_pci_get_bar(handle Handle, bar_num uint32, out_bar *uintptr, out_handle *Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_pci_map_interrupt(handle Handle, which_irq int32, out_handle *Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_pci_query_irq_mode(handle Handle, mode uint32, out_max_irqs *uint32) Status
+
+//go:noescape
+//go:nosplit
+func Sys_pci_set_irq_mode(handle Handle, mode uint32, requested_irq_count uint32) Status
+
+//go:noescape
+//go:nosplit
+func Sys_pci_init(handle Handle, init_buf *uintptr, len uint32) Status
+
+//go:noescape
+//go:nosplit
+func Sys_pci_add_subtract_io_range(handle Handle, mmio uint32, base uint64, len uint64, add uint32) Status
+
+//go:noescape
+//go:nosplit
+func Sys_pmt_unpin(handle Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_port_create(options uint32, out *Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_port_queue(handle Handle, packet *int) Status
+
+//go:noescape
+//go:nosplit
+func Sys_port_wait(handle Handle, deadline Time, packet *int) Status
+
+//go:noescape
+//go:nosplit
+func Sys_port_cancel(handle Handle, source Handle, key uint64) Status
+
+//go:noescape
+//go:nosplit
+func Sys_process_exit(retcode int64)
+
+//go:noescape
+//go:nosplit
+func Sys_process_create(job Handle, name *uint8, name_size uint, options uint32, proc_handle *Handle, vmar_handle *Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_process_start(handle Handle, thread Handle, entry Vaddr, stack Vaddr, arg1 Handle, arg2 uintptr) Status
+
+//go:noescape
+//go:nosplit
+func Sys_process_read_memory(handle Handle, vaddr Vaddr, buffer unsafe.Pointer, buffer_size uint, actual *uint) Status
+
+//go:noescape
+//go:nosplit
+func Sys_process_write_memory(handle Handle, vaddr Vaddr, buffer unsafe.Pointer, buffer_size uint, actual *uint) Status
+
+//go:noescape
+//go:nosplit
+func Sys_profile_create(root_job Handle, options uint32, profile *int, out *Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_resource_create(parent_rsrc Handle, options uint32, base uint64, size uint, name *uint8, name_size uint, resource_out *Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_smc_call(handle Handle, parameters *SMCParameters, out_smc_result *SMCResult) Status
+
+//go:noescape
+//go:nosplit
+func Sys_socket_create(options uint32, out0 *Handle, out1 *Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_socket_write(handle Handle, options uint32, buffer unsafe.Pointer, buffer_size uint, actual *uint) Status
+
+//go:noescape
+//go:nosplit
+func Sys_socket_read(handle Handle, options uint32, buffer unsafe.Pointer, buffer_size uint, actual *uint) Status
+
+//go:noescape
+//go:nosplit
+func Sys_socket_shutdown(handle Handle, options uint32) Status
+
+//go:noescape
+//go:nosplit
+func Sys_stream_create(options uint32, vmo Handle, seek uint64, out_stream *Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_stream_writev(handle Handle, options uint32, vector *uintptr, num_vector uint, actual *uint) Status
+
+//go:noescape
+//go:nosplit
+func Sys_stream_writev_at(handle Handle, options uint32, offset uint64, vector *uintptr, num_vector uint, actual *uint) Status
+
+//go:noescape
+//go:nosplit
+func Sys_stream_readv(handle Handle, options uint32, vector *uintptr, num_vector uint, actual *uint) Status
+
+//go:noescape
+//go:nosplit
+func Sys_stream_readv_at(handle Handle, options uint32, offset uint64, vector *uintptr, num_vector uint, actual *uint) Status
+
+//go:noescape
+//go:nosplit
+func Sys_stream_seek(handle Handle, whence uint32, offset int64, out_seek *uint64) Status
+
+//go:noescape
+//go:nosplit
+func Sys_syscall_test_0() Status
+
+//go:noescape
+//go:nosplit
+func Sys_syscall_test_1(a int32) Status
+
+//go:noescape
+//go:nosplit
+func Sys_syscall_test_2(a int32, b int32) Status
+
+//go:noescape
+//go:nosplit
+func Sys_syscall_test_3(a int32, b int32, c int32) Status
+
+//go:noescape
+//go:nosplit
+func Sys_syscall_test_4(a int32, b int32, c int32, d int32) Status
+
+//go:noescape
+//go:nosplit
+func Sys_syscall_test_5(a int32, b int32, c int32, d int32, e int32) Status
+
+//go:noescape
+//go:nosplit
+func Sys_syscall_test_6(a int32, b int32, c int32, d int32, e int32, f int32) Status
+
+//go:noescape
+//go:nosplit
+func Sys_syscall_test_7(a int32, b int32, c int32, d int32, e int32, f int32, g_ int32) Status
+
+//go:noescape
+//go:nosplit
+func Sys_syscall_test_8(a int32, b int32, c int32, d int32, e int32, f int32, g_ int32, h int32) Status
+
+//go:noescape
+//go:nosplit
+func Sys_syscall_test_wrapper(a int32, b int32, c int32) Status
+
+//go:noescape
+//go:nosplit
+func Sys_syscall_test_handle_create(return_value Status, out *Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_system_get_dcache_line_size() uint32
+
+//go:noescape
+//go:nosplit
+func Sys_system_get_num_cpus() uint32
+
+//go:noescape
+//go:nosplit
+func Sys_system_get_version_string() unsafe.Pointer
+
+//go:noescape
+//go:nosplit
+func Sys_system_get_page_size() uint32
+
+//go:noescape
+//go:nosplit
+func Sys_system_get_physmem() uint64
+
+//go:noescape
+//go:nosplit
+func Sys_system_get_features(kind uint32, features *uint32) Status
+
+//go:noescape
+//go:nosplit
+func Sys_system_get_event(root_job Handle, kind uint32, event *Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_system_mexec(resource Handle, kernel_vmo Handle, bootimage_vmo Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_system_mexec_payload_get(resource Handle, buffer unsafe.Pointer, buffer_size uint) Status
+
+//go:noescape
+//go:nosplit
+func Sys_system_powerctl(resource Handle, cmd uint32, arg *int) Status
+
+//go:noescape
+//go:nosplit
+func Sys_task_suspend(handle Handle, token *Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_task_suspend_token(handle Handle, token *Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_task_create_exception_channel(handle Handle, options uint32, out *Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_task_kill(handle Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_thread_exit()
+
+//go:noescape
+//go:nosplit
+func Sys_thread_create(process Handle, name *uint8, name_size uint, options uint32, out *Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_thread_start(handle Handle, thread_entry Vaddr, stack Vaddr, arg1 uintptr, arg2 uintptr) Status
+
+//go:noescape
+//go:nosplit
+func Sys_thread_read_state(handle Handle, kind uint32, buffer unsafe.Pointer, buffer_size uint) Status
+
+//go:noescape
+//go:nosplit
+func Sys_thread_write_state(handle Handle, kind uint32, buffer unsafe.Pointer, buffer_size uint) Status
+
+//go:noescape
+//go:nosplit
+func Sys_timer_create(options uint32, clock_id uint32, out *Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_timer_set(handle Handle, deadline Time, slack Duration) Status
+
+//go:noescape
+//go:nosplit
+func Sys_timer_cancel(handle Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_vcpu_create(guest Handle, options uint32, entry Vaddr, out *Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_vcpu_resume(handle Handle, packet *int) Status
+
+//go:noescape
+//go:nosplit
+func Sys_vcpu_interrupt(handle Handle, vector uint32) Status
+
+//go:noescape
+//go:nosplit
+func Sys_vcpu_read_state(handle Handle, kind uint32, buffer unsafe.Pointer, buffer_size uint) Status
+
+//go:noescape
+//go:nosplit
+func Sys_vcpu_write_state(handle Handle, kind uint32, buffer unsafe.Pointer, buffer_size uint) Status
+
+//go:noescape
+//go:nosplit
+func Sys_vmar_allocate(parent_vmar Handle, options VMFlag, offset uint, size uint, child_vmar *Handle, child_addr *Vaddr) Status
+
+//go:noescape
+//go:nosplit
+func Sys_vmar_destroy(handle Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_vmar_map(handle Handle, options VMFlag, vmar_offset uint, vmo Handle, vmo_offset uint64, len uint, mapped_addr *Vaddr) Status
+
+//go:noescape
+//go:nosplit
+func Sys_vmar_unmap(handle Handle, addr Vaddr, len uint) Status
+
+//go:noescape
+//go:nosplit
+func Sys_vmar_protect(handle Handle, options VMFlag, addr Vaddr, len uint) Status
+
+//go:noescape
+//go:nosplit
+func Sys_vmar_op_range(handle Handle, op uint32, address Vaddr, size uint, buffer unsafe.Pointer, buffer_size uint) Status
+
+//go:noescape
+//go:nosplit
+func Sys_vmo_create(size uint64, options uint32, out *Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_vmo_read(handle Handle, buffer unsafe.Pointer, offset uint64, buffer_size uint) Status
+
+//go:noescape
+//go:nosplit
+func Sys_vmo_write(handle Handle, buffer unsafe.Pointer, offset uint64, buffer_size uint) Status
+
+//go:noescape
+//go:nosplit
+func Sys_vmo_get_size(handle Handle, size *uint64) Status
+
+//go:noescape
+//go:nosplit
+func Sys_vmo_set_size(handle Handle, size uint64) Status
+
+//go:noescape
+//go:nosplit
+func Sys_vmo_op_range(handle Handle, op uint32, offset uint64, size uint64, buffer unsafe.Pointer, buffer_size uint) Status
+
+//go:noescape
+//go:nosplit
+func Sys_vmo_create_child(handle Handle, options uint32, offset uint64, size uint64, out *Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_vmo_set_cache_policy(handle Handle, cache_policy uint32) Status
+
+//go:noescape
+//go:nosplit
+func Sys_vmo_replace_as_executable(handle Handle, vmex Handle, out *Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_vmo_create_contiguous(bti Handle, size uint, alignment_log2 uint32, out *Handle) Status
+
+//go:noescape
+//go:nosplit
+func Sys_vmo_create_physical(resource Handle, paddr Paddr, size uint, out *Handle) Status
diff --git a/src/syscall/zx/syscalls_fuchsia_amd64.s b/src/syscall/zx/syscalls_fuchsia_amd64.s
new file mode 100644
index 0000000..4c9b26c
--- /dev/null
+++ b/src/syscall/zx/syscalls_fuchsia_amd64.s
@@ -0,0 +1,740 @@
+// Copyright 2019 The Fuchsia Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// WARNING: THIS FILE IS MACHINE GENERATED BY //tools/kazoo. DO NOT EDIT.
+
+#include "textflag.h"
+
+// func Sys_bti_create(iommu Handle, options uint32, bti_id uint64, out *Handle) Status
+TEXT ·Sys_bti_create(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_bti_create(SB)
+
+// func Sys_bti_pin(handle Handle, options uint32, vmo Handle, offset uint64, size uint64, addrs *Paddr, num_addrs uint, pmt *Handle) Status
+TEXT ·Sys_bti_pin(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_bti_pin(SB)
+
+// func Sys_bti_release_quarantine(handle Handle) Status
+TEXT ·Sys_bti_release_quarantine(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_bti_release_quarantine(SB)
+
+// func Sys_cache_flush(addr unsafe.Pointer, size uint, options uint32) Status
+TEXT ·Sys_cache_flush(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_cache_flush(SB)
+
+// func Sys_channel_create(options uint32, out0 *Handle, out1 *Handle) Status
+TEXT ·Sys_channel_create(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_channel_create(SB)
+
+// func Sys_channel_read(handle Handle, options uint32, bytes unsafe.Pointer, handles *Handle, num_bytes uint32, num_handles uint32, actual_bytes *uint32, actual_handles *uint32) Status
+TEXT ·Sys_channel_read(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_channel_read(SB)
+
+// func Sys_channel_read_etc(handle Handle, options uint32, bytes unsafe.Pointer, handles *HandleInfo, num_bytes uint32, num_handles uint32, actual_bytes *uint32, actual_handles *uint32) Status
+TEXT ·Sys_channel_read_etc(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_channel_read_etc(SB)
+
+// func Sys_channel_write(handle Handle, options uint32, bytes unsafe.Pointer, num_bytes uint32, handles *Handle, num_handles uint32) Status
+TEXT ·Sys_channel_write(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_channel_write(SB)
+
+// func Sys_channel_write_etc(handle Handle, options uint32, bytes unsafe.Pointer, num_bytes uint32, handles *HandleDisposition, num_handles uint32) Status
+TEXT ·Sys_channel_write_etc(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_channel_write_etc(SB)
+
+// func Sys_channel_call_noretry(handle Handle, options uint32, deadline Time, args *ChannelCallArgs, actual_bytes *uint32, actual_handles *uint32) Status
+TEXT ·Sys_channel_call_noretry(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_channel_call_noretry(SB)
+
+// func Sys_channel_call_finish(deadline Time, args *ChannelCallArgs, actual_bytes *uint32, actual_handles *uint32) Status
+TEXT ·Sys_channel_call_finish(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_channel_call_finish(SB)
+
+// func Sys_channel_call(handle Handle, options uint32, deadline Time, args *ChannelCallArgs, actual_bytes *uint32, actual_handles *uint32) Status
+TEXT ·Sys_channel_call(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_channel_call(SB)
+
+// func Sys_channel_call_etc_noretry(handle Handle, options uint32, deadline Time, args *ChannelCallEtcArgs, actual_bytes *uint32, actual_handles *uint32) Status
+TEXT ·Sys_channel_call_etc_noretry(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_channel_call_etc_noretry(SB)
+
+// func Sys_channel_call_etc_finish(deadline Time, args *ChannelCallEtcArgs, actual_bytes *uint32, actual_handles *uint32) Status
+TEXT ·Sys_channel_call_etc_finish(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_channel_call_etc_finish(SB)
+
+// func Sys_channel_call_etc(handle Handle, options uint32, deadline Time, args *ChannelCallEtcArgs, actual_bytes *uint32, actual_handles *uint32) Status
+TEXT ·Sys_channel_call_etc(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_channel_call_etc(SB)
+
+// func Sys_clock_get_monotonic() Time
+TEXT ·Sys_clock_get_monotonic(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_clock_get_monotonic(SB)
+
+// func Sys_clock_get_monotonic_via_kernel() Time
+TEXT ·Sys_clock_get_monotonic_via_kernel(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_clock_get_monotonic_via_kernel(SB)
+
+// func Sys_clock_create(options uint64, args unsafe.Pointer, out *Handle) Status
+TEXT ·Sys_clock_create(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_clock_create(SB)
+
+// func Sys_clock_read(handle Handle, now *Time) Status
+TEXT ·Sys_clock_read(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_clock_read(SB)
+
+// func Sys_clock_get_details(handle Handle, options uint64, details unsafe.Pointer) Status
+TEXT ·Sys_clock_get_details(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_clock_get_details(SB)
+
+// func Sys_clock_update(handle Handle, options uint64, args unsafe.Pointer) Status
+TEXT ·Sys_clock_update(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_clock_update(SB)
+
+// func Sys_cprng_draw_once(buffer unsafe.Pointer, buffer_size uint) Status
+TEXT ·Sys_cprng_draw_once(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_cprng_draw_once(SB)
+
+// func Sys_cprng_draw(buffer unsafe.Pointer, buffer_size uint)
+TEXT ·Sys_cprng_draw(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_cprng_draw(SB)
+
+// func Sys_cprng_add_entropy(buffer unsafe.Pointer, buffer_size uint) Status
+TEXT ·Sys_cprng_add_entropy(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_cprng_add_entropy(SB)
+
+// func Sys_debug_read(handle Handle, buffer *uint8, buffer_size uint, actual *uint) Status
+TEXT ·Sys_debug_read(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_debug_read(SB)
+
+// func Sys_debug_write(buffer *uint8, buffer_size uint) Status
+TEXT ·Sys_debug_write(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_debug_write(SB)
+
+// func Sys_debug_send_command(resource Handle, buffer *uint8, buffer_size uint) Status
+TEXT ·Sys_debug_send_command(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_debug_send_command(SB)
+
+// func Sys_debuglog_create(resource Handle, options uint32, out *Handle) Status
+TEXT ·Sys_debuglog_create(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_debuglog_create(SB)
+
+// func Sys_debuglog_write(handle Handle, options uint32, buffer unsafe.Pointer, buffer_size uint) Status
+TEXT ·Sys_debuglog_write(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_debuglog_write(SB)
+
+// func Sys_debuglog_read(handle Handle, options uint32, buffer unsafe.Pointer, buffer_size uint) Status
+TEXT ·Sys_debuglog_read(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_debuglog_read(SB)
+
+// func Sys_event_create(options uint32, out *Handle) Status
+TEXT ·Sys_event_create(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_event_create(SB)
+
+// func Sys_eventpair_create(options uint32, out0 *Handle, out1 *Handle) Status
+TEXT ·Sys_eventpair_create(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_eventpair_create(SB)
+
+// func Sys_exception_get_thread(handle Handle, out *Handle) Status
+TEXT ·Sys_exception_get_thread(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_exception_get_thread(SB)
+
+// func Sys_exception_get_process(handle Handle, out *Handle) Status
+TEXT ·Sys_exception_get_process(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_exception_get_process(SB)
+
+// func Sys_fifo_create(elem_count uint, elem_size uint, options uint32, out0 *Handle, out1 *Handle) Status
+TEXT ·Sys_fifo_create(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_fifo_create(SB)
+
+// func Sys_fifo_read(handle Handle, elem_size uint, data unsafe.Pointer, data_size uint, actual_count *uint) Status
+TEXT ·Sys_fifo_read(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_fifo_read(SB)
+
+// func Sys_fifo_write(handle Handle, elem_size uint, data unsafe.Pointer, count uint, actual_count *uint) Status
+TEXT ·Sys_fifo_write(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_fifo_write(SB)
+
+// func Sys_framebuffer_get_info(resource Handle, format *uint32, width *uint32, height *uint32, stride *uint32) Status
+TEXT ·Sys_framebuffer_get_info(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_framebuffer_get_info(SB)
+
+// func Sys_framebuffer_set_range(resource Handle, vmo Handle, len uint32, format uint32, width uint32, height uint32, stride uint32) Status
+TEXT ·Sys_framebuffer_set_range(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_framebuffer_set_range(SB)
+
+// func Sys_futex_wait(value_ptr *int32, current_value int32, new_futex_owner Handle, deadline Time) Status
+TEXT ·Sys_futex_wait(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_futex_wait(SB)
+
+// func Sys_futex_wake(value_ptr *int32, wake_count uint32) Status
+TEXT ·Sys_futex_wake(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_futex_wake(SB)
+
+// func Sys_futex_requeue(value_ptr *int32, wake_count uint32, current_value int32, requeue_ptr *int32, requeue_count uint32, new_requeue_owner Handle) Status
+TEXT ·Sys_futex_requeue(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_futex_requeue(SB)
+
+// func Sys_futex_wake_single_owner(value_ptr *int32) Status
+TEXT ·Sys_futex_wake_single_owner(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_futex_wake_single_owner(SB)
+
+// func Sys_futex_requeue_single_owner(value_ptr *int32, current_value int32, requeue_ptr *int32, requeue_count uint32, new_requeue_owner Handle) Status
+TEXT ·Sys_futex_requeue_single_owner(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_futex_requeue_single_owner(SB)
+
+// func Sys_futex_get_owner(value_ptr *int32, koid *uint64) Status
+TEXT ·Sys_futex_get_owner(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_futex_get_owner(SB)
+
+// func Sys_guest_create(resource Handle, options uint32, guest_handle *Handle, vmar_handle *Handle) Status
+TEXT ·Sys_guest_create(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_guest_create(SB)
+
+// func Sys_guest_set_trap(handle Handle, kind uint32, addr Vaddr, size uint, port_handle Handle, key uint64) Status
+TEXT ·Sys_guest_set_trap(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_guest_set_trap(SB)
+
+// func Sys_handle_close(handle Handle) Status
+TEXT ·Sys_handle_close(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_handle_close(SB)
+
+// func Sys_handle_close_many(handles *Handle, num_handles uint) Status
+TEXT ·Sys_handle_close_many(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_handle_close_many(SB)
+
+// func Sys_handle_duplicate(handle Handle, rights Rights, out *Handle) Status
+TEXT ·Sys_handle_duplicate(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_handle_duplicate(SB)
+
+// func Sys_handle_replace(handle Handle, rights Rights, out *Handle) Status
+TEXT ·Sys_handle_replace(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_handle_replace(SB)
+
+// func Sys_interrupt_create(src_obj Handle, src_num uint32, options uint32, out_handle *Handle) Status
+TEXT ·Sys_interrupt_create(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_interrupt_create(SB)
+
+// func Sys_interrupt_bind(handle Handle, port_handle Handle, key uint64, options uint32) Status
+TEXT ·Sys_interrupt_bind(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_interrupt_bind(SB)
+
+// func Sys_interrupt_wait(handle Handle, out_timestamp *Time) Status
+TEXT ·Sys_interrupt_wait(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_interrupt_wait(SB)
+
+// func Sys_interrupt_destroy(handle Handle) Status
+TEXT ·Sys_interrupt_destroy(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_interrupt_destroy(SB)
+
+// func Sys_interrupt_ack(handle Handle) Status
+TEXT ·Sys_interrupt_ack(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_interrupt_ack(SB)
+
+// func Sys_interrupt_trigger(handle Handle, options uint32, timestamp Time) Status
+TEXT ·Sys_interrupt_trigger(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_interrupt_trigger(SB)
+
+// func Sys_interrupt_bind_vcpu(handle Handle, vcpu Handle, options uint32) Status
+TEXT ·Sys_interrupt_bind_vcpu(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_interrupt_bind_vcpu(SB)
+
+// func Sys_iommu_create(resource Handle, typ uint32, desc unsafe.Pointer, desc_size uint, out *Handle) Status
+TEXT ·Sys_iommu_create(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_iommu_create(SB)
+
+// func Sys_ioports_request(resource Handle, io_addr uint16, len uint32) Status
+TEXT ·Sys_ioports_request(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_ioports_request(SB)
+
+// func Sys_ioports_release(resource Handle, io_addr uint16, len uint32) Status
+TEXT ·Sys_ioports_release(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_ioports_release(SB)
+
+// func Sys_job_create(parent_job Handle, options uint32, out *Handle) Status
+TEXT ·Sys_job_create(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_job_create(SB)
+
+// func Sys_job_set_policy(handle Handle, options uint32, topic uint32, policy unsafe.Pointer, policy_size uint32) Status
+TEXT ·Sys_job_set_policy(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_job_set_policy(SB)
+
+// func Sys_job_set_critical(job Handle, options uint32, process Handle) Status
+TEXT ·Sys_job_set_critical(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_job_set_critical(SB)
+
+// func Sys_ktrace_read(handle Handle, data unsafe.Pointer, offset uint32, data_size uint, actual *uint) Status
+TEXT ·Sys_ktrace_read(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_ktrace_read(SB)
+
+// func Sys_ktrace_control(handle Handle, action uint32, options uint32, ptr unsafe.Pointer) Status
+TEXT ·Sys_ktrace_control(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_ktrace_control(SB)
+
+// func Sys_ktrace_write(handle Handle, id uint32, arg0 uint32, arg1 uint32) Status
+TEXT ·Sys_ktrace_write(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_ktrace_write(SB)
+
+// func Sys_nanosleep(deadline Time) Status
+TEXT ·Sys_nanosleep(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_nanosleep(SB)
+
+// func Sys_ticks_get() int64
+TEXT ·Sys_ticks_get(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_ticks_get(SB)
+
+// func Sys_ticks_per_second() int64
+TEXT ·Sys_ticks_per_second(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_ticks_per_second(SB)
+
+// func Sys_deadline_after(nanoseconds Duration) Time
+TEXT ·Sys_deadline_after(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_deadline_after(SB)
+
+// func Sys_vmar_unmap_handle_close_thread_exit(vmar_handle Handle, addr Vaddr, size uint, close_handle Handle) Status
+TEXT ·Sys_vmar_unmap_handle_close_thread_exit(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_vmar_unmap_handle_close_thread_exit(SB)
+
+// func Sys_futex_wake_handle_close_thread_exit(value_ptr *int32, wake_count uint32, new_value int32, close_handle Handle)
+TEXT ·Sys_futex_wake_handle_close_thread_exit(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_futex_wake_handle_close_thread_exit(SB)
+
+// func Sys_ticks_get_via_kernel() int64
+TEXT ·Sys_ticks_get_via_kernel(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_ticks_get_via_kernel(SB)
+
+// func Sys_msi_allocate(handle Handle, count uint32, out_allocation *Handle) Status
+TEXT ·Sys_msi_allocate(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_msi_allocate(SB)
+
+// func Sys_msi_create(handle Handle, options uint32, msi_id uint32, vmo Handle, vmo_offset uint, out_interrupt *Handle) Status
+TEXT ·Sys_msi_create(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_msi_create(SB)
+
+// func Sys_mtrace_control(handle Handle, kind uint32, action uint32, options uint32, ptr unsafe.Pointer, ptr_size uint) Status
+TEXT ·Sys_mtrace_control(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_mtrace_control(SB)
+
+// func Sys_object_wait_one(handle Handle, signals Signals, deadline Time, observed *Signals) Status
+TEXT ·Sys_object_wait_one(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_object_wait_one(SB)
+
+// func Sys_object_wait_many(items *WaitItem, num_items uint, deadline Time) Status
+TEXT ·Sys_object_wait_many(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_object_wait_many(SB)
+
+// func Sys_object_wait_async(handle Handle, port Handle, key uint64, signals Signals, options uint32) Status
+TEXT ·Sys_object_wait_async(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_object_wait_async(SB)
+
+// func Sys_object_signal(handle Handle, clear_mask uint32, set_mask uint32) Status
+TEXT ·Sys_object_signal(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_object_signal(SB)
+
+// func Sys_object_signal_peer(handle Handle, clear_mask uint32, set_mask uint32) Status
+TEXT ·Sys_object_signal_peer(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_object_signal_peer(SB)
+
+// func Sys_object_get_property(handle Handle, property uint32, value unsafe.Pointer, value_size uint) Status
+TEXT ·Sys_object_get_property(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_object_get_property(SB)
+
+// func Sys_object_set_property(handle Handle, property uint32, value unsafe.Pointer, value_size uint) Status
+TEXT ·Sys_object_set_property(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_object_set_property(SB)
+
+// func Sys_object_get_info(handle Handle, topic uint32, buffer unsafe.Pointer, buffer_size uint, actual *uint, avail *uint) Status
+TEXT ·Sys_object_get_info(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_object_get_info(SB)
+
+// func Sys_object_get_child(handle Handle, koid uint64, rights Rights, out *Handle) Status
+TEXT ·Sys_object_get_child(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_object_get_child(SB)
+
+// func Sys_object_set_profile(handle Handle, profile Handle, options uint32) Status
+TEXT ·Sys_object_set_profile(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_object_set_profile(SB)
+
+// func Sys_pager_create(options uint32, out *Handle) Status
+TEXT ·Sys_pager_create(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_pager_create(SB)
+
+// func Sys_pager_create_vmo(pager Handle, options uint32, port Handle, key uint64, size uint64, out *Handle) Status
+TEXT ·Sys_pager_create_vmo(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_pager_create_vmo(SB)
+
+// func Sys_pager_detach_vmo(pager Handle, vmo Handle) Status
+TEXT ·Sys_pager_detach_vmo(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_pager_detach_vmo(SB)
+
+// func Sys_pager_supply_pages(pager Handle, pager_vmo Handle, offset uint64, length uint64, aux_vmo Handle, aux_offset uint64) Status
+TEXT ·Sys_pager_supply_pages(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_pager_supply_pages(SB)
+
+// func Sys_pager_op_range(pager Handle, op uint32, pager_vmo Handle, offset uint64, length uint64, data uint64) Status
+TEXT ·Sys_pager_op_range(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_pager_op_range(SB)
+
+// func Sys_pc_firmware_tables(handle Handle, acpi_rsdp *Paddr, smbios *Paddr) Status
+TEXT ·Sys_pc_firmware_tables(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_pc_firmware_tables(SB)
+
+// func Sys_pci_get_nth_device(handle Handle, index uint32, out_info *uintptr, out_handle *Handle) Status
+TEXT ·Sys_pci_get_nth_device(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_pci_get_nth_device(SB)
+
+// func Sys_pci_enable_bus_master(handle Handle, enable uint32) Status
+TEXT ·Sys_pci_enable_bus_master(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_pci_enable_bus_master(SB)
+
+// func Sys_pci_reset_device(handle Handle) Status
+TEXT ·Sys_pci_reset_device(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_pci_reset_device(SB)
+
+// func Sys_pci_config_read(handle Handle, offset uint16, width uint, out_val *uint32) Status
+TEXT ·Sys_pci_config_read(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_pci_config_read(SB)
+
+// func Sys_pci_config_write(handle Handle, offset uint16, width uint, val uint32) Status
+TEXT ·Sys_pci_config_write(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_pci_config_write(SB)
+
+// func Sys_pci_cfg_pio_rw(handle Handle, bus uint8, dev uint8, funk uint8, offset uint8, val *uint32, width uint, write uint32) Status
+TEXT ·Sys_pci_cfg_pio_rw(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_pci_cfg_pio_rw(SB)
+
+// func Sys_pci_get_bar(handle Handle, bar_num uint32, out_bar *uintptr, out_handle *Handle) Status
+TEXT ·Sys_pci_get_bar(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_pci_get_bar(SB)
+
+// func Sys_pci_map_interrupt(handle Handle, which_irq int32, out_handle *Handle) Status
+TEXT ·Sys_pci_map_interrupt(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_pci_map_interrupt(SB)
+
+// func Sys_pci_query_irq_mode(handle Handle, mode uint32, out_max_irqs *uint32) Status
+TEXT ·Sys_pci_query_irq_mode(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_pci_query_irq_mode(SB)
+
+// func Sys_pci_set_irq_mode(handle Handle, mode uint32, requested_irq_count uint32) Status
+TEXT ·Sys_pci_set_irq_mode(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_pci_set_irq_mode(SB)
+
+// func Sys_pci_init(handle Handle, init_buf *uintptr, len uint32) Status
+TEXT ·Sys_pci_init(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_pci_init(SB)
+
+// func Sys_pci_add_subtract_io_range(handle Handle, mmio uint32, base uint64, len uint64, add uint32) Status
+TEXT ·Sys_pci_add_subtract_io_range(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_pci_add_subtract_io_range(SB)
+
+// func Sys_pmt_unpin(handle Handle) Status
+TEXT ·Sys_pmt_unpin(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_pmt_unpin(SB)
+
+// func Sys_port_create(options uint32, out *Handle) Status
+TEXT ·Sys_port_create(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_port_create(SB)
+
+// func Sys_port_queue(handle Handle, packet *int) Status
+TEXT ·Sys_port_queue(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_port_queue(SB)
+
+// func Sys_port_wait(handle Handle, deadline Time, packet *int) Status
+TEXT ·Sys_port_wait(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_port_wait(SB)
+
+// func Sys_port_cancel(handle Handle, source Handle, key uint64) Status
+TEXT ·Sys_port_cancel(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_port_cancel(SB)
+
+// func Sys_process_exit(retcode int64)
+TEXT ·Sys_process_exit(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_process_exit(SB)
+
+// func Sys_process_create(job Handle, name *uint8, name_size uint, options uint32, proc_handle *Handle, vmar_handle *Handle) Status
+TEXT ·Sys_process_create(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_process_create(SB)
+
+// func Sys_process_start(handle Handle, thread Handle, entry Vaddr, stack Vaddr, arg1 Handle, arg2 uintptr) Status
+TEXT ·Sys_process_start(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_process_start(SB)
+
+// func Sys_process_read_memory(handle Handle, vaddr Vaddr, buffer unsafe.Pointer, buffer_size uint, actual *uint) Status
+TEXT ·Sys_process_read_memory(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_process_read_memory(SB)
+
+// func Sys_process_write_memory(handle Handle, vaddr Vaddr, buffer unsafe.Pointer, buffer_size uint, actual *uint) Status
+TEXT ·Sys_process_write_memory(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_process_write_memory(SB)
+
+// func Sys_profile_create(root_job Handle, options uint32, profile *int, out *Handle) Status
+TEXT ·Sys_profile_create(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_profile_create(SB)
+
+// func Sys_resource_create(parent_rsrc Handle, options uint32, base uint64, size uint, name *uint8, name_size uint, resource_out *Handle) Status
+TEXT ·Sys_resource_create(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_resource_create(SB)
+
+// func Sys_smc_call(handle Handle, parameters *SMCParameters, out_smc_result *SMCResult) Status
+TEXT ·Sys_smc_call(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_smc_call(SB)
+
+// func Sys_socket_create(options uint32, out0 *Handle, out1 *Handle) Status
+TEXT ·Sys_socket_create(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_socket_create(SB)
+
+// func Sys_socket_write(handle Handle, options uint32, buffer unsafe.Pointer, buffer_size uint, actual *uint) Status
+TEXT ·Sys_socket_write(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_socket_write(SB)
+
+// func Sys_socket_read(handle Handle, options uint32, buffer unsafe.Pointer, buffer_size uint, actual *uint) Status
+TEXT ·Sys_socket_read(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_socket_read(SB)
+
+// func Sys_socket_shutdown(handle Handle, options uint32) Status
+TEXT ·Sys_socket_shutdown(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_socket_shutdown(SB)
+
+// func Sys_stream_create(options uint32, vmo Handle, seek uint64, out_stream *Handle) Status
+TEXT ·Sys_stream_create(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_stream_create(SB)
+
+// func Sys_stream_writev(handle Handle, options uint32, vector *uintptr, num_vector uint, actual *uint) Status
+TEXT ·Sys_stream_writev(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_stream_writev(SB)
+
+// func Sys_stream_writev_at(handle Handle, options uint32, offset uint64, vector *uintptr, num_vector uint, actual *uint) Status
+TEXT ·Sys_stream_writev_at(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_stream_writev_at(SB)
+
+// func Sys_stream_readv(handle Handle, options uint32, vector *uintptr, num_vector uint, actual *uint) Status
+TEXT ·Sys_stream_readv(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_stream_readv(SB)
+
+// func Sys_stream_readv_at(handle Handle, options uint32, offset uint64, vector *uintptr, num_vector uint, actual *uint) Status
+TEXT ·Sys_stream_readv_at(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_stream_readv_at(SB)
+
+// func Sys_stream_seek(handle Handle, whence uint32, offset int64, out_seek *uint64) Status
+TEXT ·Sys_stream_seek(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_stream_seek(SB)
+
+// func Sys_syscall_test_0() Status
+TEXT ·Sys_syscall_test_0(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_syscall_test_0(SB)
+
+// func Sys_syscall_test_1(a int32) Status
+TEXT ·Sys_syscall_test_1(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_syscall_test_1(SB)
+
+// func Sys_syscall_test_2(a int32, b int32) Status
+TEXT ·Sys_syscall_test_2(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_syscall_test_2(SB)
+
+// func Sys_syscall_test_3(a int32, b int32, c int32) Status
+TEXT ·Sys_syscall_test_3(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_syscall_test_3(SB)
+
+// func Sys_syscall_test_4(a int32, b int32, c int32, d int32) Status
+TEXT ·Sys_syscall_test_4(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_syscall_test_4(SB)
+
+// func Sys_syscall_test_5(a int32, b int32, c int32, d int32, e int32) Status
+TEXT ·Sys_syscall_test_5(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_syscall_test_5(SB)
+
+// func Sys_syscall_test_6(a int32, b int32, c int32, d int32, e int32, f int32) Status
+TEXT ·Sys_syscall_test_6(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_syscall_test_6(SB)
+
+// func Sys_syscall_test_7(a int32, b int32, c int32, d int32, e int32, f int32, g_ int32) Status
+TEXT ·Sys_syscall_test_7(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_syscall_test_7(SB)
+
+// func Sys_syscall_test_8(a int32, b int32, c int32, d int32, e int32, f int32, g_ int32, h int32) Status
+TEXT ·Sys_syscall_test_8(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_syscall_test_8(SB)
+
+// func Sys_syscall_test_wrapper(a int32, b int32, c int32) Status
+TEXT ·Sys_syscall_test_wrapper(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_syscall_test_wrapper(SB)
+
+// func Sys_syscall_test_handle_create(return_value Status, out *Handle) Status
+TEXT ·Sys_syscall_test_handle_create(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_syscall_test_handle_create(SB)
+
+// func Sys_system_get_dcache_line_size() uint32
+TEXT ·Sys_system_get_dcache_line_size(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_system_get_dcache_line_size(SB)
+
+// func Sys_system_get_num_cpus() uint32
+TEXT ·Sys_system_get_num_cpus(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_system_get_num_cpus(SB)
+
+// func Sys_system_get_version_string() unsafe.Pointer
+TEXT ·Sys_system_get_version_string(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_system_get_version_string(SB)
+
+// func Sys_system_get_page_size() uint32
+TEXT ·Sys_system_get_page_size(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_system_get_page_size(SB)
+
+// func Sys_system_get_physmem() uint64
+TEXT ·Sys_system_get_physmem(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_system_get_physmem(SB)
+
+// func Sys_system_get_features(kind uint32, features *uint32) Status
+TEXT ·Sys_system_get_features(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_system_get_features(SB)
+
+// func Sys_system_get_event(root_job Handle, kind uint32, event *Handle) Status
+TEXT ·Sys_system_get_event(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_system_get_event(SB)
+
+// func Sys_system_mexec(resource Handle, kernel_vmo Handle, bootimage_vmo Handle) Status
+TEXT ·Sys_system_mexec(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_system_mexec(SB)
+
+// func Sys_system_mexec_payload_get(resource Handle, buffer unsafe.Pointer, buffer_size uint) Status
+TEXT ·Sys_system_mexec_payload_get(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_system_mexec_payload_get(SB)
+
+// func Sys_system_powerctl(resource Handle, cmd uint32, arg *int) Status
+TEXT ·Sys_system_powerctl(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_system_powerctl(SB)
+
+// func Sys_task_suspend(handle Handle, token *Handle) Status
+TEXT ·Sys_task_suspend(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_task_suspend(SB)
+
+// func Sys_task_suspend_token(handle Handle, token *Handle) Status
+TEXT ·Sys_task_suspend_token(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_task_suspend_token(SB)
+
+// func Sys_task_create_exception_channel(handle Handle, options uint32, out *Handle) Status
+TEXT ·Sys_task_create_exception_channel(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_task_create_exception_channel(SB)
+
+// func Sys_task_kill(handle Handle) Status
+TEXT ·Sys_task_kill(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_task_kill(SB)
+
+// func Sys_thread_exit()
+TEXT ·Sys_thread_exit(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_thread_exit(SB)
+
+// func Sys_thread_create(process Handle, name *uint8, name_size uint, options uint32, out *Handle) Status
+TEXT ·Sys_thread_create(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_thread_create(SB)
+
+// func Sys_thread_start(handle Handle, thread_entry Vaddr, stack Vaddr, arg1 uintptr, arg2 uintptr) Status
+TEXT ·Sys_thread_start(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_thread_start(SB)
+
+// func Sys_thread_read_state(handle Handle, kind uint32, buffer unsafe.Pointer, buffer_size uint) Status
+TEXT ·Sys_thread_read_state(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_thread_read_state(SB)
+
+// func Sys_thread_write_state(handle Handle, kind uint32, buffer unsafe.Pointer, buffer_size uint) Status
+TEXT ·Sys_thread_write_state(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_thread_write_state(SB)
+
+// func Sys_timer_create(options uint32, clock_id uint32, out *Handle) Status
+TEXT ·Sys_timer_create(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_timer_create(SB)
+
+// func Sys_timer_set(handle Handle, deadline Time, slack Duration) Status
+TEXT ·Sys_timer_set(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_timer_set(SB)
+
+// func Sys_timer_cancel(handle Handle) Status
+TEXT ·Sys_timer_cancel(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_timer_cancel(SB)
+
+// func Sys_vcpu_create(guest Handle, options uint32, entry Vaddr, out *Handle) Status
+TEXT ·Sys_vcpu_create(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_vcpu_create(SB)
+
+// func Sys_vcpu_resume(handle Handle, packet *int) Status
+TEXT ·Sys_vcpu_resume(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_vcpu_resume(SB)
+
+// func Sys_vcpu_interrupt(handle Handle, vector uint32) Status
+TEXT ·Sys_vcpu_interrupt(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_vcpu_interrupt(SB)
+
+// func Sys_vcpu_read_state(handle Handle, kind uint32, buffer unsafe.Pointer, buffer_size uint) Status
+TEXT ·Sys_vcpu_read_state(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_vcpu_read_state(SB)
+
+// func Sys_vcpu_write_state(handle Handle, kind uint32, buffer unsafe.Pointer, buffer_size uint) Status
+TEXT ·Sys_vcpu_write_state(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_vcpu_write_state(SB)
+
+// func Sys_vmar_allocate(parent_vmar Handle, options VMFlag, offset uint, size uint, child_vmar *Handle, child_addr *Vaddr) Status
+TEXT ·Sys_vmar_allocate(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_vmar_allocate(SB)
+
+// func Sys_vmar_destroy(handle Handle) Status
+TEXT ·Sys_vmar_destroy(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_vmar_destroy(SB)
+
+// func Sys_vmar_map(handle Handle, options VMFlag, vmar_offset uint, vmo Handle, vmo_offset uint64, len uint, mapped_addr *Vaddr) Status
+TEXT ·Sys_vmar_map(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_vmar_map(SB)
+
+// func Sys_vmar_unmap(handle Handle, addr Vaddr, len uint) Status
+TEXT ·Sys_vmar_unmap(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_vmar_unmap(SB)
+
+// func Sys_vmar_protect(handle Handle, options VMFlag, addr Vaddr, len uint) Status
+TEXT ·Sys_vmar_protect(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_vmar_protect(SB)
+
+// func Sys_vmar_op_range(handle Handle, op uint32, address Vaddr, size uint, buffer unsafe.Pointer, buffer_size uint) Status
+TEXT ·Sys_vmar_op_range(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_vmar_op_range(SB)
+
+// func Sys_vmo_create(size uint64, options uint32, out *Handle) Status
+TEXT ·Sys_vmo_create(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_vmo_create(SB)
+
+// func Sys_vmo_read(handle Handle, buffer unsafe.Pointer, offset uint64, buffer_size uint) Status
+TEXT ·Sys_vmo_read(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_vmo_read(SB)
+
+// func Sys_vmo_write(handle Handle, buffer unsafe.Pointer, offset uint64, buffer_size uint) Status
+TEXT ·Sys_vmo_write(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_vmo_write(SB)
+
+// func Sys_vmo_get_size(handle Handle, size *uint64) Status
+TEXT ·Sys_vmo_get_size(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_vmo_get_size(SB)
+
+// func Sys_vmo_set_size(handle Handle, size uint64) Status
+TEXT ·Sys_vmo_set_size(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_vmo_set_size(SB)
+
+// func Sys_vmo_op_range(handle Handle, op uint32, offset uint64, size uint64, buffer unsafe.Pointer, buffer_size uint) Status
+TEXT ·Sys_vmo_op_range(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_vmo_op_range(SB)
+
+// func Sys_vmo_create_child(handle Handle, options uint32, offset uint64, size uint64, out *Handle) Status
+TEXT ·Sys_vmo_create_child(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_vmo_create_child(SB)
+
+// func Sys_vmo_set_cache_policy(handle Handle, cache_policy uint32) Status
+TEXT ·Sys_vmo_set_cache_policy(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_vmo_set_cache_policy(SB)
+
+// func Sys_vmo_replace_as_executable(handle Handle, vmex Handle, out *Handle) Status
+TEXT ·Sys_vmo_replace_as_executable(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_vmo_replace_as_executable(SB)
+
+// func Sys_vmo_create_contiguous(bti Handle, size uint, alignment_log2 uint32, out *Handle) Status
+TEXT ·Sys_vmo_create_contiguous(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_vmo_create_contiguous(SB)
+
+// func Sys_vmo_create_physical(resource Handle, paddr Paddr, size uint, out *Handle) Status
+TEXT ·Sys_vmo_create_physical(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_vmo_create_physical(SB)
+
diff --git a/src/syscall/zx/syscalls_fuchsia_arm64.s b/src/syscall/zx/syscalls_fuchsia_arm64.s
new file mode 100644
index 0000000..4c9b26c
--- /dev/null
+++ b/src/syscall/zx/syscalls_fuchsia_arm64.s
@@ -0,0 +1,740 @@
+// Copyright 2019 The Fuchsia Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// WARNING: THIS FILE IS MACHINE GENERATED BY //tools/kazoo. DO NOT EDIT.
+
+#include "textflag.h"
+
+// func Sys_bti_create(iommu Handle, options uint32, bti_id uint64, out *Handle) Status
+TEXT ·Sys_bti_create(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_bti_create(SB)
+
+// func Sys_bti_pin(handle Handle, options uint32, vmo Handle, offset uint64, size uint64, addrs *Paddr, num_addrs uint, pmt *Handle) Status
+TEXT ·Sys_bti_pin(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_bti_pin(SB)
+
+// func Sys_bti_release_quarantine(handle Handle) Status
+TEXT ·Sys_bti_release_quarantine(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_bti_release_quarantine(SB)
+
+// func Sys_cache_flush(addr unsafe.Pointer, size uint, options uint32) Status
+TEXT ·Sys_cache_flush(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_cache_flush(SB)
+
+// func Sys_channel_create(options uint32, out0 *Handle, out1 *Handle) Status
+TEXT ·Sys_channel_create(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_channel_create(SB)
+
+// func Sys_channel_read(handle Handle, options uint32, bytes unsafe.Pointer, handles *Handle, num_bytes uint32, num_handles uint32, actual_bytes *uint32, actual_handles *uint32) Status
+TEXT ·Sys_channel_read(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_channel_read(SB)
+
+// func Sys_channel_read_etc(handle Handle, options uint32, bytes unsafe.Pointer, handles *HandleInfo, num_bytes uint32, num_handles uint32, actual_bytes *uint32, actual_handles *uint32) Status
+TEXT ·Sys_channel_read_etc(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_channel_read_etc(SB)
+
+// func Sys_channel_write(handle Handle, options uint32, bytes unsafe.Pointer, num_bytes uint32, handles *Handle, num_handles uint32) Status
+TEXT ·Sys_channel_write(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_channel_write(SB)
+
+// func Sys_channel_write_etc(handle Handle, options uint32, bytes unsafe.Pointer, num_bytes uint32, handles *HandleDisposition, num_handles uint32) Status
+TEXT ·Sys_channel_write_etc(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_channel_write_etc(SB)
+
+// func Sys_channel_call_noretry(handle Handle, options uint32, deadline Time, args *ChannelCallArgs, actual_bytes *uint32, actual_handles *uint32) Status
+TEXT ·Sys_channel_call_noretry(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_channel_call_noretry(SB)
+
+// func Sys_channel_call_finish(deadline Time, args *ChannelCallArgs, actual_bytes *uint32, actual_handles *uint32) Status
+TEXT ·Sys_channel_call_finish(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_channel_call_finish(SB)
+
+// func Sys_channel_call(handle Handle, options uint32, deadline Time, args *ChannelCallArgs, actual_bytes *uint32, actual_handles *uint32) Status
+TEXT ·Sys_channel_call(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_channel_call(SB)
+
+// func Sys_channel_call_etc_noretry(handle Handle, options uint32, deadline Time, args *ChannelCallEtcArgs, actual_bytes *uint32, actual_handles *uint32) Status
+TEXT ·Sys_channel_call_etc_noretry(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_channel_call_etc_noretry(SB)
+
+// func Sys_channel_call_etc_finish(deadline Time, args *ChannelCallEtcArgs, actual_bytes *uint32, actual_handles *uint32) Status
+TEXT ·Sys_channel_call_etc_finish(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_channel_call_etc_finish(SB)
+
+// func Sys_channel_call_etc(handle Handle, options uint32, deadline Time, args *ChannelCallEtcArgs, actual_bytes *uint32, actual_handles *uint32) Status
+TEXT ·Sys_channel_call_etc(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_channel_call_etc(SB)
+
+// func Sys_clock_get_monotonic() Time
+TEXT ·Sys_clock_get_monotonic(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_clock_get_monotonic(SB)
+
+// func Sys_clock_get_monotonic_via_kernel() Time
+TEXT ·Sys_clock_get_monotonic_via_kernel(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_clock_get_monotonic_via_kernel(SB)
+
+// func Sys_clock_create(options uint64, args unsafe.Pointer, out *Handle) Status
+TEXT ·Sys_clock_create(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_clock_create(SB)
+
+// func Sys_clock_read(handle Handle, now *Time) Status
+TEXT ·Sys_clock_read(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_clock_read(SB)
+
+// func Sys_clock_get_details(handle Handle, options uint64, details unsafe.Pointer) Status
+TEXT ·Sys_clock_get_details(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_clock_get_details(SB)
+
+// func Sys_clock_update(handle Handle, options uint64, args unsafe.Pointer) Status
+TEXT ·Sys_clock_update(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_clock_update(SB)
+
+// func Sys_cprng_draw_once(buffer unsafe.Pointer, buffer_size uint) Status
+TEXT ·Sys_cprng_draw_once(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_cprng_draw_once(SB)
+
+// func Sys_cprng_draw(buffer unsafe.Pointer, buffer_size uint)
+TEXT ·Sys_cprng_draw(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_cprng_draw(SB)
+
+// func Sys_cprng_add_entropy(buffer unsafe.Pointer, buffer_size uint) Status
+TEXT ·Sys_cprng_add_entropy(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_cprng_add_entropy(SB)
+
+// func Sys_debug_read(handle Handle, buffer *uint8, buffer_size uint, actual *uint) Status
+TEXT ·Sys_debug_read(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_debug_read(SB)
+
+// func Sys_debug_write(buffer *uint8, buffer_size uint) Status
+TEXT ·Sys_debug_write(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_debug_write(SB)
+
+// func Sys_debug_send_command(resource Handle, buffer *uint8, buffer_size uint) Status
+TEXT ·Sys_debug_send_command(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_debug_send_command(SB)
+
+// func Sys_debuglog_create(resource Handle, options uint32, out *Handle) Status
+TEXT ·Sys_debuglog_create(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_debuglog_create(SB)
+
+// func Sys_debuglog_write(handle Handle, options uint32, buffer unsafe.Pointer, buffer_size uint) Status
+TEXT ·Sys_debuglog_write(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_debuglog_write(SB)
+
+// func Sys_debuglog_read(handle Handle, options uint32, buffer unsafe.Pointer, buffer_size uint) Status
+TEXT ·Sys_debuglog_read(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_debuglog_read(SB)
+
+// func Sys_event_create(options uint32, out *Handle) Status
+TEXT ·Sys_event_create(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_event_create(SB)
+
+// func Sys_eventpair_create(options uint32, out0 *Handle, out1 *Handle) Status
+TEXT ·Sys_eventpair_create(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_eventpair_create(SB)
+
+// func Sys_exception_get_thread(handle Handle, out *Handle) Status
+TEXT ·Sys_exception_get_thread(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_exception_get_thread(SB)
+
+// func Sys_exception_get_process(handle Handle, out *Handle) Status
+TEXT ·Sys_exception_get_process(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_exception_get_process(SB)
+
+// func Sys_fifo_create(elem_count uint, elem_size uint, options uint32, out0 *Handle, out1 *Handle) Status
+TEXT ·Sys_fifo_create(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_fifo_create(SB)
+
+// func Sys_fifo_read(handle Handle, elem_size uint, data unsafe.Pointer, data_size uint, actual_count *uint) Status
+TEXT ·Sys_fifo_read(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_fifo_read(SB)
+
+// func Sys_fifo_write(handle Handle, elem_size uint, data unsafe.Pointer, count uint, actual_count *uint) Status
+TEXT ·Sys_fifo_write(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_fifo_write(SB)
+
+// func Sys_framebuffer_get_info(resource Handle, format *uint32, width *uint32, height *uint32, stride *uint32) Status
+TEXT ·Sys_framebuffer_get_info(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_framebuffer_get_info(SB)
+
+// func Sys_framebuffer_set_range(resource Handle, vmo Handle, len uint32, format uint32, width uint32, height uint32, stride uint32) Status
+TEXT ·Sys_framebuffer_set_range(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_framebuffer_set_range(SB)
+
+// func Sys_futex_wait(value_ptr *int32, current_value int32, new_futex_owner Handle, deadline Time) Status
+TEXT ·Sys_futex_wait(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_futex_wait(SB)
+
+// func Sys_futex_wake(value_ptr *int32, wake_count uint32) Status
+TEXT ·Sys_futex_wake(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_futex_wake(SB)
+
+// func Sys_futex_requeue(value_ptr *int32, wake_count uint32, current_value int32, requeue_ptr *int32, requeue_count uint32, new_requeue_owner Handle) Status
+TEXT ·Sys_futex_requeue(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_futex_requeue(SB)
+
+// func Sys_futex_wake_single_owner(value_ptr *int32) Status
+TEXT ·Sys_futex_wake_single_owner(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_futex_wake_single_owner(SB)
+
+// func Sys_futex_requeue_single_owner(value_ptr *int32, current_value int32, requeue_ptr *int32, requeue_count uint32, new_requeue_owner Handle) Status
+TEXT ·Sys_futex_requeue_single_owner(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_futex_requeue_single_owner(SB)
+
+// func Sys_futex_get_owner(value_ptr *int32, koid *uint64) Status
+TEXT ·Sys_futex_get_owner(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_futex_get_owner(SB)
+
+// func Sys_guest_create(resource Handle, options uint32, guest_handle *Handle, vmar_handle *Handle) Status
+TEXT ·Sys_guest_create(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_guest_create(SB)
+
+// func Sys_guest_set_trap(handle Handle, kind uint32, addr Vaddr, size uint, port_handle Handle, key uint64) Status
+TEXT ·Sys_guest_set_trap(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_guest_set_trap(SB)
+
+// func Sys_handle_close(handle Handle) Status
+TEXT ·Sys_handle_close(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_handle_close(SB)
+
+// func Sys_handle_close_many(handles *Handle, num_handles uint) Status
+TEXT ·Sys_handle_close_many(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_handle_close_many(SB)
+
+// func Sys_handle_duplicate(handle Handle, rights Rights, out *Handle) Status
+TEXT ·Sys_handle_duplicate(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_handle_duplicate(SB)
+
+// func Sys_handle_replace(handle Handle, rights Rights, out *Handle) Status
+TEXT ·Sys_handle_replace(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_handle_replace(SB)
+
+// func Sys_interrupt_create(src_obj Handle, src_num uint32, options uint32, out_handle *Handle) Status
+TEXT ·Sys_interrupt_create(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_interrupt_create(SB)
+
+// func Sys_interrupt_bind(handle Handle, port_handle Handle, key uint64, options uint32) Status
+TEXT ·Sys_interrupt_bind(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_interrupt_bind(SB)
+
+// func Sys_interrupt_wait(handle Handle, out_timestamp *Time) Status
+TEXT ·Sys_interrupt_wait(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_interrupt_wait(SB)
+
+// func Sys_interrupt_destroy(handle Handle) Status
+TEXT ·Sys_interrupt_destroy(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_interrupt_destroy(SB)
+
+// func Sys_interrupt_ack(handle Handle) Status
+TEXT ·Sys_interrupt_ack(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_interrupt_ack(SB)
+
+// func Sys_interrupt_trigger(handle Handle, options uint32, timestamp Time) Status
+TEXT ·Sys_interrupt_trigger(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_interrupt_trigger(SB)
+
+// func Sys_interrupt_bind_vcpu(handle Handle, vcpu Handle, options uint32) Status
+TEXT ·Sys_interrupt_bind_vcpu(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_interrupt_bind_vcpu(SB)
+
+// func Sys_iommu_create(resource Handle, typ uint32, desc unsafe.Pointer, desc_size uint, out *Handle) Status
+TEXT ·Sys_iommu_create(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_iommu_create(SB)
+
+// func Sys_ioports_request(resource Handle, io_addr uint16, len uint32) Status
+TEXT ·Sys_ioports_request(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_ioports_request(SB)
+
+// func Sys_ioports_release(resource Handle, io_addr uint16, len uint32) Status
+TEXT ·Sys_ioports_release(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_ioports_release(SB)
+
+// func Sys_job_create(parent_job Handle, options uint32, out *Handle) Status
+TEXT ·Sys_job_create(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_job_create(SB)
+
+// func Sys_job_set_policy(handle Handle, options uint32, topic uint32, policy unsafe.Pointer, policy_size uint32) Status
+TEXT ·Sys_job_set_policy(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_job_set_policy(SB)
+
+// func Sys_job_set_critical(job Handle, options uint32, process Handle) Status
+TEXT ·Sys_job_set_critical(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_job_set_critical(SB)
+
+// func Sys_ktrace_read(handle Handle, data unsafe.Pointer, offset uint32, data_size uint, actual *uint) Status
+TEXT ·Sys_ktrace_read(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_ktrace_read(SB)
+
+// func Sys_ktrace_control(handle Handle, action uint32, options uint32, ptr unsafe.Pointer) Status
+TEXT ·Sys_ktrace_control(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_ktrace_control(SB)
+
+// func Sys_ktrace_write(handle Handle, id uint32, arg0 uint32, arg1 uint32) Status
+TEXT ·Sys_ktrace_write(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_ktrace_write(SB)
+
+// func Sys_nanosleep(deadline Time) Status
+TEXT ·Sys_nanosleep(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_nanosleep(SB)
+
+// func Sys_ticks_get() int64
+TEXT ·Sys_ticks_get(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_ticks_get(SB)
+
+// func Sys_ticks_per_second() int64
+TEXT ·Sys_ticks_per_second(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_ticks_per_second(SB)
+
+// func Sys_deadline_after(nanoseconds Duration) Time
+TEXT ·Sys_deadline_after(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_deadline_after(SB)
+
+// func Sys_vmar_unmap_handle_close_thread_exit(vmar_handle Handle, addr Vaddr, size uint, close_handle Handle) Status
+TEXT ·Sys_vmar_unmap_handle_close_thread_exit(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_vmar_unmap_handle_close_thread_exit(SB)
+
+// func Sys_futex_wake_handle_close_thread_exit(value_ptr *int32, wake_count uint32, new_value int32, close_handle Handle)
+TEXT ·Sys_futex_wake_handle_close_thread_exit(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_futex_wake_handle_close_thread_exit(SB)
+
+// func Sys_ticks_get_via_kernel() int64
+TEXT ·Sys_ticks_get_via_kernel(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_ticks_get_via_kernel(SB)
+
+// func Sys_msi_allocate(handle Handle, count uint32, out_allocation *Handle) Status
+TEXT ·Sys_msi_allocate(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_msi_allocate(SB)
+
+// func Sys_msi_create(handle Handle, options uint32, msi_id uint32, vmo Handle, vmo_offset uint, out_interrupt *Handle) Status
+TEXT ·Sys_msi_create(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_msi_create(SB)
+
+// func Sys_mtrace_control(handle Handle, kind uint32, action uint32, options uint32, ptr unsafe.Pointer, ptr_size uint) Status
+TEXT ·Sys_mtrace_control(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_mtrace_control(SB)
+
+// func Sys_object_wait_one(handle Handle, signals Signals, deadline Time, observed *Signals) Status
+TEXT ·Sys_object_wait_one(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_object_wait_one(SB)
+
+// func Sys_object_wait_many(items *WaitItem, num_items uint, deadline Time) Status
+TEXT ·Sys_object_wait_many(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_object_wait_many(SB)
+
+// func Sys_object_wait_async(handle Handle, port Handle, key uint64, signals Signals, options uint32) Status
+TEXT ·Sys_object_wait_async(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_object_wait_async(SB)
+
+// func Sys_object_signal(handle Handle, clear_mask uint32, set_mask uint32) Status
+TEXT ·Sys_object_signal(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_object_signal(SB)
+
+// func Sys_object_signal_peer(handle Handle, clear_mask uint32, set_mask uint32) Status
+TEXT ·Sys_object_signal_peer(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_object_signal_peer(SB)
+
+// func Sys_object_get_property(handle Handle, property uint32, value unsafe.Pointer, value_size uint) Status
+TEXT ·Sys_object_get_property(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_object_get_property(SB)
+
+// func Sys_object_set_property(handle Handle, property uint32, value unsafe.Pointer, value_size uint) Status
+TEXT ·Sys_object_set_property(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_object_set_property(SB)
+
+// func Sys_object_get_info(handle Handle, topic uint32, buffer unsafe.Pointer, buffer_size uint, actual *uint, avail *uint) Status
+TEXT ·Sys_object_get_info(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_object_get_info(SB)
+
+// func Sys_object_get_child(handle Handle, koid uint64, rights Rights, out *Handle) Status
+TEXT ·Sys_object_get_child(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_object_get_child(SB)
+
+// func Sys_object_set_profile(handle Handle, profile Handle, options uint32) Status
+TEXT ·Sys_object_set_profile(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_object_set_profile(SB)
+
+// func Sys_pager_create(options uint32, out *Handle) Status
+TEXT ·Sys_pager_create(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_pager_create(SB)
+
+// func Sys_pager_create_vmo(pager Handle, options uint32, port Handle, key uint64, size uint64, out *Handle) Status
+TEXT ·Sys_pager_create_vmo(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_pager_create_vmo(SB)
+
+// func Sys_pager_detach_vmo(pager Handle, vmo Handle) Status
+TEXT ·Sys_pager_detach_vmo(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_pager_detach_vmo(SB)
+
+// func Sys_pager_supply_pages(pager Handle, pager_vmo Handle, offset uint64, length uint64, aux_vmo Handle, aux_offset uint64) Status
+TEXT ·Sys_pager_supply_pages(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_pager_supply_pages(SB)
+
+// func Sys_pager_op_range(pager Handle, op uint32, pager_vmo Handle, offset uint64, length uint64, data uint64) Status
+TEXT ·Sys_pager_op_range(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_pager_op_range(SB)
+
+// func Sys_pc_firmware_tables(handle Handle, acpi_rsdp *Paddr, smbios *Paddr) Status
+TEXT ·Sys_pc_firmware_tables(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_pc_firmware_tables(SB)
+
+// func Sys_pci_get_nth_device(handle Handle, index uint32, out_info *uintptr, out_handle *Handle) Status
+TEXT ·Sys_pci_get_nth_device(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_pci_get_nth_device(SB)
+
+// func Sys_pci_enable_bus_master(handle Handle, enable uint32) Status
+TEXT ·Sys_pci_enable_bus_master(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_pci_enable_bus_master(SB)
+
+// func Sys_pci_reset_device(handle Handle) Status
+TEXT ·Sys_pci_reset_device(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_pci_reset_device(SB)
+
+// func Sys_pci_config_read(handle Handle, offset uint16, width uint, out_val *uint32) Status
+TEXT ·Sys_pci_config_read(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_pci_config_read(SB)
+
+// func Sys_pci_config_write(handle Handle, offset uint16, width uint, val uint32) Status
+TEXT ·Sys_pci_config_write(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_pci_config_write(SB)
+
+// func Sys_pci_cfg_pio_rw(handle Handle, bus uint8, dev uint8, funk uint8, offset uint8, val *uint32, width uint, write uint32) Status
+TEXT ·Sys_pci_cfg_pio_rw(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_pci_cfg_pio_rw(SB)
+
+// func Sys_pci_get_bar(handle Handle, bar_num uint32, out_bar *uintptr, out_handle *Handle) Status
+TEXT ·Sys_pci_get_bar(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_pci_get_bar(SB)
+
+// func Sys_pci_map_interrupt(handle Handle, which_irq int32, out_handle *Handle) Status
+TEXT ·Sys_pci_map_interrupt(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_pci_map_interrupt(SB)
+
+// func Sys_pci_query_irq_mode(handle Handle, mode uint32, out_max_irqs *uint32) Status
+TEXT ·Sys_pci_query_irq_mode(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_pci_query_irq_mode(SB)
+
+// func Sys_pci_set_irq_mode(handle Handle, mode uint32, requested_irq_count uint32) Status
+TEXT ·Sys_pci_set_irq_mode(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_pci_set_irq_mode(SB)
+
+// func Sys_pci_init(handle Handle, init_buf *uintptr, len uint32) Status
+TEXT ·Sys_pci_init(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_pci_init(SB)
+
+// func Sys_pci_add_subtract_io_range(handle Handle, mmio uint32, base uint64, len uint64, add uint32) Status
+TEXT ·Sys_pci_add_subtract_io_range(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_pci_add_subtract_io_range(SB)
+
+// func Sys_pmt_unpin(handle Handle) Status
+TEXT ·Sys_pmt_unpin(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_pmt_unpin(SB)
+
+// func Sys_port_create(options uint32, out *Handle) Status
+TEXT ·Sys_port_create(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_port_create(SB)
+
+// func Sys_port_queue(handle Handle, packet *int) Status
+TEXT ·Sys_port_queue(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_port_queue(SB)
+
+// func Sys_port_wait(handle Handle, deadline Time, packet *int) Status
+TEXT ·Sys_port_wait(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_port_wait(SB)
+
+// func Sys_port_cancel(handle Handle, source Handle, key uint64) Status
+TEXT ·Sys_port_cancel(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_port_cancel(SB)
+
+// func Sys_process_exit(retcode int64)
+TEXT ·Sys_process_exit(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_process_exit(SB)
+
+// func Sys_process_create(job Handle, name *uint8, name_size uint, options uint32, proc_handle *Handle, vmar_handle *Handle) Status
+TEXT ·Sys_process_create(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_process_create(SB)
+
+// func Sys_process_start(handle Handle, thread Handle, entry Vaddr, stack Vaddr, arg1 Handle, arg2 uintptr) Status
+TEXT ·Sys_process_start(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_process_start(SB)
+
+// func Sys_process_read_memory(handle Handle, vaddr Vaddr, buffer unsafe.Pointer, buffer_size uint, actual *uint) Status
+TEXT ·Sys_process_read_memory(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_process_read_memory(SB)
+
+// func Sys_process_write_memory(handle Handle, vaddr Vaddr, buffer unsafe.Pointer, buffer_size uint, actual *uint) Status
+TEXT ·Sys_process_write_memory(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_process_write_memory(SB)
+
+// func Sys_profile_create(root_job Handle, options uint32, profile *int, out *Handle) Status
+TEXT ·Sys_profile_create(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_profile_create(SB)
+
+// func Sys_resource_create(parent_rsrc Handle, options uint32, base uint64, size uint, name *uint8, name_size uint, resource_out *Handle) Status
+TEXT ·Sys_resource_create(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_resource_create(SB)
+
+// func Sys_smc_call(handle Handle, parameters *SMCParameters, out_smc_result *SMCResult) Status
+TEXT ·Sys_smc_call(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_smc_call(SB)
+
+// func Sys_socket_create(options uint32, out0 *Handle, out1 *Handle) Status
+TEXT ·Sys_socket_create(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_socket_create(SB)
+
+// func Sys_socket_write(handle Handle, options uint32, buffer unsafe.Pointer, buffer_size uint, actual *uint) Status
+TEXT ·Sys_socket_write(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_socket_write(SB)
+
+// func Sys_socket_read(handle Handle, options uint32, buffer unsafe.Pointer, buffer_size uint, actual *uint) Status
+TEXT ·Sys_socket_read(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_socket_read(SB)
+
+// func Sys_socket_shutdown(handle Handle, options uint32) Status
+TEXT ·Sys_socket_shutdown(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_socket_shutdown(SB)
+
+// func Sys_stream_create(options uint32, vmo Handle, seek uint64, out_stream *Handle) Status
+TEXT ·Sys_stream_create(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_stream_create(SB)
+
+// func Sys_stream_writev(handle Handle, options uint32, vector *uintptr, num_vector uint, actual *uint) Status
+TEXT ·Sys_stream_writev(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_stream_writev(SB)
+
+// func Sys_stream_writev_at(handle Handle, options uint32, offset uint64, vector *uintptr, num_vector uint, actual *uint) Status
+TEXT ·Sys_stream_writev_at(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_stream_writev_at(SB)
+
+// func Sys_stream_readv(handle Handle, options uint32, vector *uintptr, num_vector uint, actual *uint) Status
+TEXT ·Sys_stream_readv(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_stream_readv(SB)
+
+// func Sys_stream_readv_at(handle Handle, options uint32, offset uint64, vector *uintptr, num_vector uint, actual *uint) Status
+TEXT ·Sys_stream_readv_at(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_stream_readv_at(SB)
+
+// func Sys_stream_seek(handle Handle, whence uint32, offset int64, out_seek *uint64) Status
+TEXT ·Sys_stream_seek(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_stream_seek(SB)
+
+// func Sys_syscall_test_0() Status
+TEXT ·Sys_syscall_test_0(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_syscall_test_0(SB)
+
+// func Sys_syscall_test_1(a int32) Status
+TEXT ·Sys_syscall_test_1(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_syscall_test_1(SB)
+
+// func Sys_syscall_test_2(a int32, b int32) Status
+TEXT ·Sys_syscall_test_2(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_syscall_test_2(SB)
+
+// func Sys_syscall_test_3(a int32, b int32, c int32) Status
+TEXT ·Sys_syscall_test_3(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_syscall_test_3(SB)
+
+// func Sys_syscall_test_4(a int32, b int32, c int32, d int32) Status
+TEXT ·Sys_syscall_test_4(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_syscall_test_4(SB)
+
+// func Sys_syscall_test_5(a int32, b int32, c int32, d int32, e int32) Status
+TEXT ·Sys_syscall_test_5(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_syscall_test_5(SB)
+
+// func Sys_syscall_test_6(a int32, b int32, c int32, d int32, e int32, f int32) Status
+TEXT ·Sys_syscall_test_6(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_syscall_test_6(SB)
+
+// func Sys_syscall_test_7(a int32, b int32, c int32, d int32, e int32, f int32, g_ int32) Status
+TEXT ·Sys_syscall_test_7(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_syscall_test_7(SB)
+
+// func Sys_syscall_test_8(a int32, b int32, c int32, d int32, e int32, f int32, g_ int32, h int32) Status
+TEXT ·Sys_syscall_test_8(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_syscall_test_8(SB)
+
+// func Sys_syscall_test_wrapper(a int32, b int32, c int32) Status
+TEXT ·Sys_syscall_test_wrapper(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_syscall_test_wrapper(SB)
+
+// func Sys_syscall_test_handle_create(return_value Status, out *Handle) Status
+TEXT ·Sys_syscall_test_handle_create(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_syscall_test_handle_create(SB)
+
+// func Sys_system_get_dcache_line_size() uint32
+TEXT ·Sys_system_get_dcache_line_size(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_system_get_dcache_line_size(SB)
+
+// func Sys_system_get_num_cpus() uint32
+TEXT ·Sys_system_get_num_cpus(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_system_get_num_cpus(SB)
+
+// func Sys_system_get_version_string() unsafe.Pointer
+TEXT ·Sys_system_get_version_string(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_system_get_version_string(SB)
+
+// func Sys_system_get_page_size() uint32
+TEXT ·Sys_system_get_page_size(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_system_get_page_size(SB)
+
+// func Sys_system_get_physmem() uint64
+TEXT ·Sys_system_get_physmem(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_system_get_physmem(SB)
+
+// func Sys_system_get_features(kind uint32, features *uint32) Status
+TEXT ·Sys_system_get_features(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_system_get_features(SB)
+
+// func Sys_system_get_event(root_job Handle, kind uint32, event *Handle) Status
+TEXT ·Sys_system_get_event(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_system_get_event(SB)
+
+// func Sys_system_mexec(resource Handle, kernel_vmo Handle, bootimage_vmo Handle) Status
+TEXT ·Sys_system_mexec(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_system_mexec(SB)
+
+// func Sys_system_mexec_payload_get(resource Handle, buffer unsafe.Pointer, buffer_size uint) Status
+TEXT ·Sys_system_mexec_payload_get(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_system_mexec_payload_get(SB)
+
+// func Sys_system_powerctl(resource Handle, cmd uint32, arg *int) Status
+TEXT ·Sys_system_powerctl(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_system_powerctl(SB)
+
+// func Sys_task_suspend(handle Handle, token *Handle) Status
+TEXT ·Sys_task_suspend(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_task_suspend(SB)
+
+// func Sys_task_suspend_token(handle Handle, token *Handle) Status
+TEXT ·Sys_task_suspend_token(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_task_suspend_token(SB)
+
+// func Sys_task_create_exception_channel(handle Handle, options uint32, out *Handle) Status
+TEXT ·Sys_task_create_exception_channel(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_task_create_exception_channel(SB)
+
+// func Sys_task_kill(handle Handle) Status
+TEXT ·Sys_task_kill(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_task_kill(SB)
+
+// func Sys_thread_exit()
+TEXT ·Sys_thread_exit(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_thread_exit(SB)
+
+// func Sys_thread_create(process Handle, name *uint8, name_size uint, options uint32, out *Handle) Status
+TEXT ·Sys_thread_create(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_thread_create(SB)
+
+// func Sys_thread_start(handle Handle, thread_entry Vaddr, stack Vaddr, arg1 uintptr, arg2 uintptr) Status
+TEXT ·Sys_thread_start(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_thread_start(SB)
+
+// func Sys_thread_read_state(handle Handle, kind uint32, buffer unsafe.Pointer, buffer_size uint) Status
+TEXT ·Sys_thread_read_state(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_thread_read_state(SB)
+
+// func Sys_thread_write_state(handle Handle, kind uint32, buffer unsafe.Pointer, buffer_size uint) Status
+TEXT ·Sys_thread_write_state(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_thread_write_state(SB)
+
+// func Sys_timer_create(options uint32, clock_id uint32, out *Handle) Status
+TEXT ·Sys_timer_create(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_timer_create(SB)
+
+// func Sys_timer_set(handle Handle, deadline Time, slack Duration) Status
+TEXT ·Sys_timer_set(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_timer_set(SB)
+
+// func Sys_timer_cancel(handle Handle) Status
+TEXT ·Sys_timer_cancel(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_timer_cancel(SB)
+
+// func Sys_vcpu_create(guest Handle, options uint32, entry Vaddr, out *Handle) Status
+TEXT ·Sys_vcpu_create(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_vcpu_create(SB)
+
+// func Sys_vcpu_resume(handle Handle, packet *int) Status
+TEXT ·Sys_vcpu_resume(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_vcpu_resume(SB)
+
+// func Sys_vcpu_interrupt(handle Handle, vector uint32) Status
+TEXT ·Sys_vcpu_interrupt(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_vcpu_interrupt(SB)
+
+// func Sys_vcpu_read_state(handle Handle, kind uint32, buffer unsafe.Pointer, buffer_size uint) Status
+TEXT ·Sys_vcpu_read_state(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_vcpu_read_state(SB)
+
+// func Sys_vcpu_write_state(handle Handle, kind uint32, buffer unsafe.Pointer, buffer_size uint) Status
+TEXT ·Sys_vcpu_write_state(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_vcpu_write_state(SB)
+
+// func Sys_vmar_allocate(parent_vmar Handle, options VMFlag, offset uint, size uint, child_vmar *Handle, child_addr *Vaddr) Status
+TEXT ·Sys_vmar_allocate(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_vmar_allocate(SB)
+
+// func Sys_vmar_destroy(handle Handle) Status
+TEXT ·Sys_vmar_destroy(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_vmar_destroy(SB)
+
+// func Sys_vmar_map(handle Handle, options VMFlag, vmar_offset uint, vmo Handle, vmo_offset uint64, len uint, mapped_addr *Vaddr) Status
+TEXT ·Sys_vmar_map(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_vmar_map(SB)
+
+// func Sys_vmar_unmap(handle Handle, addr Vaddr, len uint) Status
+TEXT ·Sys_vmar_unmap(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_vmar_unmap(SB)
+
+// func Sys_vmar_protect(handle Handle, options VMFlag, addr Vaddr, len uint) Status
+TEXT ·Sys_vmar_protect(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_vmar_protect(SB)
+
+// func Sys_vmar_op_range(handle Handle, op uint32, address Vaddr, size uint, buffer unsafe.Pointer, buffer_size uint) Status
+TEXT ·Sys_vmar_op_range(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_vmar_op_range(SB)
+
+// func Sys_vmo_create(size uint64, options uint32, out *Handle) Status
+TEXT ·Sys_vmo_create(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_vmo_create(SB)
+
+// func Sys_vmo_read(handle Handle, buffer unsafe.Pointer, offset uint64, buffer_size uint) Status
+TEXT ·Sys_vmo_read(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_vmo_read(SB)
+
+// func Sys_vmo_write(handle Handle, buffer unsafe.Pointer, offset uint64, buffer_size uint) Status
+TEXT ·Sys_vmo_write(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_vmo_write(SB)
+
+// func Sys_vmo_get_size(handle Handle, size *uint64) Status
+TEXT ·Sys_vmo_get_size(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_vmo_get_size(SB)
+
+// func Sys_vmo_set_size(handle Handle, size uint64) Status
+TEXT ·Sys_vmo_set_size(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_vmo_set_size(SB)
+
+// func Sys_vmo_op_range(handle Handle, op uint32, offset uint64, size uint64, buffer unsafe.Pointer, buffer_size uint) Status
+TEXT ·Sys_vmo_op_range(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_vmo_op_range(SB)
+
+// func Sys_vmo_create_child(handle Handle, options uint32, offset uint64, size uint64, out *Handle) Status
+TEXT ·Sys_vmo_create_child(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_vmo_create_child(SB)
+
+// func Sys_vmo_set_cache_policy(handle Handle, cache_policy uint32) Status
+TEXT ·Sys_vmo_set_cache_policy(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_vmo_set_cache_policy(SB)
+
+// func Sys_vmo_replace_as_executable(handle Handle, vmex Handle, out *Handle) Status
+TEXT ·Sys_vmo_replace_as_executable(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_vmo_replace_as_executable(SB)
+
+// func Sys_vmo_create_contiguous(bti Handle, size uint, alignment_log2 uint32, out *Handle) Status
+TEXT ·Sys_vmo_create_contiguous(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_vmo_create_contiguous(SB)
+
+// func Sys_vmo_create_physical(resource Handle, paddr Paddr, size uint, out *Handle) Status
+TEXT ·Sys_vmo_create_physical(SB),NOSPLIT,$0
+ JMP runtime·vdsoCall_zx_vmo_create_physical(SB)
+
diff --git a/src/syscall/zx/types.go b/src/syscall/zx/types.go
new file mode 100644
index 0000000..22ca585
--- /dev/null
+++ b/src/syscall/zx/types.go
@@ -0,0 +1,598 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package zx
+
+import "unsafe"
+
+type Status int32 // zx_status_t
+type Handle uint32 // zx_handle_t
+type Clock uint32 // zx_clock_t,
+type Time int64 // zx_time_t, nanoseconds
+type Duration int64 // zx_duration_t, nanoseconds
+type Signals uint32 // zx_signals_t
+type Rights uint32 // zx_rights_t
+type Paddr uintptr // zx_paddr_t
+type Vaddr uintptr // zx_vaddr_t
+type ObjectType uint32 // zx_obj_type_t
+type HandleOp uint32 // zx_handle_op_t;
+
+func (r Rights) Subtract(targetRights Rights) Rights {
+ if r == RightSameRights || targetRights == RightSameRights {
+ panic("subtraction doesn't make sense for zx.RightSameRights")
+ }
+ return r &^ targetRights
+}
+
+func (r Rights) StrictSupersetOf(targetRights Rights) bool {
+ return r.Subtract(targetRights) != 0 && targetRights.Subtract(r) == 0
+}
+
+func (r Rights) SupersetOf(targetRights Rights) bool {
+ return r.StrictSupersetOf(targetRights) || r == targetRights
+}
+
+func (r Rights) SubsetOf(targetRights Rights) bool {
+ return targetRights.SupersetOf(r)
+}
+
+func (r Rights) StrictSubsetOf(targetRights Rights) bool {
+ return targetRights.StrictSupersetOf(r)
+}
+
+type WaitItem struct {
+ Handle Handle
+ WaitFor Signals
+ Pending Signals
+} // zx_wait_item_t
+
+const HandleInvalid = Handle(0)
+
+// deprecated name
+const HANDLE_INVALID = Handle(0)
+
+const HandleSize = uint64(unsafe.Sizeof(Handle(0)))
+
+const ZX_MAX_NAME_LEN = 32
+
+const (
+ ZX_RREC_DELETED = 0
+ ZX_RREC_SELF = 1
+ ZX_RREC_DATA = 2
+ ZX_RREC_IRQ = 3
+ ZX_RREC_MMIO = 4
+ ZX_RREC_IOPORT = 5
+)
+
+const (
+ ZX_RACT_ENABLE = 1
+ ZX_RACT_DISABLE = 2
+)
+
+const (
+ ZX_RREC_SELF_GENERIC = 0
+ ZX_RREC_SELF_ROOT = 1
+)
+
+type InfoHandleBasic struct {
+ Koid uint64
+ Rights Rights
+ Type ObjectType
+ RelatedKoid uint64
+ Props uint32
+} // zx_info_handle_basic_t
+
+type InfoSocket struct {
+ Options uint32
+ RXBufMax int
+ RXBufSize int
+ RXBufAvailable int
+ TXBufMax int
+ TXBufSize int
+} // zx_info_socket_t
+
+type RrecSelf struct {
+ Type uint16 // ZX_RREC_SELF
+ Subtype uint16
+ Options uint32
+ Koid uint64
+ RecordCount uint32
+ ChildCount uint32
+ _ [2]uint32
+ Name [ZX_MAX_NAME_LEN]uint8
+} // zx_rrec_self_t
+
+type RrecMMIO struct {
+ Type uint16 // ZX_RREC_MMIO
+ Subtype uint16
+ Options uint32
+ PhysBase uint64
+ PhysSize uint64
+ _ [10]uint32
+} // zx_rrec_mmio_t
+
+type RrecIRQ struct {
+ Type uint16 // ZX_RREC_IRQ
+ Subtype uint16
+ Options uint32
+ IRQBase uint32
+ IRQCount uint32
+ _ [12]uint32
+} // zx_rrec_irq_t
+
+type RrecIOPort struct {
+ Type uint16 // ZX_RREC_IOPORT
+ Subtype uint16
+ Options uint32
+ PortBase uint32
+ PortCount uint32
+ _ [12]uint32
+} // zx_rrec_ioport_t
+
+type RrecData struct {
+ Type uint16
+ Subtype uint16
+ Options uint32 // low 4 bits are count
+ Data [56]uint8
+} // zx_rrec_data_t
+
+type Rrec struct {
+ typ uint16
+ _ [62]uint8
+} // zx_rrec_t
+
+func (r *Rrec) Box() RrecValue {
+ switch r.typ {
+ case ZX_RREC_DELETED:
+ return nil
+ case ZX_RREC_SELF:
+ return (*RrecSelf)(unsafe.Pointer(r))
+ case ZX_RREC_DATA:
+ return (*RrecData)(unsafe.Pointer(r))
+ case ZX_RREC_IRQ:
+ return (*RrecIRQ)(unsafe.Pointer(r))
+ case ZX_RREC_MMIO:
+ return (*RrecMMIO)(unsafe.Pointer(r))
+ case ZX_RREC_IOPORT:
+ return (*RrecIOPort)(unsafe.Pointer(r))
+ default:
+ return nil
+ }
+}
+
+type RrecValue interface {
+ rrec()
+}
+
+func (*RrecSelf) rrec() {}
+func (*RrecData) rrec() {}
+func (*RrecIRQ) rrec() {}
+func (*RrecMMIO) rrec() {}
+func (*RrecIOPort) rrec() {}
+
+type ChannelCallArgs struct {
+ WriteBytes unsafe.Pointer
+ WriteHandles *Handle
+ ReadBytes unsafe.Pointer
+ ReadHandles *Handle
+ WriteNumBytes uint32
+ WriteNumHandles uint32
+ ReadNumBytes uint32
+ ReadNumHandles uint32
+}
+
+type ChannelCallEtcArgs struct {
+ WriteBytes unsafe.Pointer
+ WriteHandles *HandleDisposition
+ ReadBytes unsafe.Pointer
+ ReadHandles *HandleInfo
+ WriteNumBytes uint32
+ WriteNumHandles uint32
+ ReadNumBytes uint32
+ ReadNumHandles uint32
+}
+
+type FIFOState struct {
+ head, tail uint64
+}
+
+type SMCParameters struct {
+ funcID uint32
+ arg1, arg2, arg3, arg4, arg5, arg6 uint64
+ clientId, secureOSID uint16
+}
+
+type SMCResult struct {
+ arg0, arg1, arg2, arg3 uint64
+}
+
+type HandleDisposition struct {
+ Operation HandleOp
+ Handle Handle
+ Type ObjectType
+ Rights Rights
+ Result Status
+}
+
+type HandleInfo struct {
+ Handle Handle
+ Type ObjectType
+ Rights Rights
+ Unused uint32
+}
+
+// Status codes. See zircon/system/public/zircon/errors.h
+const (
+ ErrOk Status = -iota
+ ErrInternal
+ ErrNotSupported
+ ErrNoResources
+ ErrNoMemory
+ ErrCallFailed
+ ErrInterruptedRetry
+ _ // -7
+ _ // -8
+ _ // -9
+ ErrInvalidArgs
+ ErrBadHandle
+ ErrWrongType
+ ErrBadSyscall
+ ErrOutOfRange
+ ErrBufferTooSmall
+ _ // -16
+ _ // -17
+ _ // -18
+ _ // -19
+ ErrBadState
+ ErrTimedOut
+ ErrShouldWait
+ ErrCanceled
+ ErrPeerClosed
+ ErrNotFound
+ ErrAlreadyExists
+ ErrAlreadyBound
+ ErrUnavailable
+ _ // -29
+ ErrAccessDenied
+ _ // -31
+ _ // -32
+ _ // -33
+ _ // -34
+ _ // -35
+ _ // -36
+ _ // -37
+ _ // -38
+ _ // -39
+ ErrIO
+ ErrIORefused
+ ErrIODataIntegrity
+ ErrIODataLoss
+ _ // -44
+ _ // -45
+ _ // -46
+ _ // -47
+ _ // -48
+ _ // -49
+ ErrBadPath
+ ErrNotDir
+ ErrNotFile
+ ErrFileBig
+ ErrNoSpace
+ ErrNotEmpty
+ _ // -56
+ _ // -57
+ _ // -58
+ _ // -59
+ ErrStop
+ ErrNext
+ _ // -62
+ _ // -63
+ _ // -64
+ _ // -65
+ _ // -66
+ _ // -67
+ _ // -68
+ _ // -69
+ ErrProtocolNotSupported
+ ErrAddressUnreachable
+ ErrAddressInUse
+ ErrNotConnected
+ ErrConnectionRefused
+ ErrConnectionReset
+ ErrConnectionAborted
+
+ // deprecated
+ ErrHandleClosed = ErrCanceled
+ ErrRemoteClosed = ErrPeerClosed
+)
+
+const (
+ SignalObject0 = 1 << iota
+ SignalObject1
+ SignalObject2
+ SignalObject3
+ SignalObject4
+ SignalObject5
+ SignalObject6
+ SignalObject7
+ SignalObject8
+ SignalObject9
+ SignalObject10
+ SignalObject11
+ SignalObject12
+ SignalObject13
+ SignalObject14
+ SignalObject15
+ SignalObject16
+ SignalObject17
+ SignalObject18
+ SignalObject19
+ SignalObject20
+ SignalObject21
+ SignalObject22
+ SignalObject23
+
+ SignalUser0
+ SignalUser1
+ SignalUser2
+ SignalUser3
+ SignalUser4
+ SignalUser5
+ SignalUser6
+ SignalUser7
+
+ // Aliases
+ SignalHandleClosed = SignalObject23
+
+ // Event
+ SignalEventSignaled = SignalObject3
+ SignalEventMask = SignalUserAll | SignalEventSignaled
+
+ // EventPair
+ SignalEpairSignaled = SignalObject3
+ SignalEpairPeerClosed = SignalObject2
+
+ // Channel
+ SignalChannelReadable = SignalObject0
+ SignalChannelWritable = SignalObject1
+ SignalChannelPeerClosed = SignalObject2
+
+ // Socket
+ SignalSocketReadable = SignalObject0
+ SignalSocketWritable = SignalObject1
+ SignalSocketPeerClosed = SignalObject2
+ SignalSocketPeerWriteDisabled = SignalObject4
+ SignalSocketWriteDisabled = SignalObject5
+
+ // Port
+ SignalPortReadable = SignalObject0
+ SignalPortPeerClosed = SignalObject2
+ SignalPortSignaled = SignalObject3
+
+ // Resource
+ SignalResourceReadable = SignalObject0
+ SignalResourceWritable = SignalObject1
+ SignalResourceChildAdded = SignalObject2
+
+ // Fifo
+ SignalFIFOReadable = SignalObject0
+ SignalFIFOWritable = SignalObject1
+ SignalFIFOPeerClosed = SignalObject2
+ SignalFIFOSignalMask = SignalFIFOReadable | SignalFIFOWritable | SignalFIFOPeerClosed
+
+ // Task signals (process, thread, job)
+ SignalTaskTerminated = SignalObject3
+ SignalTaskSignalMask = SignalObject3
+
+ // Job
+ SignalJobSignaled = SignalObject3
+
+ // Process
+ SignalProccessSignaled = SignalObject3
+
+ // Thread
+ SignalThreadSignaled = SignalObject3
+
+ SignalObjectAll = (0xfffff)
+ SignalUserAll = Signals(15 << 4)
+ SignalNone = Signals(0)
+)
+
+const (
+ RightDuplicate Rights = 1 << iota
+ RightTransfer
+ RightRead
+ RightWrite
+ RightExecute
+ RightMap
+ RightGetProperty
+ RightSetProperty
+ RightEnumerate
+ RightDestroy
+ RightGetPolicy
+ RightSetPolicy
+ RightSignal
+ RightSignalPeer
+ RightWait
+ RightInspect
+ RightManageJob
+ RightManageProcess
+ RightManageThread
+ RightApplyPolicy
+ RightSameRights = Rights(1 << 31)
+ RightNone = Rights(0)
+)
+
+const (
+ RightsBasic = RightTransfer | RightDuplicate | RightWait | RightInspect
+ RightsIO = RightRead | RightWrite
+ RightsProperty = RightGetProperty | RightSetProperty
+ RightsPolicy = RightGetPolicy | RightSetPolicy
+)
+
+// Topics for object_get_info
+const (
+ ObjectInfoHandleNone = 0
+ ObjectInfoHandleValid = 1
+ ObjectInfoHandleBasic = 2
+ ObjectInfoProcess = 3 | (1 << 28)
+ ObjectInfoProcessThreads = 4
+ ObjectInfoResourceChildren = 5
+ ObjectInfoResourceRecords = 6
+ ObjectInfoVMAR = 7
+ ObjectInfoJobChildren = 8
+ ObjectInfoJobProcesses = 9
+ ObjectInfoThread = 10
+ ObjectInfoThreadExceptionReport = 11
+ ObjectInfoTaskStats = 12
+ ObjectInfoProcessMaps = 13
+ ObjectInfoProcessVMOs_V1 = 14 | (0 << 28)
+ ObjectInfoProcessVMOs = 14 | (1 << 28)
+ ObjectInfoThreadStats = 15
+ ObjectInfoCpUStats = 16
+ ObjectInfoKMemStats = 17
+ ObjectInfoResource = 18
+ ObjectInfoHandleCount = 19
+ ObjectInfoBTI = 20
+ ObjectInfoProcessHandleStats = 21
+ ObjectInfoSocket = 22
+ ObjectInfoVMO_V1 = 23 | (0 << 28)
+ ObjectInfoVMO = 23 | (1 << 28)
+)
+
+const (
+ ProcessInfoFlagStarted uint32 = 1 << 0 // ZX_INFO_PROCESS_FLAG_STARTED
+ ProcessInfoFlagExited = 1 << 1 // ZX_INFO_PROCESS_FLAG_EXITED
+ ProcessInfoFlagDebuggerAttached = 1 << 2 // ZX_INFO_PROCESS_FLAG_DEBUGGER_ATTACHED
+)
+
+const (
+ ObjectTypeNone ObjectType = iota
+ ObjectTypeProcess
+ ObjectTypeThread
+ ObjectTypeVmo
+ ObjectTypeChannel
+ ObjectTypeEvent
+ ObjectTypePort
+ _ // 7
+ _ // 8
+ ObjectTypeInterrupt
+ _ // 10
+ ObjectTypePciDevice
+ ObjectTypeLog
+ _ // 13
+ ObjectTypeSocket
+ ObjectTypeResource
+ ObjectTypeEventPair
+ ObjectTypeJob
+ ObjectTypeVmar
+ ObjectTypeFifo
+ ObjectTypeGuest
+ ObjectTypeVcpu
+ ObjectTypeTimer
+ ObjectTypeIommu
+ ObjectTypeBti
+ ObjectTypeProfile
+ ObjectTypePmt
+ ObjectTypeSuspendToken
+ ObjectTypePager
+)
+
+const (
+ HandleOpMove HandleOp = iota // 0
+ HandleOpDuplicate // 1
+)
+
+// Options for socket_create
+const (
+ SocketStream = iota
+ SocketDatagram
+)
+
+// Options for socket_read
+const (
+ SocketPeek = 1 << 3
+)
+
+// Options for socket_shutdown
+const (
+ _ = iota // 0
+ SocketShutdownWrite // 1
+ SocketShutdownRead // 2
+)
+
+const (
+ _ = iota // 0
+ _ // 1
+ PropNumStateKinds // ZX_PROP_NUM_STATE_KINDS
+ PropName // ZX_PROP_NAME
+ PropRegisterFS // ZX_PROP_REGISTER_FS
+ PropProcessDebugAddr // ZX_PROP_PROCESS_DEBUG_ADDR
+ PropProcessVDSOBaseAddress // ZX_PROP_PROCESS_VDSO_BASE_ADDRESS
+ PropJobMaxHeight // ZX_PROP_JOB_MAX_HEIGHT
+)
+
+const (
+ TimensecInfinite = Time(0x7FFFFFFFFFFFFFFF)
+)
+
+// EOF is used like io.EOF.
+//
+// When package io is linked in, at initialization this value is
+// rewritten to be equivalent to io.EOF, so that the io.Readers
+// and io.Writers in this package meet their specs.
+var EOF error = eof{}
+
+type eof struct{}
+
+func (eof) Error() string { return "zx.EOF" }
+
+// EPIPE is used like syscall.EPIPE
+
+// When package syscall is linked in, at initialization this value is
+// rewritten to be equivalent to syscall.EPIPE.
+
+var EPIPE error = epipe{}
+
+type epipe struct{}
+
+func (epipe) Error() string { return "errno(32)" }
+
+type VMOOption int
+
+const (
+ VMOOptionResizable VMOOption = 1 << 1 // ZX_VMO_RESIZABLE
+)
+
+type VMOChildOption uint32
+
+const (
+ // zx_vmo_create_child requires exactly 1 of the following 3 flags:
+ VMOChildOptionSnapshot VMOChildOption = 1 << 0 // ZX_VMO_CHILD_SNAPSHOT
+ VMOChildOptionSlice = 1 << 3 // ZX_VMO_CHILD_SLICE
+ VMOChildOptionSnapshotAtLeastOnWrite = 1 << 4 // ZX_VMO_CHILD_SNAPSHOT_AT_LEAST_ON_WRITE
+
+ // old clone flags on the path to deprecation
+ VMOChildOptionCopyOnWrite = 1 << 4 // ZX_VMO_CHILD_COPY_ON_WRITE
+ VMOChildOptionPrivatePagerCopy = 1 << 4 // ZX_VMO_CHILD_PRIVATE_PAGER_COPY
+
+ // optional flags
+ VMOChildOptionResizable = 1 << 2 // ZX_VMO_CHILD_RESIZABLE
+ VMOChildOptionNoWrite = 1 << 5 // ZX_VMO_CHILD_NO_WRITE
+)
+
+type VMFlag uint32
+
+const (
+ VMFlagPermRead VMFlag = 1 << 0 // ZX_VM_PERM_READ
+ VMFlagPermWrite VMFlag = 1 << 1 // ZX_VM_PERM_WRITE
+ VMFlagPermExecute VMFlag = 1 << 2 // ZX_VM_PERM_EXECUTE
+ VMFlagCompact VMFlag = 1 << 3 // ZX_VM_COMPACT
+ VMFlagSpecific VMFlag = 1 << 4 // ZX_VM_SPECIFIC
+ VMFlagSpecificOverwrite VMFlag = 1 << 5 // ZX_VM_SPECIFIC_OVERWRITE
+ VMFlagCanMapSpecific VMFlag = 1 << 6 // ZX_VM_CAN_MAP_SPECIFIC
+ VMFlagCanMapRead VMFlag = 1 << 7 // ZX_VM_CAN_MAP_READ
+ VMFlagCanMapWrite VMFlag = 1 << 8 // ZX_VM_CAN_MAP_WRITE
+ VMFlagCanMapExecute VMFlag = 1 << 9 // ZX_VM_CAN_MAP_EXECUTE
+)
diff --git a/src/syscall/zx/types_string.go b/src/syscall/zx/types_string.go
new file mode 100644
index 0000000..901d24f
--- /dev/null
+++ b/src/syscall/zx/types_string.go
@@ -0,0 +1,66 @@
+// generated by stringer -type=Status; DO NOT EDIT
+
+package zx
+
+const (
+ _Status_name_0 = "ErrNoSpaceErrFileBigErrNotFileErrNotDirErrBadPath"
+ _Status_name_1 = "ErrIODataLossErrIODataIntegrityErrIORefusedErrIO"
+ _Status_name_2 = "ErrAccessDenied"
+ _Status_name_3 = "ErrUnavailableErrAlreadyBoundErrAlreadyExistsErrNotFoundErrPeerClosedErrCanceledErrShouldWaitErrTimedOutErrBadState"
+ _Status_name_4 = "ErrBufferTooSmallErrOutOfRangeErrBadSyscallErrWrongTypeErrBadHandleErrInvalidArgs"
+ _Status_name_5 = "ErrInterruptedRetryErrCallFailedErrNoMemoryErrNoResourcesErrNotSupportedErrInternalErrOk"
+)
+
+var (
+ _Status_index_0 = [...]uint8{0, 10, 20, 30, 39, 49}
+ _Status_index_1 = [...]uint8{0, 13, 31, 43, 48}
+ _Status_index_2 = [...]uint8{0, 15}
+ _Status_index_3 = [...]uint8{0, 14, 29, 45, 56, 69, 80, 93, 104, 115}
+ _Status_index_4 = [...]uint8{0, 17, 30, 43, 55, 67, 81}
+ _Status_index_5 = [...]uint8{0, 19, 32, 43, 57, 72, 83, 88}
+)
+
+func (i Status) String() string {
+ switch {
+ case -54 <= i && i <= -50:
+ i -= -54
+ return _Status_name_0[_Status_index_0[i]:_Status_index_0[i+1]]
+ case -43 <= i && i <= -40:
+ i -= -43
+ return _Status_name_1[_Status_index_1[i]:_Status_index_1[i+1]]
+ case i == -30:
+ return _Status_name_2
+ case -28 <= i && i <= -20:
+ i -= -28
+ return _Status_name_3[_Status_index_3[i]:_Status_index_3[i+1]]
+ case -15 <= i && i <= -10:
+ i -= -15
+ return _Status_name_4[_Status_index_4[i]:_Status_index_4[i+1]]
+ case -6 <= i && i <= 0:
+ i -= -6
+ return _Status_name_5[_Status_index_5[i]:_Status_index_5[i+1]]
+ default:
+ var buf [20]byte
+ return "zx.Status(" + string(itoa(buf[:], int(i))) + ")"
+ }
+}
+
+func itoa(buf []byte, val int) []byte {
+ i := len(buf) - 1
+ neg := false
+ if val < 0 {
+ neg = true
+ val = 0 - val
+ }
+ for val >= 10 {
+ buf[i] = byte(val%10 + '0')
+ i--
+ val /= 10
+ }
+ buf[i] = byte(val + '0')
+ if neg {
+ i--
+ buf[i] = '-'
+ }
+ return buf[i:]
+}
diff --git a/src/syscall/zx/types_test.go b/src/syscall/zx/types_test.go
new file mode 100644
index 0000000..58b32de
--- /dev/null
+++ b/src/syscall/zx/types_test.go
@@ -0,0 +1,87 @@
+// 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 zx_test
+
+import (
+ "syscall/zx"
+ "testing"
+)
+
+func TestRightsSubtract(t *testing.T) {
+ var minuend zx.Rights = 0b0011
+ var subrahend zx.Rights = 0b0101
+ var expectedDifference zx.Rights = 0b0010
+ if res := minuend.Subtract(subrahend); res != expectedDifference {
+ t.Fatalf("unexpected rights subtraction result %d - %d = %d not %d",
+ minuend, subrahend, res, expectedDifference)
+ }
+}
+
+func TestSupersetSubset(t *testing.T) {
+ type testCase struct {
+ leftOperand zx.Rights
+ rightOperand zx.Rights
+ isStrictSubset bool
+ isSubset bool
+ isStrictSuperset bool
+ isSuperset bool
+ }
+ testCases := []testCase{
+ {
+ leftOperand: 0b0,
+ rightOperand: 0b0,
+ isStrictSubset: false,
+ isSubset: true,
+ isStrictSuperset: false,
+ isSuperset: true,
+ },
+ {
+ leftOperand: 0b1,
+ rightOperand: 0b1,
+ isStrictSubset: false,
+ isSubset: true,
+ isStrictSuperset: false,
+ isSuperset: true,
+ },
+ {
+ leftOperand: 0b11,
+ rightOperand: 0b01,
+ isStrictSubset: false,
+ isSubset: false,
+ isStrictSuperset: true,
+ isSuperset: true,
+ },
+ {
+ leftOperand: 0b01,
+ rightOperand: 0b11,
+ isStrictSubset: true,
+ isSubset: true,
+ isStrictSuperset: false,
+ isSuperset: false,
+ },
+ {
+ leftOperand: 0b10,
+ rightOperand: 0b01,
+ isStrictSubset: false,
+ isSubset: false,
+ isStrictSuperset: false,
+ isSuperset: false,
+ },
+ }
+ for _, testCase := range testCases {
+ if res := testCase.leftOperand.StrictSubsetOf(testCase.rightOperand); res != testCase.isStrictSubset {
+ t.Errorf("(%d).StrictSubsetOf(%d) was %v, wanted %v", testCase.leftOperand, testCase.rightOperand, res, testCase.isStrictSubset)
+ }
+ if res := testCase.leftOperand.SubsetOf(testCase.rightOperand); res != testCase.isSubset {
+ t.Errorf("(%d).SubsetOf(%d) was %v, wanted %v", testCase.leftOperand, testCase.rightOperand, res, testCase.isSubset)
+ }
+ if res := testCase.leftOperand.StrictSupersetOf(testCase.rightOperand); res != testCase.isStrictSuperset {
+ t.Errorf("(%d).StrictSupersetOf(%d) was %v, wanted %v", testCase.leftOperand, testCase.rightOperand, res, testCase.isStrictSuperset)
+ }
+ if res := testCase.leftOperand.SupersetOf(testCase.rightOperand); res != testCase.isSuperset {
+ t.Errorf("(%d).SupersetOf(%d) was %v, wanted %v", testCase.leftOperand, testCase.rightOperand, res, testCase.isSuperset)
+ }
+ }
+}
diff --git a/src/syscall/zx/zxsocket/socket.go b/src/syscall/zx/zxsocket/socket.go
new file mode 100644
index 0000000..1c53ea0
--- /dev/null
+++ b/src/syscall/zx/zxsocket/socket.go
@@ -0,0 +1,606 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Go's distribution tools attempt to compile everything; this file
+// depends on zxwait, which doesn't compile in not-Fuchsia.
+//go:build fuchsia
+// +build fuchsia
+
+package zxsocket
+
+import (
+ "io"
+ "strconv"
+ "strings"
+ "syscall"
+ "syscall/zx"
+ "syscall/zx/fdio"
+ "syscall/zx/internal/context"
+ fidlIo "syscall/zx/io"
+ "syscall/zx/net"
+ "syscall/zx/posix/socket"
+ "syscall/zx/zxwait"
+)
+
+// These constants mirror those defined in
+// https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/lib/fdio/socket.cc
+const (
+ SignalStreamIncoming = zx.SignalUser0
+ SignalStreamConnected = zx.SignalUser3
+
+ SignalDatagramIncoming = zx.SignalUser0
+ SignalDatagramOutgoing = zx.SignalUser1
+ SignalDatagramError = zx.SignalUser2
+ SignalDatagramShutdownRead = zx.SignalUser4
+ SignalDatagramShutdownWrite = zx.SignalUser5
+)
+
+var _ Socket = (*DatagramSocket)(nil)
+var _ Socket = (*StreamSocket)(nil)
+
+// Socket is the common subset of datagram and stream sockets.
+type Socket interface {
+ fdio.FDIO
+ Bind(net.SocketAddress) error
+ Connect(net.SocketAddress) error
+ GetPeerName() (net.SocketAddress, error)
+ GetSockName() (net.SocketAddress, error)
+ SetKeepAlive(bool) error
+}
+
+// NewSocket creates a new Socket.
+func NewSocket(base *socket.BaseSocketWithCtxInterface) (Socket, error) {
+ info, err := base.Describe(context.Background())
+ if err != nil {
+ return nil, err
+ }
+ switch w := info.Which(); w {
+ case fidlIo.NodeInfoService, fidlIo.NodeInfoFile, fidlIo.NodeInfoDirectory, fidlIo.NodeInfoPipe, fidlIo.NodeInfoVmofile, fidlIo.NodeInfoDevice, fidlIo.NodeInfoTty:
+ return nil, &zx.Error{Status: zx.ErrInternal, Text: "zxsocket.NewSocket"}
+ case fidlIo.NodeInfoDatagramSocket:
+ return &DatagramSocket{
+ client: socket.DatagramSocketWithCtxInterface{Channel: base.Channel},
+ event: info.DatagramSocket.Event,
+ }, nil
+ case fidlIo.NodeInfoStreamSocket:
+ return &StreamSocket{
+ client: socket.StreamSocketWithCtxInterface{Channel: base.Channel},
+ socket: info.StreamSocket.Socket,
+ }, nil
+ default:
+ panic("unknown node info tag " + strconv.FormatInt(int64(w), 10))
+ }
+}
+
+type stub struct{}
+
+func (*stub) Sync() error {
+ return &zx.Error{Status: zx.ErrNotSupported, Text: "zxsocket.Socket.Sync"}
+}
+
+func (*stub) GetAttr() (fidlIo.NodeAttributes, error) {
+ return fidlIo.NodeAttributes{}, &zx.Error{Status: zx.ErrNotSupported, Text: "zxsocket.Socket.GetAttr"}
+}
+
+func (*stub) SetAttr(uint32, fidlIo.NodeAttributes) error {
+ return &zx.Error{Status: zx.ErrNotSupported, Text: "zxsocket.Socket.SetAttr"}
+}
+
+func (*stub) ReadAt([]byte, int64) (int, error) {
+ return 0, &zx.Error{Status: zx.ErrNotSupported, Text: "zxsocket.Socket.ReadAt"}
+}
+
+func (*stub) WriteAt([]byte, int64) (int, error) {
+ return 0, &zx.Error{Status: zx.ErrNotSupported, Text: "zxsocket.Socket.WriteAt"}
+}
+
+func (*stub) Seek(int64, int) (int64, error) {
+ return 0, &zx.Error{Status: zx.ErrNotSupported, Text: "zxsocket.Socket.Seek"}
+}
+
+func (*stub) Truncate(uint64) error {
+ return &zx.Error{Status: zx.ErrNotSupported, Text: "zxsocket.Socket.Truncate"}
+}
+
+func (*stub) Open(string, uint32, uint32) (fdio.FDIO, error) {
+ return nil, &zx.Error{Status: zx.ErrNotSupported, Text: "zxsocket.Socket.Open"}
+}
+
+func (*stub) Link(string, string) error {
+ return &zx.Error{Status: zx.ErrNotSupported, Text: "zxsocket.Socket.Link"}
+}
+
+func (*stub) Rename(string, string) error {
+ return &zx.Error{Status: zx.ErrNotSupported, Text: "zxsocket.Socket.Rename"}
+}
+
+func (*stub) Unlink(string) error {
+ return &zx.Error{Status: zx.ErrNotSupported, Text: "zxsocket.Socket.Unlink"}
+}
+
+func (*stub) ReadDirents(uint64) ([]byte, error) {
+ return nil, &zx.Error{Status: zx.ErrNotSupported, Text: "zxsocket.Socket.ReadDirents"}
+}
+
+func (*stub) Rewind() error {
+ return &zx.Error{Status: zx.ErrNotSupported, Text: "zxsocket.Socket.Rewind"}
+}
+
+func clone(client socket.BaseSocketWithCtx) (Socket, error) {
+ req, obj, err := fidlIo.NewNodeWithCtxInterfaceRequest()
+ if err != nil {
+ return nil, err
+ }
+ if err := client.Clone(context.Background(), 0, req); err != nil {
+ return nil, err
+ }
+ return NewSocket((*socket.BaseSocketWithCtxInterface)(obj))
+}
+
+func bind(client socket.BaseSocketWithCtx, addr net.SocketAddress) error {
+ result, err := client.Bind(context.Background(), addr)
+ if err != nil {
+ return err
+ }
+ switch result.Which() {
+ case socket.BaseSocketBindResultErr:
+ return syscall.Errno(result.Err)
+ case socket.BaseSocketBindResultResponse:
+ return nil
+ default:
+ panic("unreachable")
+ }
+}
+
+func connect(client socket.BaseSocketWithCtx, addr net.SocketAddress) error {
+ result, err := client.Connect(context.Background(), addr)
+ if err != nil {
+ return err
+ }
+ switch result.Which() {
+ case socket.BaseSocketConnectResultErr:
+ return syscall.Errno(result.Err)
+ case socket.BaseSocketConnectResultResponse:
+ return nil
+ default:
+ panic("unreachable")
+ }
+}
+
+func getPeerName(client socket.BaseSocketWithCtx) (net.SocketAddress, error) {
+ result, err := client.GetPeerName(context.Background())
+ if err != nil {
+ return net.SocketAddress{}, err
+ }
+ switch result.Which() {
+ case socket.BaseSocketGetPeerNameResultErr:
+ return net.SocketAddress{}, syscall.Errno(result.Err)
+ case socket.BaseSocketGetPeerNameResultResponse:
+ return result.Response.Addr, nil
+ default:
+ panic("unreachable")
+ }
+}
+
+func getSockName(client socket.BaseSocketWithCtx) (net.SocketAddress, error) {
+ result, err := client.GetSockName(context.Background())
+ if err != nil {
+ return net.SocketAddress{}, err
+ }
+ switch result.Which() {
+ case socket.BaseSocketGetSockNameResultErr:
+ return net.SocketAddress{}, syscall.Errno(result.Err)
+ case socket.BaseSocketGetSockNameResultResponse:
+ return result.Response.Addr, nil
+ default:
+ panic("unreachable")
+ }
+}
+
+func setKeepAlive(client socket.BaseSocketWithCtx, keepalive bool) error {
+ result, err := client.SetKeepAlive(context.Background(), keepalive)
+ if err != nil {
+ return err
+ }
+ switch result.Which() {
+ case socket.BaseSocketSetKeepAliveResultErr:
+ return syscall.Errno(result.Err)
+ case socket.BaseSocketSetKeepAliveResultResponse:
+ return nil
+ default:
+ panic("unreachable")
+ }
+}
+
+type closeError struct {
+ fidl error
+ channel struct {
+ wait error
+ close error
+ }
+ handleClose error
+}
+
+func (err *closeError) Error() string {
+ var b strings.Builder
+ if err.fidl != nil {
+ if b.Len() != 0 {
+ b.WriteByte(' ')
+ }
+ b.WriteString("fidl=")
+ b.WriteString(err.fidl.Error())
+ }
+ if err.channel.wait != nil {
+ if b.Len() != 0 {
+ b.WriteByte(' ')
+ }
+ b.WriteString("channel.wait=")
+ b.WriteString(err.channel.wait.Error())
+ }
+ if err.channel.close != nil {
+ if b.Len() != 0 {
+ b.WriteByte(' ')
+ }
+ b.WriteString("channel.close=")
+ b.WriteString(err.channel.close.Error())
+ }
+ if err.handleClose != nil {
+ if b.Len() != 0 {
+ b.WriteByte(' ')
+ }
+ b.WriteString("handleClose=")
+ b.WriteString(err.handleClose.Error())
+ }
+ return b.String()
+}
+
+func closeSocket(client socket.BaseSocketWithCtx, channel *zx.Channel, handle *zx.Handle) error {
+ var err closeError
+ err.fidl = func() error {
+ status, err := client.Close(context.Background())
+ if err != nil {
+ return err
+ }
+ if status := zx.Status(status); status != zx.ErrOk {
+ return &zx.Error{Status: status, Text: "zxsocket.Socket.Close"}
+ }
+ return nil
+ }()
+ _, err.channel.wait = zxwait.WaitContext(context.Background(), *channel.Handle(), zx.SignalChannelPeerClosed)
+ err.channel.close = channel.Close()
+ err.handleClose = handle.Close()
+ if err.fidl == nil && err.channel.wait == nil && err.channel.close == nil && err.handleClose == nil {
+ return nil
+ }
+ return &err
+}
+
+// DatagramSocket is a datagram socket.
+type DatagramSocket struct {
+ stub
+
+ client socket.DatagramSocketWithCtxInterface
+ event zx.Handle
+}
+
+// Clone implements Socket.
+func (s *DatagramSocket) Clone() (fdio.FDIO, error) {
+ return clone(&s.client)
+}
+
+// Bind implements Socket.
+func (s *DatagramSocket) Bind(addr net.SocketAddress) error {
+ return bind(&s.client, addr)
+}
+
+// Connect implements Socket.
+func (s *DatagramSocket) Connect(addr net.SocketAddress) error {
+ return connect(&s.client, addr)
+}
+
+// GetPeerName implements Socket.
+func (s *DatagramSocket) GetPeerName() (net.SocketAddress, error) {
+ return getPeerName(&s.client)
+}
+
+// GetSockName implements Socket.
+func (s *DatagramSocket) GetSockName() (net.SocketAddress, error) {
+ return getSockName(&s.client)
+}
+
+// SetKeepAlive implements Socket.
+func (s *DatagramSocket) SetKeepAlive(keepalive bool) error {
+ return setKeepAlive(&s.client, keepalive)
+}
+
+func (s *DatagramSocket) recvMsg(dataLen uint32) (net.SocketAddress, []byte, error) {
+ for {
+ result, err := s.client.RecvMsg(context.Background() /* wantAddr */, true, dataLen /* wantControl */, false, 0)
+ if err != nil {
+ return net.SocketAddress{}, nil, err
+ }
+ switch result.Which() {
+ case socket.DatagramSocketRecvMsgResultErr:
+ if err := syscall.Errno(result.Err); err != syscall.EAGAIN {
+ return net.SocketAddress{}, nil, err
+ }
+
+ obs, err := zxwait.WaitContext(context.Background(), s.event, SignalDatagramIncoming|SignalDatagramShutdownRead|zx.SignalEpairPeerClosed)
+ if err != nil {
+ return net.SocketAddress{}, nil, err
+ }
+ if obs&SignalDatagramIncoming != 0 {
+ continue
+ }
+ if obs&(SignalDatagramShutdownRead|zx.SignalEpairPeerClosed) != 0 {
+ return net.SocketAddress{}, nil, &zx.Error{Status: zx.ErrPeerClosed, Text: "zxsocket.DatagramSocket.RecvMsg"}
+ }
+ panic("unreachable")
+
+ case socket.DatagramSocketRecvMsgResultResponse:
+ return *result.Response.Addr, result.Response.Data, nil
+ default:
+ panic("unreachable")
+ }
+ }
+}
+
+// RecvMsg implements roughly the recvmsg "system call". Its signature resembles
+// that of syscall.Revcvmsg on other platforms.
+func (s *DatagramSocket) RecvMsg(maxLen int) ([]byte, net.SocketAddress, error) {
+ addr, data, err := s.recvMsg(uint32(maxLen))
+ if err != nil {
+ return nil, net.SocketAddress{}, err
+ }
+ return data, addr, nil
+}
+
+func (s *DatagramSocket) sendMsg(addr *net.SocketAddress, data []byte) (int, error) {
+ result, err := s.client.SendMsg(context.Background(), addr, data, socket.SendControlData{}, 0)
+ if err != nil {
+ return 0, err
+ }
+ switch result.Which() {
+ case socket.DatagramSocketSendMsgResultErr:
+ return 0, syscall.Errno(result.Err)
+ case socket.DatagramSocketSendMsgResultResponse:
+ return int(result.Response.Len), nil
+ default:
+ panic("unreachable")
+ }
+}
+
+// SendMsg implements roughly the sendmsg "system call". Its signature resembles
+// that of syscall.Sendmsg on other platforms.
+func (s *DatagramSocket) SendMsg(b []byte, addr net.SocketAddress) (int, error) {
+ switch addr.Which() {
+ case net.SocketAddressIpv4, net.SocketAddressIpv6:
+ return s.sendMsg(&addr, b)
+ default:
+ return s.sendMsg(nil, b)
+ }
+}
+
+// Close implements fdio.FDIO.
+func (s *DatagramSocket) Close() error {
+ return closeSocket(&s.client, &s.client.Channel, &s.event)
+}
+
+// Handles implements fdio.FDIO.
+func (s *DatagramSocket) Handles() []zx.Handle {
+ return []zx.Handle{*s.client.Handle(), s.event}
+}
+
+// Read implements fdio.FDIO.
+func (s *DatagramSocket) Read(data []byte) (int, error) {
+ _, b, err := s.recvMsg(uint32(len(data)))
+ return copy(data, b), err
+}
+
+// Write implements fdio.FDIO.
+func (s *DatagramSocket) Write(data []byte) (int, error) {
+ return s.sendMsg(nil, data)
+}
+
+// StreamSocket is a stream socket.
+type StreamSocket struct {
+ stub
+
+ client socket.StreamSocketWithCtxInterface
+ socket zx.Socket
+}
+
+// Clone implements Socket.
+func (s *StreamSocket) Clone() (fdio.FDIO, error) {
+ return clone(&s.client)
+}
+
+// Bind implements Socket.
+func (s *StreamSocket) Bind(addr net.SocketAddress) error {
+ return bind(&s.client, addr)
+}
+
+// Connect implements Socket.
+func (s *StreamSocket) Connect(addr net.SocketAddress) error {
+ return connect(&s.client, addr)
+}
+
+// GetPeerName implements Socket.
+func (s *StreamSocket) GetPeerName() (net.SocketAddress, error) {
+ return getPeerName(&s.client)
+}
+
+// GetSockName implements Socket.
+func (s *StreamSocket) GetSockName() (net.SocketAddress, error) {
+ return getSockName(&s.client)
+}
+
+// SetKeepAlive implements Socket.
+func (s *StreamSocket) SetKeepAlive(keepalive bool) error {
+ return setKeepAlive(&s.client, keepalive)
+}
+
+// SetNoDelay sets the SOL_TCP, TCP_NODELAY socket option.
+func (s *StreamSocket) SetNoDelay(noDelay bool) error {
+ result, err := s.client.SetTcpNoDelay(context.Background(), noDelay)
+ if err != nil {
+ return err
+ }
+ switch result.Which() {
+ case socket.StreamSocketSetTcpNoDelayResultErr:
+ return syscall.Errno(result.Err)
+ case socket.StreamSocketSetTcpNoDelayResultResponse:
+ return nil
+ default:
+ panic("unreachable")
+ }
+}
+
+// SetKeepAlivePeriod sets the SOL_TCP, {TCP_KEEPINTVL,TCP_KEEPIDLE} socket options.
+func (s *StreamSocket) SetKeepAlivePeriod(seconds uint32) error {
+ {
+ result, err := s.client.SetTcpKeepAliveInterval(context.Background(), seconds)
+ if err != nil {
+ return err
+ }
+ switch result.Which() {
+ case socket.StreamSocketSetTcpKeepAliveIntervalResultErr:
+ return syscall.Errno(result.Err)
+ case socket.StreamSocketSetTcpKeepAliveIntervalResultResponse:
+ default:
+ panic("unreachable")
+ }
+ }
+ {
+ result, err := s.client.SetTcpKeepAliveIdle(context.Background(), seconds)
+ if err != nil {
+ return err
+ }
+ switch result.Which() {
+ case socket.StreamSocketSetTcpKeepAliveIdleResultErr:
+ return syscall.Errno(result.Err)
+ case socket.StreamSocketSetTcpKeepAliveIdleResultResponse:
+ default:
+ panic("unreachable")
+ }
+ }
+ return nil
+}
+
+// Accept accepts an incoming connection.
+func (s *StreamSocket) Accept(wantAddr bool) (*StreamSocket, *net.SocketAddress, error) {
+ result, err := s.client.Accept(context.Background(), wantAddr)
+ if err != nil {
+ return nil, nil, err
+ }
+ switch result.Which() {
+ case socket.StreamSocketAcceptResultErr:
+ return nil, nil, syscall.Errno(result.Err)
+ case socket.StreamSocketAcceptResultResponse:
+ newS, err := NewSocket(&socket.BaseSocketWithCtxInterface{Channel: result.Response.S.Channel})
+ if err != nil {
+ return nil, nil, err
+ }
+ return newS.(*StreamSocket), result.Response.Addr, nil
+ default:
+ panic("unreachable")
+ }
+}
+
+// Listen begins listening for incoming connections.
+func (s *StreamSocket) Listen(backlog int16) error {
+ result, err := s.client.Listen(context.Background(), backlog)
+ if err != nil {
+ return err
+ }
+ switch result.Which() {
+ case socket.StreamSocketListenResultErr:
+ return syscall.Errno(result.Err)
+ case socket.StreamSocketListenResultResponse:
+ return nil
+ default:
+ panic("unreachable")
+ }
+}
+
+// Wait waits on the receiver's socket handle until any of the provided signals
+// are asserted, or until the timeout elapses.
+func (s *StreamSocket) Wait(ctx context.Context, signals zx.Signals) (zx.Signals, error) {
+ return zxwait.WaitContext(ctx, *s.socket.Handle(), signals)
+}
+
+// Close implements fdio.FDIO.
+func (s *StreamSocket) Close() error {
+ return closeSocket(&s.client, &s.client.Channel, s.socket.Handle())
+}
+
+// Handles implements fdio.FDIO.
+func (s *StreamSocket) Handles() []zx.Handle {
+ return []zx.Handle{*s.client.Handle(), *s.socket.Handle()}
+}
+
+// Read implements fdio.FDIO.
+func (s *StreamSocket) Read(data []byte) (int, error) {
+ for {
+ n, err := s.socket.Read(data, 0)
+ if err != nil {
+ if err, ok := err.(*zx.Error); ok {
+ switch err.Status {
+ case zx.ErrPeerClosed:
+ return 0, io.EOF
+ case zx.ErrShouldWait:
+ obs, err := s.Wait(context.Background(), zx.SignalSocketReadable|zx.SignalSocketPeerClosed)
+ if err != nil {
+ if err, ok := err.(*zx.Error); ok {
+ switch err.Status {
+ case zx.ErrBadHandle, zx.ErrCanceled:
+ return 0, io.EOF
+ }
+ }
+ return 0, err
+ }
+ switch {
+ case obs&zx.SignalSocketReadable != 0:
+ continue
+ case obs&zx.SignalSocketPeerClosed != 0:
+ return 0, io.EOF
+ }
+ }
+ }
+ return 0, err
+ }
+ return n, nil
+ }
+}
+
+// Write implements fdio.FDIO.
+func (s *StreamSocket) Write(data []byte) (int, error) {
+ var total int
+ for {
+ n, err := s.socket.Write(data, 0)
+ total += n
+ if err != nil {
+ if err, ok := err.(*zx.Error); ok {
+ switch err.Status {
+ case zx.ErrShouldWait:
+ obs, err := s.Wait(context.Background(), zx.SignalSocketWritable|zx.SignalSocketPeerClosed|zx.SignalSocketWriteDisabled)
+ if err != nil {
+ return total, err
+ }
+ if obs&zx.SignalSocketPeerClosed != 0 || obs&zx.SignalSocketWriteDisabled != 0 {
+ return total, &zx.Error{Status: zx.ErrPeerClosed, Text: "zxsocket.Socket.Write"}
+ }
+ if obs&zx.SignalSocketWritable != 0 {
+ data = data[n:]
+ continue
+ }
+ // This case should be impossible:
+ return total, &zx.Error{Status: zx.ErrInternal, Text: "zxsocket.Socket.Write(impossible state)"}
+ }
+ }
+ return total, err
+ }
+ return total, nil
+ }
+}
diff --git a/src/syscall/zx/zxsocket/stub.go b/src/syscall/zx/zxsocket/stub.go
new file mode 100644
index 0000000..6d07335
--- /dev/null
+++ b/src/syscall/zx/zxsocket/stub.go
@@ -0,0 +1,12 @@
+// Copyright 2021 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.
+
+// The test in src/cmd/go/testdata/script/mod_require_exclude.txt attempts to
+// understand this package; without this file, that fails with
+//
+// package syscall/zx/zxsocket: build constraints exclude all Go files in .../go/src/syscall/zx/zxsocket
+//
+// This stub prevents that problem.
+
+package zxsocket
diff --git a/src/syscall/zx/zxwait/zxwait.go b/src/syscall/zx/zxwait/zxwait.go
new file mode 100644
index 0000000..13f52f9
--- /dev/null
+++ b/src/syscall/zx/zxwait/zxwait.go
@@ -0,0 +1,270 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Go's distribution tools attempt to compile everything; this file
+// depends on types that don't compile in not-Fuchsia.
+//go:build fuchsia
+// +build fuchsia
+
+// Package zxwait implements a Zircon port waiter compatible with goroutines.
+//
+// The function Wait can be used to wait on a handle without consuming
+// an OS thread or resorting to event-driven programming.
+package zxwait
+
+import (
+ "strconv"
+ "sync"
+ "sync/atomic"
+ "syscall/zx"
+ "syscall/zx/internal/context"
+ _ "unsafe" // for go:linkname
+)
+
+// WaitContext waits for signals on handle.
+func WaitContext(ctx context.Context, handle zx.Handle, signals zx.Signals) (zx.Signals, error) {
+ sysWaiterOnce.Do(sysWaiterInit)
+ return sysWaiter.Wait(ctx, handle, signals)
+}
+
+func WithRetryContext(ctx context.Context, fn func() error, handle zx.Handle, ready, closed zx.Signals) error {
+ signals := ready | closed
+ for {
+ err := fn()
+ if err, ok := err.(*zx.Error); ok && err.Status == zx.ErrShouldWait {
+ obs, err := WaitContext(
+ ctx,
+ handle,
+ signals,
+ )
+ if err != nil {
+ return err
+ }
+ if obs&ready != 0 {
+ continue
+ }
+ if obs&closed != 0 {
+ return &zx.Error{Status: zx.ErrPeerClosed}
+ }
+ panic("unexpected signal mask " + strconv.FormatUint(uint64(obs), 2) + " (expected " + strconv.FormatUint(uint64(signals), 2) + ")")
+ }
+ return err
+ }
+}
+
+//go:linkname gopark runtime.gopark
+func gopark(unlockf func(g uintptr, waiting *waitingG) bool, waitng *waitingG, reason uint8, traceEv byte, traceskip int)
+
+//go:linkname goready runtime.goready
+func goready(g uintptr, traceskip int)
+
+const preparingG = 1
+
+// waitingG is used to track a parked g waiting for a signal.
+//
+// A waitingG is represented by a unique key, which is also its positional
+// index in the waiter's all slice. This key is not a GCed pointer, so it can
+// be safely passed to the kernel and returned at a later time.
+type waitingG struct {
+ // key is an index into the waiter's all slice. It is never modified.
+ key uint64
+
+ g uintptr
+
+ done chan<- struct{}
+ obs zx.Signals
+}
+
+// A waiter is a zircon port that parks goroutines waiting on signals.
+//
+// Currently there is only one instance of waiter per process, stored
+// in sysWaiter. It is however a self-contained object and multiple
+// of them can safely exist concurrently.
+type waiter struct {
+ port zx.Port
+
+ mu struct {
+ sync.Mutex
+ free []*waitingG
+ all []*waitingG
+
+ allByHandle map[zx.Handle]map[*waitingG]struct{}
+ }
+}
+
+func init() {
+ port, err := zx.NewPort(0)
+ if err != nil {
+ panic(err) // misuse of system call, no useful recovery
+ }
+ sysWaiter.port = port
+ sysWaiter.mu.allByHandle = make(map[zx.Handle]map[*waitingG]struct{})
+ zx.SetZXWaitCloseFn(sysWaiter.close)
+}
+
+var sysWaiterOnce sync.Once
+var sysWaiter waiter
+
+func sysWaiterInit() {
+ go sysWaiter.dequeue()
+}
+
+// dequeue is a dedicated goroutine to waiting on the waiter's port.
+func (w *waiter) dequeue() {
+ var pkt zx.Packet
+ for {
+ if err := w.port.Wait(&pkt, zx.TimensecInfinite); err != nil {
+ panic(err)
+ }
+
+ w.mu.Lock()
+ waiting := w.mu.all[pkt.Hdr.Key]
+ w.mu.Unlock()
+
+ switch pkt.Hdr.Type {
+ case zx.PortPacketTypeUser:
+ waiting.obs = zx.SignalHandleClosed
+ default:
+ waiting.obs = pkt.Signal().Observed
+ }
+
+ if done := waiting.done; done != nil {
+ close(done)
+ } else {
+ switch g := atomic.SwapUintptr(&waiting.g, 0); g {
+ case 0, preparingG:
+ default:
+ goready(g, 0)
+ }
+ }
+ }
+}
+
+func (w *waiter) close(handle zx.Handle, cb func(zx.Handle) error) error {
+ w.mu.Lock()
+ defer w.mu.Unlock()
+ for waiting := range w.mu.allByHandle[handle] {
+ switch status := zx.Sys_port_cancel(zx.Handle(w.port), handle, waiting.key); status {
+ case zx.ErrOk:
+ if err := w.port.Queue(&zx.Packet{
+ Hdr: zx.PacketHeader{
+ Key: waiting.key,
+ Type: zx.PortPacketTypeUser,
+ },
+ }); err != nil {
+ return err
+ }
+ case zx.ErrNotFound:
+ // Nobody is waiting, no need to notify.
+ default:
+ return &zx.Error{Status: status, Text: "zx.Port.Cancel"}
+ }
+ }
+ return cb(handle)
+}
+
+// Wait waits for signals on handle.
+//
+// See the package function Wait for more commentary.
+func (w *waiter) Wait(ctx context.Context, handle zx.Handle, signals zx.Signals) (zx.Signals, error) {
+ var waiting *waitingG
+
+ w.mu.Lock()
+ if len(w.mu.free) == 0 {
+ waiting = &waitingG{
+ key: uint64(len(w.mu.all)),
+ }
+ w.mu.all = append(w.mu.all, waiting)
+ } else {
+ waiting = w.mu.free[len(w.mu.free)-1]
+ w.mu.free = w.mu.free[:len(w.mu.free)-1]
+ }
+ waiting.g = preparingG
+ m, ok := w.mu.allByHandle[handle]
+ if !ok {
+ m = make(map[*waitingG]struct{})
+ w.mu.allByHandle[handle] = m
+ }
+ var wait func() (zx.Signals, error)
+ if done := ctx.Done(); done != nil {
+ ch := make(chan struct{})
+ waiting.done = ch
+ wait = func() (zx.Signals, error) {
+ select {
+ case <-ch:
+ // Wait complete.
+ return waiting.obs, nil
+ case <-done:
+ // Context canceled.
+ switch status := zx.Sys_port_cancel(zx.Handle(w.port), handle, waiting.key); status {
+ case zx.ErrOk:
+ return 0, ctx.Err()
+ case zx.ErrNotFound:
+ // We lost the race.
+ <-ch
+ return waiting.obs, nil
+ default:
+ return 0, &zx.Error{Status: status, Text: "zx.Port.Cancel"}
+ }
+ }
+ }
+ } else {
+ waiting.done = nil
+ }
+ m[waiting] = struct{}{}
+ // waiting must be fully initialized before a wakeup in dequeue is possible -
+ // after the call to wait_async and when the mutex is not held.
+ err := w.port.WaitAsync(handle, waiting.key, signals, zx.PortWaitAsyncOnce)
+ w.mu.Unlock()
+
+ defer func() {
+ w.mu.Lock()
+ delete(m, waiting)
+ if len(m) == 0 {
+ delete(w.mu.allByHandle, handle)
+ }
+ w.mu.free = append(w.mu.free, waiting)
+ w.mu.Unlock()
+ }()
+
+ if err != nil {
+ return 0, err
+ }
+
+ if wait != nil {
+ return wait()
+ }
+
+ const waitReasonIOWait = 2
+ const traceEvGoBlockSelect = 24
+ gopark(w.unlockf, waiting, waitReasonIOWait, traceEvGoBlockSelect, 0)
+
+ obs := waiting.obs
+
+ return obs, func() error {
+ if obs == zx.SignalHandleClosed {
+ return &zx.Error{Status: zx.ErrCanceled, Text: "zxwait.Wait"}
+ }
+ return nil
+ }()
+}
+
+// unlockf is passed as a callback to gopark.
+//
+// Reporting true will park the goroutine until goready is called.
+//
+// Reporting false will immediately start running the goroutine
+// again, and nothing else should call goready.
+//
+// This method is called without a 'g', so it can do very little.
+// Avoid the stack. Don't use anything with 'g'-based runtime
+// support (like sync.Mutex). Do as little as possible.
+func (w *waiter) unlockf(g uintptr, waiting *waitingG) bool {
+ // If we can set ready, then this executed before dequeue
+ // and the goroutine will be parked.
+ //
+ // If we cannot set it, then dequeue has already run and
+ // waiting.obs is set, so do not park the goroutine.
+ return atomic.CompareAndSwapUintptr(&waiting.g, preparingG, g)
+}
diff --git a/src/syscall/zx/zxwait/zxwait.s b/src/syscall/zx/zxwait/zxwait.s
new file mode 100644
index 0000000..a35105e
--- /dev/null
+++ b/src/syscall/zx/zxwait/zxwait.s
@@ -0,0 +1,5 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Empty assembly file so empty func definitions work.
diff --git a/src/syscall/zx/zxwait/zxwait_test.go b/src/syscall/zx/zxwait/zxwait_test.go
new file mode 100644
index 0000000..c4c418b
--- /dev/null
+++ b/src/syscall/zx/zxwait/zxwait_test.go
@@ -0,0 +1,299 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// `go mod` ignores file names for the purpose of resolving
+// dependencies, and zxwait doesn't build on not-Fuchsia.
+//go:build fuchsia
+// +build fuchsia
+
+package zxwait_test
+
+import (
+ "context"
+ "fmt"
+ "runtime"
+ "sync"
+ "syscall/zx"
+ "syscall/zx/zxwait"
+ "testing"
+)
+
+func TestWaitContextPreexisting(t *testing.T) {
+ c0, c1, err := zx.NewChannel(0)
+ if err != nil {
+ t.Fatal(err)
+ }
+ defer func() {
+ _ = c0.Close()
+ _ = c1.Close()
+ }()
+
+ for _, ch := range [...]zx.Channel{c0, c1} {
+ obs, err := zxwait.WaitContext(context.Background(), *ch.Handle(), zx.SignalChannelWritable)
+ if err != nil {
+ t.Fatal(err)
+ }
+ if want := zx.Signals(zx.SignalChannelWritable); obs != want {
+ t.Errorf("got obs = %x, want = %x", obs, want)
+ }
+ }
+}
+
+type waitResult struct {
+ obs zx.Signals
+ err error
+}
+
+func TestWaitContext(t *testing.T) {
+ var pairs [][2]zx.Channel
+ defer func() {
+ for _, pair := range pairs {
+ for _, ch := range pair {
+ _ = ch.Close()
+ }
+ }
+ }()
+
+ ch := make(chan waitResult, 100)
+ for i := 0; i < cap(ch); i++ {
+ ch1, ch2, err := zx.NewChannel(0)
+ if err != nil {
+ t.Fatal(err)
+ }
+ pair := [...]zx.Channel{ch1, ch2}
+ pairs = append(pairs, pair)
+ go func() {
+ obs, err := zxwait.WaitContext(context.Background(), *pair[0].Handle(), zx.SignalChannelReadable)
+ ch <- waitResult{obs: obs, err: err}
+ }()
+ }
+
+ b := []byte("hello")
+ for i, pair := range pairs {
+ if err := pair[1].Write(b, nil, 0); err != nil {
+ t.Fatalf("%d: %s", i, err)
+ }
+ }
+
+ for i := 0; i < cap(ch); i++ {
+ waitResult := <-ch
+ if err := waitResult.err; err != nil {
+ t.Fatal(err)
+ }
+ if obs, want := waitResult.obs, zx.Signals(zx.SignalChannelReadable|zx.SignalChannelWritable); obs != want {
+ t.Errorf("%d: got obs = %b, want = %b", i, obs, want)
+ }
+ }
+}
+
+func TestWaitContext_Cancel(t *testing.T) {
+ event, err := zx.NewEvent(0)
+ if err != nil {
+ t.Fatal(err)
+ }
+ defer func() {
+ if err := event.Close(); err != nil {
+ t.Fatal(err)
+ }
+ }()
+
+ ctx, cancel := context.WithCancel(context.Background())
+ defer cancel()
+
+ ch := make(chan waitResult, 100)
+ var wg sync.WaitGroup
+ for i := 0; i < cap(ch)-1; i++ {
+ wg.Add(1)
+ go func() {
+ wg.Done()
+ obs, err := zxwait.WaitContext(ctx, *event.Handle(), 0)
+ ch <- waitResult{obs: obs, err: err}
+ }()
+ }
+ // Wait for all goroutines to be scheduled.
+ wg.Wait()
+ cancel()
+ // Guarantee at least one result happens after cancel.
+ {
+ obs, err := zxwait.WaitContext(ctx, *event.Handle(), 0)
+ ch <- waitResult{obs: obs, err: err}
+ }
+ for i := 0; i < cap(ch); i++ {
+ waitResult := <-ch
+ if got, want := waitResult.obs, zx.Signals(0); got != want {
+ t.Errorf("%d: got obs = %b, want = %b", i, got, want)
+ }
+ if got, want := waitResult.err, context.Canceled; got != want {
+ t.Errorf("%d: got zxwait.WaitContext(<closed handle>) = (_, %s), want = (_, %s)", i, got, want)
+ }
+ }
+}
+
+func TestWaitContext_LocalClose(t *testing.T) {
+ event, err := zx.NewEvent(0)
+ if err != nil {
+ t.Fatal(err)
+ }
+ defer func() {
+ _ = event.Close()
+ }()
+ ch := make(chan waitResult, 100)
+ var wg sync.WaitGroup
+ for i := 0; i < cap(ch)-1; i++ {
+ wg.Add(1)
+ go func() {
+ wg.Done()
+ obs, err := zxwait.WaitContext(context.Background(), *event.Handle(), 0)
+ ch <- waitResult{obs: obs, err: err}
+ }()
+ }
+ // Wait for all goroutines to be scheduled.
+ wg.Wait()
+ if err := event.Close(); err != nil {
+ t.Fatal(err)
+ }
+ // Guarantee at least one result happens after local close.
+ {
+ obs, err := zxwait.WaitContext(context.Background(), *event.Handle(), 0)
+ ch <- waitResult{obs: obs, err: err}
+ }
+ var badHandle, cancelled int
+ for i := 0; i < cap(ch); i++ {
+ waitResult := <-ch
+ err := waitResult.err
+ switch err := err.(type) {
+ case *zx.Error:
+ obs := waitResult.obs
+ switch err.Status {
+ case zx.ErrBadHandle:
+ // This goroutine didn't get scheduled in time.
+ if want := zx.Signals(0); obs != want {
+ t.Errorf("%d: got obs = %b, want = %b", i, obs, want)
+ }
+ badHandle++
+ continue
+ case zx.ErrCanceled:
+ if want := zx.Signals(zx.SignalHandleClosed); obs != want {
+ t.Errorf("%d: got obs = %b, want = %b", i, obs, want)
+ }
+ cancelled++
+ continue
+ }
+ }
+ t.Errorf("%d: got zxwait.WaitContext(<closed handle>) = (_, %s), want = (_, %s or %s)", i, err, zx.ErrBadHandle, zx.ErrCanceled)
+ }
+ if badHandle == 0 {
+ t.Errorf("failed to observe post-close condition")
+ }
+ if cancelled == 0 {
+ t.Error("failed to observe pre-close condition")
+ }
+}
+
+func TestWaitContext_LocalCloseRace(t *testing.T) {
+ var wg sync.WaitGroup
+
+ for i := 0; i < 100; i++ {
+ // Start a wait, assert the signal, and close the handle. This is a
+ // regression test for an issue where internal state was reused without
+ // cancelling pending waits, causing future waits to catch stale wakeups.
+ wg.Add(1)
+ go func() {
+ defer wg.Done()
+
+ if err := func() error {
+ var event zx.Handle
+ if status := zx.Sys_event_create(0, &event); status != zx.ErrOk {
+ return &zx.Error{Status: status, Text: "failed to create event"}
+ }
+ defer func() {
+ _ = event.Close()
+ }()
+
+ // Buffer the channel to avoid leaking a goroutine in case of error
+ // below.
+ ch := make(chan error, 1)
+ // Capture the event by value to avoid racing against the Close call,
+ // which resets its receiver.
+ go func(event zx.Handle) {
+ ch <- func() error {
+ obs, err := zxwait.WaitContext(context.Background(), event, zx.SignalUser0)
+ if err != nil {
+ if err, ok := err.(*zx.Error); ok {
+ switch err.Status {
+ case zx.ErrCanceled:
+ if obs != zx.SignalHandleClosed {
+ return fmt.Errorf("got zxwait.WaitContext(..., %b, ...) = %b", zx.SignalUser0, obs)
+ }
+ fallthrough
+ case zx.ErrBadHandle:
+ // We lost the race against the Close call; it's fine.
+ return nil
+ }
+ }
+ return fmt.Errorf("failed to zxwait: %w", err)
+ }
+ if obs != zx.SignalUser0 {
+ return fmt.Errorf("got zxwait.WaitContext(..., %b, ...) = %b", zx.SignalUser0, obs)
+ }
+ return nil
+ }()
+ }(event)
+
+ // Yield to allow the goroutine to be scheduled, beginning the wait.
+ runtime.Gosched()
+
+ if err := event.Signal(0, zx.SignalUser0); err != nil {
+ return fmt.Errorf("failed to signal event: %w", err)
+ }
+ if err := event.Close(); err != nil {
+ return fmt.Errorf("failed to close event: %w", err)
+ }
+
+ return <-ch
+ }(); err != nil {
+ t.Error(err)
+ }
+ }()
+
+ // Create a new event, assert a (different) signal, and wait for that
+ // signal; if internal state was incorrectly reused, the wait will return
+ // the previous wait's signal.
+ wg.Add(1)
+ go func() {
+ defer wg.Done()
+
+ if err := func() error {
+ var event zx.Handle
+ if status := zx.Sys_event_create(0, &event); status != zx.ErrOk {
+ return &zx.Error{Status: status, Text: "failed to create event"}
+ }
+ defer func() {
+ _ = event.Close()
+ }()
+
+ if err := event.Signal(0, zx.SignalUser1); err != nil {
+ return fmt.Errorf("failed to signal event: %w", err)
+ }
+
+ obs, err := zxwait.WaitContext(context.Background(), event, zx.SignalUser1)
+ if err != nil {
+ return fmt.Errorf("failed to zxwait: %w", err)
+ }
+ if obs != zx.SignalUser1 {
+ return fmt.Errorf("got zxwait.WaitContext(..., %b, ...) = %b", zx.SignalUser1, obs)
+ }
+
+ if err := event.Close(); err != nil {
+ return fmt.Errorf("failed to close event: %w", err)
+ }
+ return nil
+ }(); err != nil {
+ t.Error(err)
+ }
+ }()
+ }
+
+ wg.Wait()
+}
diff --git a/src/time/sys_fuchsia.go b/src/time/sys_fuchsia.go
new file mode 100644
index 0000000..2a28362
--- /dev/null
+++ b/src/time/sys_fuchsia.go
@@ -0,0 +1,33 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package time
+
+// for testing: whatever interrupts a sleep
+func interrupt() {
+}
+
+func initLocal() {
+ localLoc.name = "UTC"
+}
+
+func read(fd uintptr, buf []byte) (int, error) {
+ panic("TODO")
+}
+
+func open(name string) (uintptr, error) {
+ panic("TODO")
+}
+
+func closefd(fd uintptr) {
+ panic("TODO")
+}
+
+func preadn(fd uintptr, buf []byte, off int) error {
+ panic("TODO")
+}
+
+func isNotExist(err error) bool {
+ panic("TODO")
+}
diff --git a/src/time/tick_test.go b/src/time/tick_test.go
index b5d0a18..3573d73 100644
--- a/src/time/tick_test.go
+++ b/src/time/tick_test.go
@@ -12,6 +12,10 @@
)
func TestTicker(t *testing.T) {
+ if runtime.GOOS == "darwin" {
+ t.Skip("TODO(https://github.com/golang/go/issues/35692): Re-enable")
+ }
+
// We want to test that a ticker takes as much time as expected.
// Since we don't want the test to run for too long, we don't
// want to use lengthy times. This makes the test inherently flaky.
diff --git a/src/time/zoneinfo_fuchsia.go b/src/time/zoneinfo_fuchsia.go
new file mode 100644
index 0000000..09a6696
--- /dev/null
+++ b/src/time/zoneinfo_fuchsia.go
@@ -0,0 +1,7 @@
+// Copyright 2009 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 time
+
+var zoneSources = []string{}