---
title: ifnet_allocate
framework: Kernel
role: symbol
role_heading: Function
platforms: [macOS 10.4+]
path: kernel/1525028-ifnet_allocate
---

# ifnet_allocate

## Declaration

```occ
errno_t ifnet_allocate(const struct ifnet_init_params *init, ifnet_t *interface);
```

## Parameters

- `init`: The initial values for the interface. These values can not be changed after the interface has been allocated.
- `interface`: The interface allocated upon success.

## Return Value

Return Value May return ENOMEM if there is insufficient memory or EEXIST if an interface with the same uniqueid and family has already been allocated and is in use.

## Discussion

Discussion Allocate an ifnet_t with an initial refcount of 1. Many parts of the stack do not properly refcount the ifnet_t. In order to avoid freeing the ifnet_t while some parts of the stack may contain a reference to it, the ifnet_ts are only recycled, never freed. A unique id is used to try and recycle the same ifnet_t when allocating an interface. For example, for an ethernet interface, the hardware address of the ethernet card is usually used for the uniqueid. If a PC Card is removed and inserted again, if the ethernet address of the PC card is used, the same ifnet_t will be used for the card the second time it is inserted. In the future, when the ifnet_t is correctly refcounted by all of the stack, the interfaces may be freed and the unique ids ignored.

## See Also

### Network Kernel Extensions

- [sock_accept](kernel/1396149-sock_accept.md)
- [sock_bind](kernel/1396145-sock_bind.md)
- [sock_close](kernel/1396134-sock_close.md)
- [sock_connect](kernel/1396120-sock_connect.md)
- [sock_getpeername](kernel/1396137-sock_getpeername.md)
- [sock_getsockname](kernel/1396141-sock_getsockname.md)
- [sock_getsockopt](kernel/1396136-sock_getsockopt.md)
- [sock_gettype](kernel/1396147-sock_gettype.md)
- [sock_inject_data_in](kernel/1433192-sock_inject_data_in.md)
- [sock_inject_data_out](kernel/1433162-sock_inject_data_out.md)
- [sock_ioctl](kernel/1396118-sock_ioctl.md)
- [sock_isconnected](kernel/1396130-sock_isconnected.md)
- [sock_isnonblocking](kernel/1396116-sock_isnonblocking.md)
- [sock_listen](kernel/1396139-sock_listen.md)
- [sock_receive](kernel/1396126-sock_receive.md)
- [sock_receivembuf](kernel/1396114-sock_receivembuf.md)
- [sock_send](kernel/1396143-sock_send.md)
- [sock_sendmbuf](kernel/1396128-sock_sendmbuf.md)
- [sock_setpriv](kernel/1396124-sock_setpriv.md)
- [sock_setsockopt](kernel/1396148-sock_setsockopt.md)
- [sock_shutdown](kernel/1396150-sock_shutdown.md)
- [sock_socket](kernel/1396122-sock_socket.md)
- [sockopt_copyin](kernel/1433166-sockopt_copyin.md)
- [sockopt_copyout](kernel/1433176-sockopt_copyout.md)
- [sockopt_direction](kernel/1433253-sockopt_direction.md)
- [sockopt_level](kernel/1433193-sockopt_level.md)
- [sockopt_name](kernel/1433249-sockopt_name.md)
- [sockopt_valsize](kernel/1433272-sockopt_valsize.md)
- [ifaddr_address](kernel/1525073-ifaddr_address.md)
- [ifaddr_address_family](kernel/1524915-ifaddr_address_family.md)
- [ifaddr_dstaddress](kernel/1525058-ifaddr_dstaddress.md)
- [ifaddr_findbestforaddr](kernel/1525009-ifaddr_findbestforaddr.md)
- [ifaddr_ifnet](kernel/1524949-ifaddr_ifnet.md)
- [ifaddr_netmask](kernel/1525132-ifaddr_netmask.md)
- [ifaddr_reference](kernel/1525060-ifaddr_reference.md)
- [ifaddr_release](kernel/1524928-ifaddr_release.md)
- [ifaddr_withaddr](kernel/1524859-ifaddr_withaddr.md)
- [ifaddr_withdstaddr](kernel/1525107-ifaddr_withdstaddr.md)
- [ifaddr_withnet](kernel/1524842-ifaddr_withnet.md)
- [ifaddr_withroute](kernel/1524963-ifaddr_withroute.md)
- [iflt_attach](kernel/1589956-iflt_attach.md)
- [iflt_detach](kernel/1589950-iflt_detach.md)
- [ifmaddr_address](kernel/1524853-ifmaddr_address.md)
- [ifmaddr_ifnet](kernel/1525101-ifmaddr_ifnet.md)
- [ifmaddr_lladdress](kernel/1525091-ifmaddr_lladdress.md)
- [ifmaddr_reference](kernel/1524890-ifmaddr_reference.md)
- [ifmaddr_release](kernel/1525024-ifmaddr_release.md)
- [ifnet_add_multicast](kernel/1524976-ifnet_add_multicast.md)
- [ifnet_addrlen](kernel/1524855-ifnet_addrlen.md)
- [ifnet_attach](kernel/1524922-ifnet_attach.md)
- [ifnet_attach_protocol](kernel/1525004-ifnet_attach_protocol.md)
- [ifnet_attach_protocol_v2](kernel/1525131-ifnet_attach_protocol_v2.md)
- [ifnet_baudrate](kernel/1524866-ifnet_baudrate.md)
- [ifnet_capabilities_enabled](kernel/1525016-ifnet_capabilities_enabled.md)
- [ifnet_capabilities_supported](kernel/1524931-ifnet_capabilities_supported.md)
- [ifnet_detach](kernel/1524903-ifnet_detach.md)
- [ifnet_detach_protocol](kernel/1525007-ifnet_detach_protocol.md)
- [ifnet_event](kernel/1524986-ifnet_event.md)
- [ifnet_family](kernel/1524921-ifnet_family.md)
- [ifnet_find_by_name](kernel/1525072-ifnet_find_by_name.md)
- [ifnet_flags](kernel/1525111-ifnet_flags.md)
- [ifnet_free_address_list](kernel/1524991-ifnet_free_address_list.md)
- [ifnet_free_multicast_list](kernel/1524898-ifnet_free_multicast_list.md)
- [ifnet_get_address_list](kernel/1525146-ifnet_get_address_list.md)
- [ifnet_get_address_list_family](kernel/1525142-ifnet_get_address_list_family.md)
- [ifnet_get_link_mib_data](kernel/1524988-ifnet_get_link_mib_data.md)
- [ifnet_get_link_mib_data_length](kernel/1524864-ifnet_get_link_mib_data_length.md)
- [ifnet_get_multicast_list](kernel/1525020-ifnet_get_multicast_list.md)
- [ifnet_get_tso_mtu](kernel/1524965-ifnet_get_tso_mtu.md)
- [ifnet_get_wake_flags](kernel/1524907-ifnet_get_wake_flags.md)
- [ifnet_hdrlen](kernel/1524895-ifnet_hdrlen.md)
- [ifnet_index](kernel/1525041-ifnet_index.md)
- [ifnet_input](kernel/1525087-ifnet_input.md)
- [ifnet_interface_family_find](kernel/1524844-ifnet_interface_family_find.md)
- [ifnet_ioctl](kernel/1525082-ifnet_ioctl.md)
- [ifnet_lastchange](kernel/1525140-ifnet_lastchange.md)
- [ifnet_list_free](kernel/1524868-ifnet_list_free.md)
- [ifnet_list_get](kernel/1524913-ifnet_list_get.md)
- [ifnet_lladdr_copy_bytes](kernel/1525069-ifnet_lladdr_copy_bytes.md)
- [ifnet_llbroadcast_copy_bytes](kernel/1525030-ifnet_llbroadcast_copy_bytes.md)
- [ifnet_metric](kernel/1524964-ifnet_metric.md)
- [ifnet_mtu](kernel/1524959-ifnet_mtu.md)
- [ifnet_name](kernel/1524885-ifnet_name.md)
- [ifnet_offload](kernel/1524854-ifnet_offload.md)
- [ifnet_output](kernel/1525046-ifnet_output.md)
- [ifnet_output_raw](kernel/1525049-ifnet_output_raw.md)
- [ifnet_reference](kernel/1524857-ifnet_reference.md)
- [ifnet_release](kernel/1525052-ifnet_release.md)
- [ifnet_remove_multicast](kernel/1524982-ifnet_remove_multicast.md)
- [ifnet_resolve_multicast](kernel/1525080-ifnet_resolve_multicast.md)
- [ifnet_set_addrlen](kernel/1524861-ifnet_set_addrlen.md)
- [ifnet_set_baudrate](kernel/1525090-ifnet_set_baudrate.md)
- [ifnet_set_capabilities_enabled](kernel/1524938-ifnet_set_capabilities_enabled.md)
- [ifnet_set_capabilities_supported](kernel/1525144-ifnet_set_capabilities_supported.md)
- [ifnet_set_flags](kernel/1524996-ifnet_set_flags.md)
- [ifnet_set_hdrlen](kernel/1525097-ifnet_set_hdrlen.md)
- [ifnet_set_link_mib_data](kernel/1525120-ifnet_set_link_mib_data.md)
- [ifnet_set_lladdr](kernel/1524891-ifnet_set_lladdr.md)
- [ifnet_set_metric](kernel/1524932-ifnet_set_metric.md)
- [ifnet_set_mtu](kernel/1524919-ifnet_set_mtu.md)
- [ifnet_set_offload](kernel/1524961-ifnet_set_offload.md)
- [ifnet_set_promiscuous](kernel/1524973-ifnet_set_promiscuous.md)
- [ifnet_set_stat](kernel/1524994-ifnet_set_stat.md)
- [ifnet_set_tso_mtu](kernel/1525098-ifnet_set_tso_mtu.md)
- [ifnet_set_wake_flags](kernel/1525070-ifnet_set_wake_flags.md)
- [ifnet_softc](kernel/1524952-ifnet_softc.md)
- [ifnet_stat](kernel/1525068-ifnet_stat.md)
- [ifnet_stat_increment](kernel/1525065-ifnet_stat_increment.md)
- [ifnet_stat_increment_in](kernel/1525002-ifnet_stat_increment_in.md)
- [ifnet_stat_increment_out](kernel/1525085-ifnet_stat_increment_out.md)
- [ifnet_touch_lastchange](kernel/1524957-ifnet_touch_lastchange.md)
- [ifnet_type](kernel/1524954-ifnet_type.md)
- [ifnet_unit](kernel/1525055-ifnet_unit.md)
