---
title: IOUserNetworkEthernet
framework: networkingdriverkit
role: symbol
role_heading: Class
path: networkingdriverkit/iousernetworkethernet
---

# IOUserNetworkEthernet

The object you use to manage the setup, configuration, and teardown of your networking driver.

## Declaration

```occ
class IOUserNetworkEthernet;
```

## Overview

Overview Subclass IOUserNetworkEthernet and override the methods you need to implement your driver’s behavior. Your subclass manages your driver’s overall life cycle, and facilitates communication between the hardware and the rest of the system. Use the Start method to establish a link to your hardware and to create the data structures needed to manage incoming and outgoing data packets. Use the Stop method to clean up the data structures you create in your Start method. Override other methods of this class, and of the IOService parent class, as needed to enable your interface and implement other network-related behaviors. For example, you might want to override the inherited setPowerState method to respond to power-level changes. Specify the Driver’s Personality Information When you subclass IOUserNetworkEthernet, update the IOKitPersonalities key of your driver extension’s Info.plist file with information to match your driver to appropriate hardware. For this class, always include the keys and values in the following table.  |   |   |   |   |   |  You may add other keys to assist with the matching process. For example, you might include the bInterfaceClass, bInterfaceProtocol, and bInterfaceSubClass keys to match against specific USB device attributes. The USB specification defines which keys to include when matching your driver to a USB device. For information about the specific key combinations, see Universal Serial Bus Common Class Specification at https://www.usb.org.

## Topics

### Configuring the Driver Service

- [init](networkingdriverkit/iousernetworkethernet/init.md)
- [free](networkingdriverkit/iousernetworkethernet/free.md)
- [RegisterEthernetInterface](networkingdriverkit/iousernetworkethernet/registerethernetinterface-4jqw8.md)

### Declaring the Supported Media Types

- [ReportAvailableMediaTypes](networkingdriverkit/iousernetworkethernet/reportavailablemediatypes.md)
- [SelectMediaType](networkingdriverkit/iousernetworkethernet/selectmediatype.md)
- [IOUserNetworkMediaType](networkingdriverkit/iousernetworkmediatype.md)

### Enabling Your Service

- [SetInterfaceEnable](networkingdriverkit/iousernetworkethernet/setinterfaceenable-3v24g.md)

### Configuring Link Attributes

- [SetTxPacketHeadroom](networkingdriverkit/iousernetworkethernet/settxpacketheadroom.md)
- [SetTxPacketTailroom](networkingdriverkit/iousernetworkethernet/settxpackettailroom.md)
- [SetSoftwareVlanSupport](networkingdriverkit/iousernetworkethernet/setsoftwarevlansupport.md)
- [SetMulticastAddresses](networkingdriverkit/iousernetworkethernet/setmulticastaddresses-7wjbn.md)
- [SetAllMulticastModeEnable](networkingdriverkit/iousernetworkethernet/setallmulticastmodeenable-5rtva.md)
- [SetPromiscuousModeEnable](networkingdriverkit/iousernetworkethernet/setpromiscuousmodeenable-82bt.md)
- [SetWakeOnMagicPacketSupport](networkingdriverkit/iousernetworkethernet/setwakeonmagicpacketsupport.md)
- [SetWakeOnMagicPacketEnable](networkingdriverkit/iousernetworkethernet/setwakeonmagicpacketenable.md)
- [IOUserNetworkMACAddress](networkingdriverkit/iousernetworkmacaddress.md)

### Reporting the Connection Status

- [ReportLinkStatus](networkingdriverkit/iousernetworkethernet/reportlinkstatus-5cxiq.md)
- [ReportLinkQuality](networkingdriverkit/iousernetworkethernet/reportlinkquality-4noh0.md)
- [ReportDataBandwidths](networkingdriverkit/iousernetworkethernet/reportdatabandwidths-10ssx.md)
- [IOUserNetworkLinkStatus](networkingdriverkit/iousernetworklinkstatus.md)
- [IOUserNetworkLinkQuality](networkingdriverkit/iousernetworklinkquality.md)

### Instance Methods

- [GetHardwareAssists](networkingdriverkit/iousernetworkethernet/gethardwareassists-4kj3q.md)
- [GetMaxTransferUnit](networkingdriverkit/iousernetworkethernet/getmaxtransferunit-mvla.md)
- [RegisterEthernetInterface](networkingdriverkit/iousernetworkethernet/registerethernetinterface-fffz.md)
- [ReportNicProxyLimits](networkingdriverkit/iousernetworkethernet/reportnicproxylimits-9yg2x.md)
- [SetHardwareAssists](networkingdriverkit/iousernetworkethernet/sethardwareassists-5dvbf.md)
- [SetMTU](networkingdriverkit/iousernetworkethernet/setmtu.md)
- [addHardwareCountsWithInterfaceStatistics](networkingdriverkit/iousernetworkethernet/addhardwarecountswithinterfacestatistics.md)
- [bpfAttach](networkingdriverkit/iousernetworkethernet/bpfattach.md)
- [bpfTap](networkingdriverkit/iousernetworkethernet/bpftap.md)
- [bpfTapInputPacket](networkingdriverkit/iousernetworkethernet/bpftapinputpacket.md)
- [bpfTapOutputPacket](networkingdriverkit/iousernetworkethernet/bpftapoutputpacket.md)
- [getBSDName](networkingdriverkit/iousernetworkethernet/getbsdname.md)
- [getBSDNamePrefix](networkingdriverkit/iousernetworkethernet/getbsdnameprefix.md)
- [getBSDUnitNumber](networkingdriverkit/iousernetworkethernet/getbsdunitnumber.md)
- [getFeatureFlags](networkingdriverkit/iousernetworkethernet/getfeatureflags.md)
- [getHardwareAddress](networkingdriverkit/iousernetworkethernet/gethardwareaddress.md)
- [getHardwareAssists](networkingdriverkit/iousernetworkethernet/gethardwareassists-7o0q0.md)
- [getInitialMedia](networkingdriverkit/iousernetworkethernet/getinitialmedia.md)
- [getInterfaceSubFamily](networkingdriverkit/iousernetworkethernet/getinterfacesubfamily.md)
- [getMaxTransferUnit](networkingdriverkit/iousernetworkethernet/getmaxtransferunit-3iokl.md)
- [getSupportedMediaArray](networkingdriverkit/iousernetworkethernet/getsupportedmediaarray.md)
- [getTSOOptions](networkingdriverkit/iousernetworkethernet/gettsooptions.md)
- [getTxDataOffset](networkingdriverkit/iousernetworkethernet/gettxdataoffset.md)
- [handleChosenMedia](networkingdriverkit/iousernetworkethernet/handlechosenmedia.md)
- [hwConfigNicProxyData](networkingdriverkit/iousernetworkethernet/hwconfignicproxydata-345tz.md)
- [hwConfigNicProxyData](networkingdriverkit/iousernetworkethernet/hwconfignicproxydata-7u8wb.md)
- [processInterfaceCommand](networkingdriverkit/iousernetworkethernet/processinterfacecommand.md)
- [registerEthernetInterface](networkingdriverkit/iousernetworkethernet/registerethernetinterface-8pzu9.md)
- [registerEthernetInterface](networkingdriverkit/iousernetworkethernet/registerethernetinterface-948c9.md)
- [reportDataBandwidths](networkingdriverkit/iousernetworkethernet/reportdatabandwidths-95d7h.md)
- [reportLinkQuality](networkingdriverkit/iousernetworkethernet/reportlinkquality-2tcue.md)
- [reportLinkStatus](networkingdriverkit/iousernetworkethernet/reportlinkstatus-4qtrf.md)
- [reportNicProxyLimits](networkingdriverkit/iousernetworkethernet/reportnicproxylimits-6p2r1.md)
- [setAllMulticastModeEnable](networkingdriverkit/iousernetworkethernet/setallmulticastmodeenable-3aocm.md)
- [setHardwareAddress](networkingdriverkit/iousernetworkethernet/sethardwareaddress.md)
- [setHardwareAssists](networkingdriverkit/iousernetworkethernet/sethardwareassists-2uqz7.md)
- [setHardwareAssists](networkingdriverkit/iousernetworkethernet/sethardwareassists-3vpkr.md)
- [setInterfaceEnable](networkingdriverkit/iousernetworkethernet/setinterfaceenable-6pfsx.md)
- [setMaxTransferUnit](networkingdriverkit/iousernetworkethernet/setmaxtransferunit.md)
- [setMulticastAddresses](networkingdriverkit/iousernetworkethernet/setmulticastaddresses-1o4z3.md)
- [setPowerState](networkingdriverkit/iousernetworkethernet/setpowerstate.md)
- [setPromiscuousModeEnable](networkingdriverkit/iousernetworkethernet/setpromiscuousmodeenable-34fjm.md)
- [start](networkingdriverkit/iousernetworkethernet/start.md)
- [stop](networkingdriverkit/iousernetworkethernet/stop.md)
- [updateInterfaceDescriptor](networkingdriverkit/iousernetworkethernet/updateinterfacedescriptor.md)

## Relationships

### Inherits From

- [IOService](driverkit/ioservice.md)
