[fidl][go] Added InvertKnownBits, HasBits, and ClearBits methods to Go bits API.

This change contains the updated tests, as generated by the new fidlgen_go in the companion change on fuchsia.git, Ia24a1f0bebbe13b92e95329b26111af1e7401bbe.

Fixed: 55358
Change-Id: I3389398b57cef03a578d3b381039cc75fe6427ff
Reviewed-on: https://fuchsia-review.googlesource.com/c/third_party/go/+/454859
Commit-Queue: Alex Zaslavsky <azaslavsky@google.com>
Reviewed-by: Felix Zhu <fcz@google.com>
diff --git a/api/fuchsia.txt b/api/fuchsia.txt
index 7eeef50..70e892f 100644
--- a/api/fuchsia.txt
+++ b/api/fuchsia.txt
@@ -1183,15 +1183,21 @@
 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) InvertKnownBits() 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) InvertKnownBits() 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
@@ -1492,10 +1498,13 @@
 pkg syscall/zx/hardware/network, method (DeviceClass) String() string
 pkg syscall/zx/hardware/network, method (DeviceWithCtxInterfaceRequest) Name() string
 pkg syscall/zx/hardware/network, method (DeviceWithCtxInterfaceRequest) ToChannel() zx.Channel
+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) InvertKnownBits() 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
@@ -1515,34 +1524,49 @@
 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) InvertKnownBits() 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) InvertKnownBits() 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) InvertKnownBits() 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) InvertKnownBits() 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) InvertKnownBits() 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
@@ -2864,9 +2888,9 @@
 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.Handle, string) (DirectoryLinkResult, error)
+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.Handle, string) (DirectoryRenameResult, 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)
@@ -3095,49 +3119,73 @@
 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) InvertKnownBits() 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) InvertKnownBits() 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) InvertKnownBits() 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) InvertKnownBits() 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) InvertKnownBits() FileSignal
 pkg syscall/zx/io2, method (FileSignal) 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) InvertKnownBits() 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) InvertKnownBits() 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) InvertKnownBits() 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
@@ -3147,10 +3195,13 @@
 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 (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) InvertKnownBits() 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
@@ -3302,9 +3353,9 @@
 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.Handle, string) (DirectoryLinkResult, 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.Handle, string) (DirectoryRenameResult, 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)
@@ -3460,7 +3511,7 @@
 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.Handle
+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
@@ -3798,12 +3849,20 @@
 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
@@ -3820,6 +3879,8 @@
 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)
@@ -3834,6 +3895,30 @@
 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
@@ -3841,6 +3926,11 @@
 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)
@@ -3849,6 +3939,7 @@
 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
@@ -3860,15 +3951,19 @@
 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) InvertKnownBits() 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
@@ -3892,6 +3987,18 @@
 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
@@ -3902,15 +4009,22 @@
 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 }
+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
@@ -4951,6 +5065,40 @@
 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 ProviderDatagramSocketOrdinal = 4073343718529375409
@@ -4967,6 +5115,12 @@
 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
@@ -5069,6 +5223,8 @@
 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
@@ -5180,6 +5336,7 @@
 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
@@ -5187,17 +5344,21 @@
 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 (*ProviderDatagramSocketResponse) Marshaler() fidl.Marshaler
 pkg syscall/zx/posix/socket, method (*ProviderDatagramSocketResult) Ordinal() uint64
@@ -5210,6 +5371,11 @@
 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)
@@ -5224,6 +5390,7 @@
 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
@@ -5275,22 +5442,39 @@
 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) InvertKnownBits() 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) InvertKnownBits() 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) InvertKnownBits() 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) InvertKnownBits() 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
@@ -5422,6 +5606,7 @@
 pkg syscall/zx/posix/socket, type I_datagramSocketShutdownResultTag 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
@@ -5434,8 +5619,11 @@
 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 ProviderDatagramSocketResponse struct
 pkg syscall/zx/posix/socket, type ProviderDatagramSocketResponse struct, S DatagramSocketWithCtxInterface
 pkg syscall/zx/posix/socket, type ProviderDatagramSocketResult struct
@@ -5450,6 +5638,12 @@
 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
@@ -5462,10 +5656,11 @@
 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, InterfaceNameToIndex, StreamSocket }
+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
diff --git a/src/syscall/zx/diagnostics/impl.go b/src/syscall/zx/diagnostics/impl.go
index b2e1f70..2774e5a 100644
--- a/src/syscall/zx/diagnostics/impl.go
+++ b/src/syscall/zx/diagnostics/impl.go
@@ -396,7 +396,7 @@
 )
 
 type BatchIteratorGetNextResult struct {
-	I_batchIteratorGetNextResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_batchIteratorGetNextResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Response                        BatchIteratorGetNextResponse `fidl_ordinal:"1"`
 	Err                             ReaderError                  `fidl_ordinal:"2"`
 }
@@ -442,7 +442,7 @@
 // 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"`
+	I_selectorArgumentTag `fidl:"x" fidl_size_v1:"24" fidl_alignment_v1:"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.
@@ -507,7 +507,7 @@
 // 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"`
+	I_formattedContentTag `fidl:"x" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	I_unknownData         interface{}
 	// A diagnostics schema encoded as json.
 	// The VMO will contain up to 1mb of diagnostics data.
@@ -566,7 +566,7 @@
 )
 
 type ClientSelectorConfiguration struct {
-	I_clientSelectorConfigurationTag `fidl:"x" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_clientSelectorConfigurationTag `fidl:"x" fidl_size_v1:"24" fidl_alignment_v1:"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
@@ -628,7 +628,7 @@
 // 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"`
+	I_stringSelectorTag `fidl:"x" fidl_size_v1:"24" fidl_alignment_v1:"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
@@ -702,7 +702,7 @@
 // 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"`
+	I_treeSelectorTag `fidl:"x" fidl_size_v1:"24" fidl_alignment_v1:"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.
@@ -755,7 +755,7 @@
 // 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"`
+	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_resource:"false"`
 	I_unknownData interface{}
 	// Minimum desired severity. Components should include records at or
 	// above this severity.
@@ -799,7 +799,7 @@
 
 // Parameters needed to configure a stream of diagnostics information.
 type StreamParameters struct {
-	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8"`
+	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_resource:"false"`
 	I_unknownData interface{}
 	// A [fuchsia.diagnostics/DataType] that specifies the diagnostics data type
 	// to stream to the client.
@@ -970,7 +970,7 @@
 // will match all echo.cmx instances running only in realms directly under hub, but none
 // nested further.
 type ComponentSelector struct {
-	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8"`
+	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"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
@@ -1029,7 +1029,7 @@
 //    Subtree selection:
 //         realm1/realm2/echo.cmx:root/active_users
 type Selector struct {
-	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8"`
+	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_resource:"false"`
 	I_unknownData interface{}
 	// The selector defining a pattern of component monikers to match
 	// against.
diff --git a/src/syscall/zx/fidl/fidl_test/encoding_fuchsia_test.go b/src/syscall/zx/fidl/fidl_test/encoding_fuchsia_test.go
index 3238faf..1f8b43b 100644
--- a/src/syscall/zx/fidl/fidl_test/encoding_fuchsia_test.go
+++ b/src/syscall/zx/fidl/fidl_test/encoding_fuchsia_test.go
@@ -706,6 +706,38 @@
 		t.Errorf(
 			"Got wrong unknown bits: expected %b, was %b", 0b110100, unknownStrict.GetUnknownBits())
 	}
+	if unknownStrict.InvertKnownBits() != 0b110110 {
+		t.Errorf(
+			"Got wrong InvertKnownBits: expected %b, got %b", 0b110110, unknownStrict.InvertKnownBits())
+	}
+	if unknownStrict != unknownStrict.InvertKnownBits().InvertKnownBits() {
+		t.Errorf(
+			"Got wrong double InvertKnownBits: expected %b, got %b", unknownStrict, unknownStrict.InvertKnownBits().InvertKnownBits())
+	}
+	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 {
@@ -720,6 +752,38 @@
 		t.Errorf(
 			"Got wrong unknown bits: expected %b, was %b", 0b110100, unknownFlexible.GetUnknownBits())
 	}
+	if unknownFlexible.InvertKnownBits() != 0b110110 {
+		t.Errorf(
+			"Got wrong InvertKnownBits: expected %b, got %b", 0b110110, unknownFlexible.InvertKnownBits())
+	}
+	if unknownFlexible != unknownFlexible.InvertKnownBits().InvertKnownBits() {
+		t.Errorf(
+			"Got wrong double InvertKnownBits: expected %b, got %b", unknownFlexible, unknownFlexible.InvertKnownBits().InvertKnownBits())
+	}
+	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 {
diff --git a/src/syscall/zx/fidl/internal/bindingstest/impl.go b/src/syscall/zx/fidl/internal/bindingstest/impl.go
index 00b3d84..8189563 100644
--- a/src/syscall/zx/fidl/internal/bindingstest/impl.go
+++ b/src/syscall/zx/fidl/internal/bindingstest/impl.go
@@ -82,6 +82,20 @@
 	return uint64(^StrictBits_Mask & x)
 }
 
+func (x StrictBits) InvertKnownBits() StrictBits {
+	return (^StrictBits_Mask & x) | (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:
@@ -118,6 +132,20 @@
 	return uint64(^FlexibleBits_Mask & x)
 }
 
+func (x FlexibleBits) InvertKnownBits() FlexibleBits {
+	return (^FlexibleBits_Mask & x) | (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:
@@ -816,7 +844,7 @@
 )
 
 type Union1 struct {
-	I_union1Tag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_union1Tag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"false"`
 	A           [3]int8    `fidl_ordinal:"1"`
 	B           TestSimple `fidl_ordinal:"2"`
 	D           float32    `fidl_ordinal:"3"`
@@ -873,7 +901,7 @@
 )
 
 type XUnion1 struct {
-	I_xUnion1Tag  `fidl:"x" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_xUnion1Tag  `fidl:"x" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"false"`
 	I_unknownData interface{}
 	A             [3]int8    `fidl_ordinal:"1"`
 	B             TestSimple `fidl_ordinal:"2"`
@@ -942,7 +970,7 @@
 )
 
 type XUnion1AsUnion struct {
-	I_xUnion1AsUnionTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_xUnion1AsUnionTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"false"`
 	A                   [3]int8    `fidl_ordinal:"1"`
 	B                   TestSimple `fidl_ordinal:"2"`
 	D                   float32    `fidl_ordinal:"3"`
@@ -997,7 +1025,7 @@
 )
 
 type UnionInsideUnion struct {
-	I_unionInsideUnionTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_unionInsideUnionTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"false"`
 	A                     float32        `fidl_ordinal:"1"`
 	B                     XUnion1AsUnion `fidl_ordinal:"2"`
 }
@@ -1041,7 +1069,7 @@
 )
 
 type XUnionInsideXUnion struct {
-	I_xUnionInsideXUnionTag `fidl:"x" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_xUnionInsideXUnionTag `fidl:"x" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"false"`
 	I_unknownData           interface{}
 	A                       float32 `fidl_ordinal:"1"`
 	B                       XUnion1 `fidl_ordinal:"2"`
@@ -1096,7 +1124,7 @@
 )
 
 type StrictXUnion1 struct {
-	I_strictXUnion1Tag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_strictXUnion1Tag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"false"`
 	A                  [3]int8    `fidl_ordinal:"1"`
 	B                  TestSimple `fidl_ordinal:"2"`
 	D                  float32    `fidl_ordinal:"3"`
@@ -1153,7 +1181,7 @@
 )
 
 type SimpleUnion struct {
-	I_simpleUnionTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_simpleUnionTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"false"`
 	I32              int32       `fidl_ordinal:"1"`
 	I64              int64       `fidl_ordinal:"2"`
 	S                Int64Struct `fidl_ordinal:"3"`
@@ -1220,7 +1248,7 @@
 )
 
 type IpAddressConfig struct {
-	I_ipAddressConfigTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_ipAddressConfigTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"false"`
 	PaddingSize24Align4  [6]uint32 `fidl_ordinal:"1"`
 	Dhcp                 bool      `fidl_ordinal:"2"`
 }
@@ -1256,7 +1284,7 @@
 }
 
 type SimpleTable struct {
-	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8"`
+	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_resource:"false"`
 	I_unknownData interface{}
 	X             int64 `fidl_ordinal:"1"`
 	XPresent      bool
@@ -1321,7 +1349,7 @@
 }
 
 type OlderSimpleTable struct {
-	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8"`
+	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_resource:"false"`
 	I_unknownData interface{}
 	X             int64 `fidl_ordinal:"1"`
 	XPresent      bool
@@ -1360,7 +1388,7 @@
 }
 
 type NewerSimpleTable struct {
-	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8"`
+	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_resource:"false"`
 	I_unknownData interface{}
 	X             int64 `fidl_ordinal:"1"`
 	XPresent      bool
diff --git a/src/syscall/zx/hardware/ethernet/impl.go b/src/syscall/zx/hardware/ethernet/impl.go
index 958d984..141a002 100644
--- a/src/syscall/zx/hardware/ethernet/impl.go
+++ b/src/syscall/zx/hardware/ethernet/impl.go
@@ -50,6 +50,20 @@
 	return uint64(^Features_Mask & x)
 }
 
+func (x Features) InvertKnownBits() Features {
+	return (^Features_Mask & x) | (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:
@@ -87,6 +101,20 @@
 	return uint64(^DeviceStatus_Mask & x)
 }
 
+func (x DeviceStatus) InvertKnownBits() DeviceStatus {
+	return (^DeviceStatus_Mask & x) | (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:
diff --git a/src/syscall/zx/hardware/network/impl.go b/src/syscall/zx/hardware/network/impl.go
index 7f6a2f4..71551ac 100644
--- a/src/syscall/zx/hardware/network/impl.go
+++ b/src/syscall/zx/hardware/network/impl.go
@@ -394,6 +394,20 @@
 	return uint64(^StatusFlags_Mask & x)
 }
 
+func (x StatusFlags) InvertKnownBits() StatusFlags {
+	return (^StatusFlags_Mask & x) | (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:
@@ -432,6 +446,20 @@
 	return uint64(^EthernetFeatures_Mask & x)
 }
 
+func (x EthernetFeatures) InvertKnownBits() EthernetFeatures {
+	return (^EthernetFeatures_Mask & x) | (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:
@@ -493,6 +521,20 @@
 	return uint64(^RxFlags_Mask & x)
 }
 
+func (x RxFlags) InvertKnownBits() RxFlags {
+	return (^RxFlags_Mask & x) | (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:
@@ -579,6 +621,20 @@
 	return uint64(^TxFlags_Mask & x)
 }
 
+func (x TxFlags) InvertKnownBits() TxFlags {
+	return (^TxFlags_Mask & x) | (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:
@@ -647,6 +703,20 @@
 	return uint64(^TxReturnFlags_Mask & x)
 }
 
+func (x TxReturnFlags) InvertKnownBits() TxReturnFlags {
+	return (^TxReturnFlags_Mask & x) | (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:
@@ -689,6 +759,20 @@
 	return uint64(^SessionFlags_Mask & x)
 }
 
+func (x SessionFlags) InvertKnownBits() SessionFlags {
+	return (^SessionFlags_Mask & x) | (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:
@@ -1045,7 +1129,7 @@
 )
 
 type DeviceOpenSessionResult struct {
-	I_deviceOpenSessionResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_deviceOpenSessionResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Response                     DeviceOpenSessionResponse `fidl_ordinal:"1"`
 	Err                          int32                     `fidl_ordinal:"2"`
 }
@@ -1082,7 +1166,7 @@
 
 // Dynamic device information.
 type Status struct {
-	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8"`
+	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_resource:"false"`
 	I_unknownData interface{}
 	// Device status flags.
 	Flags        StatusFlags `fidl_ordinal:"1"`
diff --git a/src/syscall/zx/io/impl.go b/src/syscall/zx/io/impl.go
index 1ee1598..e62ae08 100644
--- a/src/syscall/zx/io/impl.go
+++ b/src/syscall/zx/io/impl.go
@@ -1579,7 +1579,7 @@
 //
 // Refer to `Node.Describe()` and `Node.OnOpen()` for usage.
 type NodeInfo struct {
-	I_nodeInfoTag  `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_nodeInfoTag  `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Service        Service         `fidl_ordinal:"1"`
 	File           FileObject      `fidl_ordinal:"2"`
 	Directory      DirectoryObject `fidl_ordinal:"3"`
diff --git a/src/syscall/zx/io2/impl.go b/src/syscall/zx/io2/impl.go
index 834480e..ed32ca1 100644
--- a/src/syscall/zx/io2/impl.go
+++ b/src/syscall/zx/io2/impl.go
@@ -322,6 +322,20 @@
 	return uint64(^ConnectionInfoQuery_Mask & x)
 }
 
+func (x ConnectionInfoQuery) InvertKnownBits() ConnectionInfoQuery {
+	return (^ConnectionInfoQuery_Mask & x) | (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:
@@ -383,6 +397,20 @@
 	return uint64(^NodeProtocols_Mask & x)
 }
 
+func (x NodeProtocols) InvertKnownBits() NodeProtocols {
+	return (^NodeProtocols_Mask & x) | (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:
@@ -436,6 +464,20 @@
 	return uint64(^ConnectionFlags_Mask & x)
 }
 
+func (x ConnectionFlags) InvertKnownBits() ConnectionFlags {
+	return (^ConnectionFlags_Mask & x) | (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:
@@ -479,6 +521,20 @@
 	return uint64(^DeviceSignal_Mask & x)
 }
 
+func (x DeviceSignal) InvertKnownBits() DeviceSignal {
+	return (^DeviceSignal_Mask & x) | (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:
@@ -525,6 +581,20 @@
 	return uint64(^DirectoryWatchMask_Mask & x)
 }
 
+func (x DirectoryWatchMask) InvertKnownBits() DirectoryWatchMask {
+	return (^DirectoryWatchMask_Mask & x) | (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:
@@ -568,6 +638,20 @@
 	return uint64(^VmoFlags_Mask & x)
 }
 
+func (x VmoFlags) InvertKnownBits() VmoFlags {
+	return (^VmoFlags_Mask & x) | (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:
@@ -610,6 +694,20 @@
 	return uint64(^FileSignal_Mask & x)
 }
 
+func (x FileSignal) InvertKnownBits() FileSignal {
+	return (^FileSignal_Mask & x) | (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:
@@ -655,6 +753,20 @@
 	return uint64(^NodeAttributesQuery_Mask & x)
 }
 
+func (x NodeAttributesQuery) InvertKnownBits() NodeAttributesQuery {
+	return (^NodeAttributesQuery_Mask & x) | (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:
@@ -715,6 +827,20 @@
 	return uint64(^Operations_Mask & x)
 }
 
+func (x Operations) InvertKnownBits() Operations {
+	return (^Operations_Mask & x) | (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:
@@ -980,8 +1106,8 @@
 }
 
 type NodeGetTokenResponse struct {
-	_     struct{}   `fidl:"s" fidl_size_v1:"4" fidl_alignment_v1:"4"`
-	Token _zx.Handle `fidl_offset_v1:"0" fidl_handle_subtype:"0" fidl_handle_rights:"2147483648" fidl_bounds:"0"`
+	_     struct{}  `fidl:"s" fidl_size_v1:"4" fidl_alignment_v1:"4"`
+	Token _zx.Event `fidl_offset_v1:"0" fidl_handle_subtype:"5" fidl_handle_rights:"2147483648" fidl_bounds:"0"`
 }
 
 var _mNodeGetTokenResponse = _bindings.CreateLazyMarshaler(NodeGetTokenResponse{})
@@ -1292,10 +1418,10 @@
 }
 
 type directoryWithCtxRenameRequest struct {
-	_              struct{}   `fidl:"s" fidl_size_v1:"40" fidl_alignment_v1:"8"`
-	Src            string     `fidl_offset_v1:"0" fidl_bounds:"255"`
-	DstParentToken _zx.Handle `fidl_offset_v1:"16" fidl_handle_subtype:"0" fidl_handle_rights:"2147483648" fidl_bounds:"0"`
-	Dst            string     `fidl_offset_v1:"24" fidl_bounds:"255"`
+	_              struct{}  `fidl:"s" fidl_size_v1:"40" fidl_alignment_v1:"8"`
+	Src            string    `fidl_offset_v1:"0" fidl_bounds:"255"`
+	DstParentToken _zx.Event `fidl_offset_v1:"16" fidl_handle_subtype:"5" fidl_handle_rights:"2147483648" fidl_bounds:"0"`
+	Dst            string    `fidl_offset_v1:"24" fidl_bounds:"255"`
 }
 
 var _mdirectoryWithCtxRenameRequest = _bindings.CreateLazyMarshaler(directoryWithCtxRenameRequest{})
@@ -1316,10 +1442,10 @@
 }
 
 type directoryWithCtxLinkRequest struct {
-	_              struct{}   `fidl:"s" fidl_size_v1:"40" fidl_alignment_v1:"8"`
-	Src            string     `fidl_offset_v1:"0" fidl_bounds:"255"`
-	DstParentToken _zx.Handle `fidl_offset_v1:"16" fidl_handle_subtype:"0" fidl_handle_rights:"2147483648" fidl_bounds:"0"`
-	Dst            string     `fidl_offset_v1:"24" fidl_bounds:"255"`
+	_              struct{}  `fidl:"s" fidl_size_v1:"40" fidl_alignment_v1:"8"`
+	Src            string    `fidl_offset_v1:"0" fidl_bounds:"255"`
+	DstParentToken _zx.Event `fidl_offset_v1:"16" fidl_handle_subtype:"5" fidl_handle_rights:"2147483648" fidl_bounds:"0"`
+	Dst            string    `fidl_offset_v1:"24" fidl_bounds:"255"`
 }
 
 var _mdirectoryWithCtxLinkRequest = _bindings.CreateLazyMarshaler(directoryWithCtxLinkRequest{})
@@ -2048,7 +2174,7 @@
 // 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"`
+	I_representationTag `fidl:"x" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	I_unknownData       interface{}
 	// See [`NodeProtocols.CONNECTOR`].
 	Connector ConnectorInfo `fidl_ordinal:"1"`
@@ -2207,7 +2333,7 @@
 )
 
 type DirectoryUnlinkResult struct {
-	I_directoryUnlinkResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_directoryUnlinkResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Response                   DirectoryUnlinkResponse `fidl_ordinal:"1"`
 	Err                        int32                   `fidl_ordinal:"2"`
 }
@@ -2250,7 +2376,7 @@
 )
 
 type DirectoryRenameResult struct {
-	I_directoryRenameResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_directoryRenameResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Response                   DirectoryRenameResponse `fidl_ordinal:"1"`
 	Err                        int32                   `fidl_ordinal:"2"`
 }
@@ -2293,7 +2419,7 @@
 )
 
 type DirectoryLinkResult struct {
-	I_directoryLinkResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_directoryLinkResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Response                 DirectoryLinkResponse `fidl_ordinal:"1"`
 	Err                      int32                 `fidl_ordinal:"2"`
 }
@@ -2336,7 +2462,7 @@
 )
 
 type DirectoryIteratorGetNextResult struct {
-	I_directoryIteratorGetNextResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_directoryIteratorGetNextResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Response                            DirectoryIteratorGetNextResponse `fidl_ordinal:"1"`
 	Err                                 int32                            `fidl_ordinal:"2"`
 }
@@ -2383,7 +2509,7 @@
 
 // Events returned from [`DirectoryWatcher.GetNext`].
 type DirectoryWatchedEvent struct {
-	I_directoryWatchedEventTag `fidl:"x" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_directoryWatchedEventTag `fidl:"x" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"false"`
 	I_unknownData              interface{}
 	// Indicates a node already existed in the directory when watching started.
 	Existing DirectoryEntry `fidl_ordinal:"1"`
@@ -2471,7 +2597,7 @@
 )
 
 type FileSeekResult struct {
-	I_fileSeekResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_fileSeekResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Response            FileSeekResponse `fidl_ordinal:"1"`
 	Err                 int32            `fidl_ordinal:"2"`
 }
@@ -2514,7 +2640,7 @@
 )
 
 type FileReadResult struct {
-	I_fileReadResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_fileReadResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Response            FileReadResponse `fidl_ordinal:"1"`
 	Err                 int32            `fidl_ordinal:"2"`
 }
@@ -2557,7 +2683,7 @@
 )
 
 type FileWriteResult struct {
-	I_fileWriteResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_fileWriteResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Response             FileWriteResponse `fidl_ordinal:"1"`
 	Err                  int32             `fidl_ordinal:"2"`
 }
@@ -2600,7 +2726,7 @@
 )
 
 type FileReadAtResult struct {
-	I_fileReadAtResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_fileReadAtResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Response              FileReadAtResponse `fidl_ordinal:"1"`
 	Err                   int32              `fidl_ordinal:"2"`
 }
@@ -2643,7 +2769,7 @@
 )
 
 type FileWriteAtResult struct {
-	I_fileWriteAtResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_fileWriteAtResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Response               FileWriteAtResponse `fidl_ordinal:"1"`
 	Err                    int32               `fidl_ordinal:"2"`
 }
@@ -2686,7 +2812,7 @@
 )
 
 type FileResizeResult struct {
-	I_fileResizeResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_fileResizeResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Response              FileResizeResponse `fidl_ordinal:"1"`
 	Err                   int32              `fidl_ordinal:"2"`
 }
@@ -2729,7 +2855,7 @@
 )
 
 type FileGetMemRangeResult struct {
-	I_fileGetMemRangeResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_fileGetMemRangeResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Response                   FileGetMemRangeResponse `fidl_ordinal:"1"`
 	Err                        int32                   `fidl_ordinal:"2"`
 }
@@ -2772,7 +2898,7 @@
 )
 
 type AdvisoryLockingAdvisoryLockResult struct {
-	I_advisoryLockingAdvisoryLockResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_advisoryLockingAdvisoryLockResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Response                               AdvisoryLockingAdvisoryLockResponse `fidl_ordinal:"1"`
 	Err                                    int32                               `fidl_ordinal:"2"`
 }
@@ -2815,7 +2941,7 @@
 )
 
 type NodeGetTokenResult struct {
-	I_nodeGetTokenResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_nodeGetTokenResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Response                NodeGetTokenResponse `fidl_ordinal:"1"`
 	Err                     int32                `fidl_ordinal:"2"`
 }
@@ -2858,7 +2984,7 @@
 )
 
 type NodeGetAttributesResult struct {
-	I_nodeGetAttributesResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_nodeGetAttributesResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Response                     NodeGetAttributesResponse `fidl_ordinal:"1"`
 	Err                          int32                     `fidl_ordinal:"2"`
 }
@@ -2901,7 +3027,7 @@
 )
 
 type NodeUpdateAttributesResult struct {
-	I_nodeUpdateAttributesResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_nodeUpdateAttributesResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Response                        NodeUpdateAttributesResponse `fidl_ordinal:"1"`
 	Err                             int32                        `fidl_ordinal:"2"`
 }
@@ -2944,7 +3070,7 @@
 )
 
 type NodeSyncResult struct {
-	I_nodeSyncResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_nodeSyncResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Response            NodeSyncResponse `fidl_ordinal:"1"`
 	Err                 int32            `fidl_ordinal:"2"`
 }
@@ -2982,7 +3108,7 @@
 // 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"`
+	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"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
@@ -3088,7 +3214,7 @@
 
 // Options for [`Directory.Open`] and [`Node.Reopen`].
 type ConnectionOptions struct {
-	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8"`
+	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_resource:"false"`
 	I_unknownData interface{}
 	// Flags which can affect the behavior when opening and reopening.
 	// If absent, assumes a default of zero.
@@ -3273,7 +3399,7 @@
 // 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"`
+	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_resource:"false"`
 	I_unknownData interface{}
 }
 
@@ -3289,7 +3415,7 @@
 // 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"`
+	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"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"`
@@ -3330,7 +3456,7 @@
 
 // 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"`
+	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_resource:"true"`
 	I_unknownData interface{}
 	// An optional event which transmits information about a device's state.
 	//
@@ -3373,7 +3499,7 @@
 
 // The object may be cast to a Tty interface.
 type TtyInfo struct {
-	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8"`
+	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_resource:"true"`
 	I_unknownData interface{}
 	// An optional event which transmits information about a device's state.
 	//
@@ -3419,7 +3545,7 @@
 // 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"`
+	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_resource:"false"`
 	I_unknownData interface{}
 	// Name of the node. This field must be present.
 	Name        string `fidl_bounds:"255" fidl_ordinal:"1"`
@@ -3544,7 +3670,7 @@
 // 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"`
+	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_resource:"false"`
 	I_unknownData interface{}
 }
 
@@ -3558,7 +3684,7 @@
 
 // Options to pass to [`fuchsia.io2/Directory.Enumerate`].
 type DirectoryEnumerateOptions struct {
-	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8"`
+	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_resource:"false"`
 	I_unknownData interface{}
 }
 
@@ -3571,7 +3697,7 @@
 }
 
 type DirectoryWatchOptions struct {
-	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8"`
+	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_resource:"false"`
 	I_unknownData interface{}
 }
 
@@ -3587,7 +3713,7 @@
 // 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"`
+	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"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
@@ -3699,7 +3825,7 @@
 }
 
 type AdvisoryLockRequest struct {
-	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8"`
+	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_resource:"false"`
 	I_unknownData interface{}
 	// The type of lock to be acquired.
 	//
@@ -3806,7 +3932,7 @@
 // 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"`
+	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"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
@@ -3864,7 +3990,7 @@
 // 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"`
+	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"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,
@@ -4115,7 +4241,7 @@
 // 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"`
+	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"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
@@ -4160,7 +4286,7 @@
 // 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"`
+	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"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
@@ -4784,7 +4910,7 @@
 // * [`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.Handle, dst string) (DirectoryRenameResult, error) {
+func (p *DirectoryWithCtxInterface) Rename(ctx_ _bindings.Context, src string, dstParentToken _zx.Event, dst string) (DirectoryRenameResult, error) {
 	req_ := &directoryWithCtxRenameRequest{
 		Src:            src,
 		DstParentToken: dstParentToken,
@@ -4811,7 +4937,7 @@
 //
 // * 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.Handle, dst string) (DirectoryLinkResult, error) {
+func (p *DirectoryWithCtxInterface) Link(ctx_ _bindings.Context, src string, dstParentToken _zx.Event, dst string) (DirectoryLinkResult, error) {
 	req_ := &directoryWithCtxLinkRequest{
 		Src:            src,
 		DstParentToken: dstParentToken,
@@ -4997,7 +5123,7 @@
 	// * [`Rights.MODIFY_DIRECTORY`]
 	//
 	// * error `ZX_ERR_INVALID_ARGS` if `src` or `dst` is invalid.
-	Rename(ctx_ _bindings.Context, src string, dstParentToken _zx.Handle, dst string) (DirectoryRenameResult, error)
+	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`.
 	//
@@ -5014,7 +5140,7 @@
 	//
 	// * 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.Handle, dst string) (DirectoryLinkResult, error)
+	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.
 	//
diff --git a/src/syscall/zx/mem/impl.go b/src/syscall/zx/mem/impl.go
index aee51f2..0e5bba8 100644
--- a/src/syscall/zx/mem/impl.go
+++ b/src/syscall/zx/mem/impl.go
@@ -80,7 +80,7 @@
 // `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"`
+	I_dataTag     `fidl:"x" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	I_unknownData interface{}
 	// The binary data provided inline in the message.
 	Bytes []uint8 `fidl_bounds:"" fidl_ordinal:"1"`
diff --git a/src/syscall/zx/net/impl.go b/src/syscall/zx/net/impl.go
index 3c75d58..db5cb6a 100644
--- a/src/syscall/zx/net/impl.go
+++ b/src/syscall/zx/net/impl.go
@@ -12,6 +12,8 @@
 )
 
 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
 )
@@ -106,6 +108,20 @@
 	return uint64(^LookupIpOptions_Mask & x)
 }
 
+func (x LookupIpOptions) InvertKnownBits() LookupIpOptions {
+	return (^LookupIpOptions_Mask & x) | (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:
@@ -129,6 +145,17 @@
 	return _mNameLookupLookupIpResponse
 }
 
+type NameLookupLookupIp2Response struct {
+	_      struct{}     `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8"`
+	Result LookupResult `fidl_offset_v1:"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"`
 	Hostname string   `fidl_offset_v1:"0" fidl_bounds:"255"`
@@ -285,6 +312,29 @@
 	return _mnameLookupWithCtxLookupIpResponse
 }
 
+type nameLookupWithCtxLookupIp2Request struct {
+	_        struct{}         `fidl:"s" fidl_size_v1:"32" fidl_alignment_v1:"8"`
+	Hostname string           `fidl_offset_v1:"0" fidl_bounds:"255"`
+	Options  LookupIpOptions2 `fidl_offset_v1:"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"`
+	Result NameLookupLookupIp2Result `fidl_offset_v1:"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"`
 	Addr IpAddress `fidl_offset_v1:"0"`
@@ -315,7 +365,7 @@
 )
 
 type NameLookupLookupIpResult struct {
-	I_nameLookupLookupIpResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_nameLookupLookupIpResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Response                      NameLookupLookupIpResponse `fidl_ordinal:"1"`
 	Err                           LookupError                `fidl_ordinal:"2"`
 }
@@ -350,6 +400,49 @@
 	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_resource:"true"`
+	Response                       NameLookupLookupIp2Response `fidl_ordinal:"1"`
+	Err                            LookupError                 `fidl_ordinal:"2"`
+}
+
+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.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.I_nameLookupLookupIp2ResultTag = NameLookupLookupIp2ResultErr
+	_m.Err = err
+}
+
+func NameLookupLookupIp2ResultWithErr(err LookupError) NameLookupLookupIp2Result {
+	var _u NameLookupLookupIp2Result
+	_u.SetErr(err)
+	return _u
+}
+
 type I_nameLookupLookupHostnameResultTag uint64
 
 const (
@@ -358,7 +451,7 @@
 )
 
 type NameLookupLookupHostnameResult struct {
-	I_nameLookupLookupHostnameResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_nameLookupLookupHostnameResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Response                            NameLookupLookupHostnameResponse `fidl_ordinal:"1"`
 	Err                                 LookupError                      `fidl_ordinal:"2"`
 }
@@ -402,7 +495,7 @@
 
 // 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"`
+	I_ipAddressTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"false"`
 	Ipv4           Ipv4Address `fidl_ordinal:"1"`
 	Ipv6           Ipv6Address `fidl_ordinal:"2"`
 }
@@ -446,7 +539,7 @@
 
 // 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"`
+	I_socketAddressTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"false"`
 	Ipv4               Ipv4SocketAddress `fidl_ordinal:"1"`
 	Ipv6               Ipv6SocketAddress `fidl_ordinal:"2"`
 }
@@ -481,8 +574,153 @@
 	return _u
 }
 
+// Lookup operation options.
+type LookupIpOptions2 struct {
+	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"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_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
 )
 
@@ -501,6 +739,19 @@
 	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{
@@ -516,6 +767,10 @@
 	//
 	// 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)
 }
@@ -558,6 +813,19 @@
 		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)
diff --git a/src/syscall/zx/net/name/impl.go b/src/syscall/zx/net/name/impl.go
index 057abfe..e80eaa6 100644
--- a/src/syscall/zx/net/name/impl.go
+++ b/src/syscall/zx/net/name/impl.go
@@ -77,7 +77,7 @@
 
 // The configuration source for a [`fuchsia.net.name/DnsServer`].
 type DnsServerSource struct {
-	I_dnsServerSourceTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_dnsServerSourceTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"false"`
 	// The server is statically configured through
 	// [`fuchsia.net.name/LookupAdmin.SetDefaultServers`].
 	StaticSource StaticDnsServerSource `fidl_ordinal:"1"`
@@ -149,7 +149,7 @@
 )
 
 type LookupAdminSetDnsServersResult struct {
-	I_lookupAdminSetDnsServersResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_lookupAdminSetDnsServersResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Response                            LookupAdminSetDnsServersResponse `fidl_ordinal:"1"`
 	Err                                 int32                            `fidl_ordinal:"2"`
 }
@@ -186,7 +186,7 @@
 
 // Extra information about statically set DNS servers.
 type StaticDnsServerSource struct {
-	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8"`
+	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_resource:"false"`
 	I_unknownData interface{}
 }
 
@@ -200,7 +200,7 @@
 
 // Extra information about DNS servers discovered through DHCPv4.
 type DhcpDnsServerSource struct {
-	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8"`
+	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_resource:"false"`
 	I_unknownData interface{}
 	// The interface index over which this server was discovered.
 	SourceInterface        uint64 `fidl_ordinal:"1"`
@@ -241,7 +241,7 @@
 
 // Extra information about DNS servers discovered through NDP.
 type NdpDnsServerSource struct {
-	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8"`
+	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_resource:"false"`
 	I_unknownData interface{}
 	// The interface index over which this server was discovered.
 	SourceInterface        uint64 `fidl_ordinal:"1"`
@@ -282,7 +282,7 @@
 
 // Extra information about DNS servers discovered through DHCPv6.
 type Dhcpv6DnsServerSource struct {
-	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8"`
+	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_resource:"false"`
 	I_unknownData interface{}
 	// The interface index over which this server was discovered.
 	SourceInterface        uint64 `fidl_ordinal:"1"`
@@ -323,7 +323,7 @@
 
 // A DNS server configuration.
 type DnsServer struct {
-	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8"`
+	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_resource:"false"`
 	I_unknownData interface{}
 	// The server's address, must be provided.
 	Address        fuchsianet.SocketAddress `fidl_ordinal:"1"`
diff --git a/src/syscall/zx/net/stack/impl.go b/src/syscall/zx/net/stack/impl.go
index ad6c148..a7c51f2 100644
--- a/src/syscall/zx/net/stack/impl.go
+++ b/src/syscall/zx/net/stack/impl.go
@@ -806,7 +806,7 @@
 )
 
 type StackAddEthernetInterfaceResult struct {
-	I_stackAddEthernetInterfaceResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_stackAddEthernetInterfaceResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Response                             StackAddEthernetInterfaceResponse `fidl_ordinal:"1"`
 	Err                                  Error                             `fidl_ordinal:"2"`
 }
@@ -849,7 +849,7 @@
 )
 
 type StackAddInterfaceResult struct {
-	I_stackAddInterfaceResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_stackAddInterfaceResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Response                     StackAddInterfaceResponse `fidl_ordinal:"1"`
 	Err                          Error                     `fidl_ordinal:"2"`
 }
@@ -892,7 +892,7 @@
 )
 
 type StackDelEthernetInterfaceResult struct {
-	I_stackDelEthernetInterfaceResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_stackDelEthernetInterfaceResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Response                             StackDelEthernetInterfaceResponse `fidl_ordinal:"1"`
 	Err                                  Error                             `fidl_ordinal:"2"`
 }
@@ -935,7 +935,7 @@
 )
 
 type StackGetInterfaceInfoResult struct {
-	I_stackGetInterfaceInfoResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_stackGetInterfaceInfoResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Response                         StackGetInterfaceInfoResponse `fidl_ordinal:"1"`
 	Err                              Error                         `fidl_ordinal:"2"`
 }
@@ -978,7 +978,7 @@
 )
 
 type StackEnableInterfaceResult struct {
-	I_stackEnableInterfaceResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_stackEnableInterfaceResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Response                        StackEnableInterfaceResponse `fidl_ordinal:"1"`
 	Err                             Error                        `fidl_ordinal:"2"`
 }
@@ -1021,7 +1021,7 @@
 )
 
 type StackDisableInterfaceResult struct {
-	I_stackDisableInterfaceResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_stackDisableInterfaceResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Response                         StackDisableInterfaceResponse `fidl_ordinal:"1"`
 	Err                              Error                         `fidl_ordinal:"2"`
 }
@@ -1064,7 +1064,7 @@
 )
 
 type StackAddInterfaceAddressResult struct {
-	I_stackAddInterfaceAddressResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_stackAddInterfaceAddressResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Response                            StackAddInterfaceAddressResponse `fidl_ordinal:"1"`
 	Err                                 Error                            `fidl_ordinal:"2"`
 }
@@ -1107,7 +1107,7 @@
 )
 
 type StackDelInterfaceAddressResult struct {
-	I_stackDelInterfaceAddressResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_stackDelInterfaceAddressResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Response                            StackDelInterfaceAddressResponse `fidl_ordinal:"1"`
 	Err                                 Error                            `fidl_ordinal:"2"`
 }
@@ -1150,7 +1150,7 @@
 )
 
 type StackAddForwardingEntryResult struct {
-	I_stackAddForwardingEntryResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_stackAddForwardingEntryResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Response                           StackAddForwardingEntryResponse `fidl_ordinal:"1"`
 	Err                                Error                           `fidl_ordinal:"2"`
 }
@@ -1193,7 +1193,7 @@
 )
 
 type StackDelForwardingEntryResult struct {
-	I_stackDelForwardingEntryResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_stackDelForwardingEntryResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Response                           StackDelForwardingEntryResponse `fidl_ordinal:"1"`
 	Err                                Error                           `fidl_ordinal:"2"`
 }
@@ -1236,7 +1236,7 @@
 )
 
 type StackEnablePacketFilterResult struct {
-	I_stackEnablePacketFilterResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_stackEnablePacketFilterResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Response                           StackEnablePacketFilterResponse `fidl_ordinal:"1"`
 	Err                                Error                           `fidl_ordinal:"2"`
 }
@@ -1279,7 +1279,7 @@
 )
 
 type StackDisablePacketFilterResult struct {
-	I_stackDisablePacketFilterResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_stackDisablePacketFilterResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Response                            StackDisablePacketFilterResponse `fidl_ordinal:"1"`
 	Err                                 Error                            `fidl_ordinal:"2"`
 }
@@ -1322,7 +1322,7 @@
 )
 
 type LogSetLogLevelResult struct {
-	I_logSetLogLevelResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_logSetLogLevelResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Response                  LogSetLogLevelResponse `fidl_ordinal:"1"`
 	Err                       Error                  `fidl_ordinal:"2"`
 }
@@ -1366,7 +1366,7 @@
 )
 
 type InterfaceStatus struct {
-	I_interfaceStatusTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_interfaceStatusTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"false"`
 	Presence             PresenceStatus       `fidl_ordinal:"1"`
 	Physical             PhysicalStatus       `fidl_ordinal:"2"`
 	Administrative       AdministrativeStatus `fidl_ordinal:"3"`
@@ -1423,7 +1423,7 @@
 // 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"`
+	I_forwardingDestinationTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"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.
@@ -1469,7 +1469,7 @@
 
 // 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"`
+	I_deviceDefinitionTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"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"`
@@ -1509,7 +1509,7 @@
 
 // Base configuration for `Stack` interfaces.
 type InterfaceConfig struct {
-	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8"`
+	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"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.
diff --git a/src/syscall/zx/posix/socket/impl.go b/src/syscall/zx/posix/socket/impl.go
index 254ff06..c653f94 100644
--- a/src/syscall/zx/posix/socket/impl.go
+++ b/src/syscall/zx/posix/socket/impl.go
@@ -194,6 +194,20 @@
 	return uint64(^RecvMsgFlags_Mask & x)
 }
 
+func (x RecvMsgFlags) InvertKnownBits() RecvMsgFlags {
+	return (^RecvMsgFlags_Mask & x) | (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:
@@ -227,6 +241,20 @@
 	return uint64(^SendMsgFlags_Mask & x)
 }
 
+func (x SendMsgFlags) InvertKnownBits() SendMsgFlags {
+	return (^SendMsgFlags_Mask & x) | (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:
@@ -262,6 +290,20 @@
 	return uint64(^ShutdownMode_Mask & x)
 }
 
+func (x ShutdownMode) InvertKnownBits() ShutdownMode {
+	return (^ShutdownMode_Mask & x) | (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:
@@ -272,6 +314,101 @@
 	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) InvertKnownBits() InterfaceFlags {
+	return (^InterfaceFlags_Mask & x) | (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"`
 }
@@ -446,6 +583,17 @@
 	return _mProviderInterfaceNameToIndexResponse
 }
 
+type ProviderInterfaceNameToFlagsResponse struct {
+	_     struct{}       `fidl:"s" fidl_size_v1:"2" fidl_alignment_v1:"2"`
+	Flags InterfaceFlags `fidl_offset_v1:"0"`
+}
+
+var _mProviderInterfaceNameToFlagsResponse = _bindings.CreateLazyMarshaler(ProviderInterfaceNameToFlagsResponse{})
+
+func (msg *ProviderInterfaceNameToFlagsResponse) Marshaler() _bindings.Marshaler {
+	return _mProviderInterfaceNameToFlagsResponse
+}
+
 type Empty struct {
 	_ struct{} `fidl:"s" fidl_size_v1:"1" fidl_alignment_v1:"1"`
 }
@@ -1412,6 +1560,28 @@
 	return _mproviderWithCtxInterfaceNameToIndexResponse
 }
 
+type providerWithCtxInterfaceNameToFlagsRequest struct {
+	_    struct{} `fidl:"s" fidl_size_v1:"16" fidl_alignment_v1:"8"`
+	Name string   `fidl_offset_v1:"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"`
+	Result ProviderInterfaceNameToFlagsResult `fidl_offset_v1:"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"`
 	Interfaces []InterfaceAddresses `fidl_offset_v1:"0" fidl_bounds:""`
@@ -1431,7 +1601,7 @@
 )
 
 type BaseSocketBindResult struct {
-	I_baseSocketBindResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_baseSocketBindResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Response                  BaseSocketBindResponse `fidl_ordinal:"1"`
 	Err                       fuchsiaposix.Errno     `fidl_ordinal:"2"`
 }
@@ -1474,7 +1644,7 @@
 )
 
 type BaseSocketConnectResult struct {
-	I_baseSocketConnectResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_baseSocketConnectResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Response                     BaseSocketConnectResponse `fidl_ordinal:"1"`
 	Err                          fuchsiaposix.Errno        `fidl_ordinal:"2"`
 }
@@ -1517,7 +1687,7 @@
 )
 
 type BaseSocketDisconnectResult struct {
-	I_baseSocketDisconnectResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_baseSocketDisconnectResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Response                        BaseSocketDisconnectResponse `fidl_ordinal:"1"`
 	Err                             fuchsiaposix.Errno           `fidl_ordinal:"2"`
 }
@@ -1560,7 +1730,7 @@
 )
 
 type BaseSocketGetSockNameResult struct {
-	I_baseSocketGetSockNameResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_baseSocketGetSockNameResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Response                         BaseSocketGetSockNameResponse `fidl_ordinal:"1"`
 	Err                              fuchsiaposix.Errno            `fidl_ordinal:"2"`
 }
@@ -1603,7 +1773,7 @@
 )
 
 type BaseSocketGetPeerNameResult struct {
-	I_baseSocketGetPeerNameResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_baseSocketGetPeerNameResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Response                         BaseSocketGetPeerNameResponse `fidl_ordinal:"1"`
 	Err                              fuchsiaposix.Errno            `fidl_ordinal:"2"`
 }
@@ -1646,7 +1816,7 @@
 )
 
 type BaseSocketSetSockOptResult struct {
-	I_baseSocketSetSockOptResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_baseSocketSetSockOptResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Response                        BaseSocketSetSockOptResponse `fidl_ordinal:"1"`
 	Err                             fuchsiaposix.Errno           `fidl_ordinal:"2"`
 }
@@ -1689,7 +1859,7 @@
 )
 
 type BaseSocketGetSockOptResult struct {
-	I_baseSocketGetSockOptResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_baseSocketGetSockOptResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Response                        BaseSocketGetSockOptResponse `fidl_ordinal:"1"`
 	Err                             fuchsiaposix.Errno           `fidl_ordinal:"2"`
 }
@@ -1732,7 +1902,7 @@
 )
 
 type DatagramSocketShutdownResult struct {
-	I_datagramSocketShutdownResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_datagramSocketShutdownResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Response                          DatagramSocketShutdownResponse `fidl_ordinal:"1"`
 	Err                               fuchsiaposix.Errno             `fidl_ordinal:"2"`
 }
@@ -1775,7 +1945,7 @@
 )
 
 type DatagramSocketRecvMsgResult struct {
-	I_datagramSocketRecvMsgResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_datagramSocketRecvMsgResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Response                         DatagramSocketRecvMsgResponse `fidl_ordinal:"1"`
 	Err                              fuchsiaposix.Errno            `fidl_ordinal:"2"`
 }
@@ -1818,7 +1988,7 @@
 )
 
 type DatagramSocketSendMsgResult struct {
-	I_datagramSocketSendMsgResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_datagramSocketSendMsgResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Response                         DatagramSocketSendMsgResponse `fidl_ordinal:"1"`
 	Err                              fuchsiaposix.Errno            `fidl_ordinal:"2"`
 }
@@ -1861,7 +2031,7 @@
 )
 
 type StreamSocketListenResult struct {
-	I_streamSocketListenResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_streamSocketListenResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Response                      StreamSocketListenResponse `fidl_ordinal:"1"`
 	Err                           fuchsiaposix.Errno         `fidl_ordinal:"2"`
 }
@@ -1904,7 +2074,7 @@
 )
 
 type StreamSocketAcceptResult struct {
-	I_streamSocketAcceptResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_streamSocketAcceptResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Response                      StreamSocketAcceptResponse `fidl_ordinal:"1"`
 	Err                           fuchsiaposix.Errno         `fidl_ordinal:"2"`
 }
@@ -1947,7 +2117,7 @@
 )
 
 type ProviderStreamSocketResult struct {
-	I_providerStreamSocketResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_providerStreamSocketResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Response                        ProviderStreamSocketResponse `fidl_ordinal:"1"`
 	Err                             fuchsiaposix.Errno           `fidl_ordinal:"2"`
 }
@@ -1990,7 +2160,7 @@
 )
 
 type ProviderDatagramSocketResult struct {
-	I_providerDatagramSocketResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_providerDatagramSocketResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Response                          ProviderDatagramSocketResponse `fidl_ordinal:"1"`
 	Err                               fuchsiaposix.Errno             `fidl_ordinal:"2"`
 }
@@ -2033,7 +2203,7 @@
 )
 
 type ProviderInterfaceIndexToNameResult struct {
-	I_providerInterfaceIndexToNameResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_providerInterfaceIndexToNameResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Response                                ProviderInterfaceIndexToNameResponse `fidl_ordinal:"1"`
 	Err                                     int32                                `fidl_ordinal:"2"`
 }
@@ -2076,7 +2246,7 @@
 )
 
 type ProviderInterfaceNameToIndexResult struct {
-	I_providerInterfaceNameToIndexResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8"`
+	I_providerInterfaceNameToIndexResultTag `fidl:"x!" fidl_size_v1:"24" fidl_alignment_v1:"8" fidl_resource:"true"`
 	Response                                ProviderInterfaceNameToIndexResponse `fidl_ordinal:"1"`
 	Err                                     int32                                `fidl_ordinal:"2"`
 }
@@ -2111,9 +2281,52 @@
 	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_resource:"true"`
+	Response                                ProviderInterfaceNameToFlagsResponse `fidl_ordinal:"1"`
+	Err                                     int32                                `fidl_ordinal:"2"`
+}
+
+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.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.I_providerInterfaceNameToFlagsResultTag = ProviderInterfaceNameToFlagsResultErr
+	_m.Err = err
+}
+
+func ProviderInterfaceNameToFlagsResultWithErr(err int32) ProviderInterfaceNameToFlagsResult {
+	var _u ProviderInterfaceNameToFlagsResult
+	_u.SetErr(err)
+	return _u
+}
+
 // Ancillary data for sending datagram sockets.
 type SendControlData struct {
-	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8"`
+	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_resource:"false"`
 	I_unknownData interface{}
 }
 
@@ -2127,7 +2340,7 @@
 
 // Ancillary data for received datagram sockets.
 type RecvControlData struct {
-	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8"`
+	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_resource:"false"`
 	I_unknownData interface{}
 }
 
@@ -2141,7 +2354,7 @@
 
 // Holds information about an interface and its addresses.
 type InterfaceAddresses struct {
-	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8"`
+	_             struct{} `fidl:"t" fidl_size_v1:"16" fidl_alignment_v1:"8" fidl_resource:"false"`
 	I_unknownData interface{}
 	// ID of the interface.
 	Id        uint64 `fidl_ordinal:"1"`
@@ -2151,11 +2364,18 @@
 	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) {
@@ -2254,6 +2474,30 @@
 	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
 }
@@ -3789,6 +4033,7 @@
 	ProviderDatagramSocketOrdinal        uint64 = 0x38876c87cf031cb1
 	ProviderInterfaceIndexToNameOrdinal  uint64 = 0x4d59a64fce98272f
 	ProviderInterfaceNameToIndexOrdinal  uint64 = 0x690cd8d2f2d650f8
+	ProviderInterfaceNameToFlagsOrdinal  uint64 = 0x25d0efcdb6671a0b
 	ProviderGetInterfaceAddressesOrdinal uint64 = 0x2e7b9aaf327c870
 )
 
@@ -3838,6 +4083,17 @@
 	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) {
@@ -3859,6 +4115,9 @@
 	// 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)
@@ -3941,6 +4200,19 @@
 		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{}