Gerencie ifaddrs para retornar endereços MAC também no Swift

Eu tenho o seguinte código que recupera com êxito todos os IPs conectados ao meu roteador. Mas preciso obter os endereços MAC para cada IP.

Portanto, em vez de os endereços serem retornados como uma matriz com[ips], seja retornado como um dicionário[ips:0000000, mac: 000000]

É possível ser alcançado com alterações no código a seguir (deComo obter o endereço IP no swift)?

func getIFAddresses() -> [String] {


print("GET IF ADDRESSSE")

var addresses = [String]()

// Get list of all interfaces on the local machine:
var ifaddr : UnsafeMutablePointer<ifaddrs> = nil
if getifaddrs(&ifaddr) == 0 {

    print("getifaddrs\(getifaddrs)")

    // For each interface ...
    for (var ptr = ifaddr; ptr != nil; ptr = ptr.memory.ifa_next) {
        let flags = Int32(ptr.memory.ifa_flags)
        var addr = ptr.memory.ifa_addr.memory

        print("flags\(flags)")
        print("addr\(addr)")

        // Check for running IPv4, IPv6 interfaces. Skip the loopback interface.
        if (flags & (IFF_UP|IFF_RUNNING|IFF_LOOPBACK)) == (IFF_UP|IFF_RUNNING) {



            if addr.sa_family == UInt8(AF_INET) || addr.sa_family == UInt8(AF_INET6) {

                print("addr.sa_family\(addr.sa_family)")

                // Convert interface address to a human readable string:
                var hostname = [CChar](count: Int(NI_MAXHOST), repeatedValue: 0)

                print("hostname\(hostname)")

                if (getnameinfo(
                    &addr, socklen_t(addr.sa_len),
                    &hostname,
                    socklen_t(hostname.count),
                    nil,
                    socklen_t(0), NI_NUMERICHOST) == 0) {


                        if let address = String.fromCString(hostname) {
                            addresses.append(address)
                        }
                }
            }
        }
    }
    freeifaddrs(ifaddr)
    print("freeifaddrs\(freeifaddrs)")
}
print("ADDRESSES \(addresses)")
return addresses

}

questionAnswers(2)

yourAnswerToTheQuestion