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

# ifnet_remove_multicast

## Declaration

```occ
errno_t ifnet_remove_multicast(ifmultiaddr_t multicast);
```

## Parameters

- `multicast`: The multicast to be removed.

## Return Value

Return Value 0 on success otherwise the errno error.

## Discussion

Discussion Causes the interface to leave the multicast group. The stack keeps track of how many times ifnet_add_multicast has been called for a given multicast address. The multicast will only be removed when the number of times ifnet_remove_multicast has been called matches the number of times ifnet_add_multicast has been called. The memory for the multicast address is not actually freed until the separate reference count has reached zero. Some parts of the stack may keep a pointer to the multicast even after that multicast has been removed from the interface. When an interface is detached, all of the multicasts are removed. If the interface of the multicast passed in is no longer attached, this function will gracefully return, performing no work. It is the callers responsibility to release the multicast address after calling this function.

## 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_allocate](kernel/1525028-ifnet_allocate.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_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)
