Hi all,
we are building a custom controller for ATDECC, which is a layer 2 protocol standardized by IEEE in 1722.1. Our controller can work on multiple network interfaces at the same time . It uses the interface's MAC address to identify, on which interface a certain AVB / ATDECC device was discovered. It then sends replies for this device only to this interface.
This controller worked fine up to and including macOS 26, but when running the same code on macOS 27, we cannot get the MAC addresses for the local interfaces anymore, but we receive 02:00:00:00:00:00 for each of them. This seems to indicate that the MAC address was redacted (looks like the same MAC address, that is being returned since iOS 11 due to privacy reason).
Is this a bug or is macOS going to redact the MAC addresses also in the final release? If MAC addresses are being redacted, would it help to request access to the new entitlement called com.apple.developer.networking.topology-observation?
I attached a little code snippet, that returns actual MAC addresses on macOS 26, but redacted ones on macOS 27.
Build with clang++ -std=c++23 -o ifprobe ifprobe.cpp and then run it with ./ifprobe.
Looks like the file content doesn't display correctly.
Yeah, sorry about that. The forums platform has a number of attachment issues (hey hey :-). I’m hoping that we can improve this sooner rather than later, but I don’t have any specific timeline to share.
Fortunately you found a reasonable workaround.
Is this a bug … ?
No. It’s a deliberate privacy hardening.
would it help to request access to the new entitlement called com.apple.developer.networking.topology-observation?
That’s the right entitlement, but you don’t need to “request access”. It’s available to all Apple developers. In Xcode 27 beta, you can simply enable the Network Topology Observation capability.
This is a restricted entitlement, which means it must be authorised by a provisioning profile (see TN3125 for more about that). If this code ships within a bundled program, like an app or an app extension, then you just embed the profile in the bundle and you’re golden (or let Xcode do it for you).
If this program ships outside of a bundle — for example, as a command-line tool — then things get trickier. The standard workaround is to embed the program in an app-like wrapper. See Signing a daemon with a restricted entitlement.
Share and Enjoy
—
Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"