Skip to content
BSD syscall#507

svc · unix #507

__nexus_destroy

Tears down a previously created nexus instance, releasing its packet pool and rings.

Prototype

int __nexus_destroy(int ctl, uuid_t nx_uuid, uint32_t nx_uuid_len);

Returns: int

Arguments

NameTypeDirDescription
ctlint-
nx_uuiduuid_t-
nx_uuid_lenuint32_t-

Version history

XNU tagmacOS#
xnu-8792.41.9macOS 13.0 Ventura507
xnu-10002.1.13macOS 14.0 Sonoma507
xnu-11215.1.10macOS 15.0 Sequoia507
xnu-11417.101.15macOS 15.4 Sequoia507
xnu-12377.1.9macOS 26.0 Tahoe507
xnu-10002.41.9—507
xnu-10002.61.3—507
xnu-10002.81.5—507
xnu-10063.101.15—507
xnu-10063.121.3—507
xnu-10063.141.1—507
xnu-11215.41.3—507
xnu-11215.61.5—507
xnu-11215.81.4—507
xnu-11417.121.6—507
xnu-11417.140.69—507
xnu-12377.101.15—507
xnu-12377.41.6—507
xnu-12377.61.12—507
xnu-12377.81.4—507
xnu-8019.80.24—507
xnu-8020.101.4—507
xnu-8020.121.3—507
xnu-8020.140.41—507
xnu-8792.61.2—507
xnu-8792.81.2—507
xnu-8796.101.5—507
xnu-8796.121.2—507
xnu-8796.141.3—507

Notes

Returns EBUSY if any channel is still attached. The kernel reference-counts nexus instances against open channels, so callers must coordinate with all consumers before issuing destroy. Used during VPN teardown and on app suspension when Network.framework releases its private flow_switch.

Detection

Not in ES. The matching __nexus_create/__nexus_destroy pair can be reconstructed from process audit timestamps for the same nexus uuid.

Related APIs

__nexus_create__nexus_open__nexus_deregister__channel_open