---
title: prepare
framework: kernel
role: pseudoSymbol
path: kernel/ionetworkcontroller/1813976-prepare
---

# prepare

Prepares the controller before an IOService is created and attached as a client.

## Declaration

```occ
virtual IOReturn prepare(); 
```

## Return Value

Return Value Returns kIOReturnSuccess on success, or an error code otherwise. Returning an error will fail the client attach.

## Overview

Overview This method is called by attachInterface() or attachDebuggerClient() to prepare the controller before the new client object is attached. This method will call publishProperties() to publish controller capabilities and properties that may be used by client objects. However, publishProperties() will be called only once, even if prepare() is called multiple times. This method call is synchronized by the workloop's gate.

## See Also

### Miscellaneous

- [allocatePacket](kernel/ionetworkcontroller/1813917-allocatepacket.md)
- [attachDebuggerClient](kernel/ionetworkcontroller/1813919-attachdebuggerclient.md)
- [attachInterface](kernel/ionetworkcontroller/1813921-attachinterface.md)
- [configureInterface](kernel/ionetworkcontroller/1813923-configureinterface.md)
- [copyMediumDictionary](kernel/ionetworkcontroller/1813924-copymediumdictionary.md)
- [copyPacket](kernel/ionetworkcontroller/1813925-copypacket.md)
- [createInterface](kernel/ionetworkcontroller/1813926-createinterface.md)
- [createOutputQueue](kernel/ionetworkcontroller/1813927-createoutputqueue.md)
- [createWorkLoop](kernel/ionetworkcontroller/1813928-createworkloop.md)
- [detachDebuggerClient](kernel/ionetworkcontroller/1813929-detachdebuggerclient.md)
- [detachInterface](kernel/ionetworkcontroller/1813930-detachinterface.md)
- [disable](kernel/ionetworkcontroller/1813931-disable.md)
- [disable(IONetworkInterface *)](kernel/ionetworkcontroller/1813932-disable.md)
- [disable(IOService *)](kernel/ionetworkcontroller/1813933-disable.md)
- [disablePacketFilter](kernel/ionetworkcontroller/1813934-disablepacketfilter.md)
- [doDisable](kernel/ionetworkcontroller/1813935-dodisable.md)
- [doEnable](kernel/ionetworkcontroller/1813936-doenable.md)
- [enable](kernel/ionetworkcontroller/1813937-enable.md)
- [enable(IONetworkInterface *)](kernel/ionetworkcontroller/1813938-enable.md)
- [enable(IOService *)](kernel/ionetworkcontroller/1813939-enable.md)
- [enablePacketFilter](kernel/ionetworkcontroller/1813940-enablepacketfilter.md)
- [executeCommand](kernel/ionetworkcontroller/1813941-executecommand.md)
- [free](kernel/ionetworkcontroller/1813942-free.md)
- [freePacket](kernel/ionetworkcontroller/1813943-freepacket.md)
- [getChecksumDemand](kernel/ionetworkcontroller/1813944-getchecksumdemand.md)
- [getChecksumSupport](kernel/ionetworkcontroller/1813945-getchecksumsupport.md)
- [getCommandClient](kernel/ionetworkcontroller/1813946-getcommandclient.md)
- [getCommandGate](kernel/ionetworkcontroller/1813947-getcommandgate.md)
- [getDebuggerLinkStatus](kernel/ionetworkcontroller/1813949-getdebuggerlinkstatus.md)
- [getFeatures](kernel/ionetworkcontroller/1813951-getfeatures.md)
- [getHardwareAddress](kernel/ionetworkcontroller/1813953-gethardwareaddress.md)
- [getMaxPacketSize](kernel/ionetworkcontroller/1813954-getmaxpacketsize.md)
- [getMediumDictionary](kernel/ionetworkcontroller/1813956-getmediumdictionary.md)
- [getMinPacketSize](kernel/ionetworkcontroller/1813957-getminpacketsize.md)
- [getOutputHandler](kernel/ionetworkcontroller/1813959-getoutputhandler.md)
- [getOutputQueue](kernel/ionetworkcontroller/1813960-getoutputqueue.md)
- [getPacketBufferConstraints](kernel/ionetworkcontroller/1813962-getpacketbufferconstraints.md)
- [getPacketFilters](kernel/ionetworkcontroller/1813964-getpacketfilters.md)
- [getSelectedMedium](kernel/ionetworkcontroller/1813966-getselectedmedium.md)
- [handleClose](kernel/ionetworkcontroller/1813967-handleclose.md)
- [handleIsOpen](kernel/ionetworkcontroller/1813968-handleisopen.md)
- [handleOpen](kernel/ionetworkcontroller/1813969-handleopen.md)
- [init](kernel/ionetworkcontroller/1813970-init.md)
- [message](kernel/ionetworkcontroller/1813971-message.md)
- [newModelString](kernel/ionetworkcontroller/1813972-newmodelstring.md)
- [newRevisionString](kernel/ionetworkcontroller/1813973-newrevisionstring.md)
- [newVendorString](kernel/ionetworkcontroller/1813974-newvendorstring.md)
- [outputPacket](kernel/ionetworkcontroller/1813975-outputpacket.md)
- [publishMediumDictionary](kernel/ionetworkcontroller/1813977-publishmediumdictionary.md)
- [publishProperties](kernel/ionetworkcontroller/1813978-publishproperties.md)
- [receivePacket](kernel/ionetworkcontroller/1813979-receivepacket.md)
- [registerWithPolicyMaker](kernel/ionetworkcontroller/1813980-registerwithpolicymaker.md)
- [releaseDebuggerLock](kernel/ionetworkcontroller/1813981-releasedebuggerlock.md)
- [releaseFreePackets](kernel/ionetworkcontroller/1813982-releasefreepackets.md)
- [replaceOrCopyPacket](kernel/ionetworkcontroller/1813983-replaceorcopypacket.md)
- [replacePacket](kernel/ionetworkcontroller/1813984-replacepacket.md)
- [reserveDebuggerLock](kernel/ionetworkcontroller/1813985-reservedebuggerlock.md)
- [selectMedium](kernel/ionetworkcontroller/1813986-selectmedium.md)
- [selectMediumWithName](kernel/ionetworkcontroller/1813987-selectmediumwithname.md)
- [sendPacket](kernel/ionetworkcontroller/1813988-sendpacket.md)
- [setChecksumResult](kernel/ionetworkcontroller/1813989-setchecksumresult.md)
- [setDebuggerMode](kernel/ionetworkcontroller/1813990-setdebuggermode.md)
- [setHardwareAddress](kernel/ionetworkcontroller/1813991-sethardwareaddress.md)
- [setLinkStatus](kernel/ionetworkcontroller/1813992-setlinkstatus.md)
- [setMaxPacketSize](kernel/ionetworkcontroller/1813993-setmaxpacketsize.md)
- [setSelectedMedium](kernel/ionetworkcontroller/1813994-setselectedmedium.md)
- [start](kernel/ionetworkcontroller/1813995-start.md)
- [stop](kernel/ionetworkcontroller/1813996-stop.md)
- [systemWillShutdown](kernel/ionetworkcontroller/1813997-systemwillshutdown.md)
