Multicast-expert

Latest version: v1.6.0

Safety actively analyzes 722581 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 3

1.6.0

Added

- `AsyncMcastRxSocket` is now available (as long as you are using Python 3.11 or later). This class provides an asyncio-compatible way to receive with a multicast Rx socket.

_______________________________________________________________________________

1.5.1

Changed

- McastRxSockets for Unix IPv4 now use only one OS socket internally, and use IP_MULTICAST_ALL=0 to maintain isolation between other multicast groups. This should improve performance as there are no longer a potentially large number of sockets that need to be select()-ed when receiving.
- This has the side effect that Unix IPv4 McastRxSockets can now receive unicast packets going to the port number that the socket is opened on (on any interface).
- Transmitting via localhost on Windows to a port+group combo with no Rx socket open now simply does nothing (consistent with other platforms) instead of producing a WinError.

_______________________________________________________________________________

1.5.0

This release is focused on addressing the performance issues caused by multicast_expert rescanning the network interfaces on the machine each time a socket is opened. You can now avoid this overhead by using the new scan functions and then passing their result into the socket constructors' `iface` argument.

Added
- `multicast_expert.scan_interfaces()` provides a more complete wrapper around `netifaces` It will scan all the interface details from the machine into a list of `IfaceInfo` dataclass objects.
- `multicast_expert.find_interfaces()` provides an easy way to locate interfaces matching a given specifier. The specifier may be an IPv4 or IPv6 address of the interface (as a string or an object), or an interface name (e.g. eth0).

Changed
- `McastTxSocket` and `McastRxSocket` now accept an `IfaceSpecifier` for their interface IP arguments instead of just an IP address string. This is compatible with old usage but allows a wider range of values to be used, including an interface obtained from `scan_interfaces()` or `find_interfaces()`.
- `McastTxSocket` and `McastRxSocket` now accept IPv4Address and IPv6Address objects in addition to strings for the `mcast_ips` and `source_ips` constructor arguments.
- Note that the sendto() and recvfrom() functions still accept and return only string addresses, as this matches the behavior of the `socket` module (surprisingly).

Fixed
- It is now possible to unambiguously open a socket on an interface that has the same IP as another interface (in most cases). Previously, it was undefined which interface you'd get if this happened.
- It is now possible to open a `McastRxSocket` socket on a machine with interfaces with multiple IPs. This previously crashed unless you explicitly specified one interface to use.

_______________________________________________________________________________

1.4.2

Fixed
- Fix mypy and pylance "name not exported" error visible for users of the library

_______________________________________________________________________________

1.4.1

Added
- Linting (via ruff, pyright, and docsig in addition to the preexisting mypy) and autoformatting (via ruff) has been added to the project
- New release workflow via Trusted Publishing
- Add FAQ entry about IGMP Querier mode in README

_______________________________________________________________________________

1.4.0

Added
- multicast_expert now has Github Actions CI thanks to Victor Tang's contribution! It is now automatically tested on Mac, Linux, and Windows.
- Add `enable_external_loopback` option on tx and rx sockets, which can be used to turn on multicast loopback for non-loopback interfaces. Note that this option has to be set on both the Tx and Rx sockets in order to work correctly on all platforms.

Fixed
- Fix bug which prevented opening IPv6 multicast Tx sockets on Linux in some situations.
- Fix mypy type checker error on non-Windows platforms due to use of ctypes Windows functionality.

_______________________________________________________________________________

Page 1 of 3

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.