精确定义 OSX 上的"Primary Network Interface"

Precise definition of "Primary Network Interface" on OSX

本文关键字:Primary Interface Network 上的 定义 OSX      更新时间:2023-10-16

我正在考虑使用MAC地址作为OSX上机器标识符的一部分。developer.apple.com上的GetPrimaryMACAddress.c示例演示了如何获取"主"以太网接口(https://developer.apple.com/library/mac/samplecode/GetPrimaryMACAddress/Listings/GetPrimaryMACAddress_GetPrimaryMACAddress_c.html)的MAC地址。我的问题是"主以太网接口的确切定义是什么?"评论将其描述为"内置"网卡。在具有多个内置接口的系统上会发生什么?例如,Mac pro可以有两个有线插头,而旧款Macbook pro则有有线和无线接口。

我能找到的唯一文档是IONetworkInterface.h参考(https://developer.apple.com/library/mac/documentation/Kernel/Reference/IONetworkInterface_header_reference/Reference/reference.html)。它将kIOPrimaryInterface定义为描述"接口是主网络接口还是内置网络接口"。这并没有回答我的问题,当有多个内置接口时会发生什么。

根据苹果的开源页面位于这里

我认为你正在寻找这个特定的代码/*返回Base-64编码的MD5哈希'username:primary-mac-address' */。

//------------------------------------------------------------------------------
// Returns true if the receiver of this method is the system's primary
// network interface.
bool IONetworkInterface::isPrimaryInterface() const
{
    IOService * provider  = _driver;
    bool        isPrimary = false;
    if ( provider ) provider = provider->getProvider();
    // Look for the built-in property in the ethernet entry.
    if ( provider && provider->getProperty("built-in") && getUnitNumber() == 0)
    {
        isPrimary = true;
    }
    return isPrimary;
}