import Foundation

var old: UInt64 = 0
fileprivate func network()
{
    var addresses: UnsafeMutablePointer<ifaddrs>?
    guard getifaddrs(&addresses) == 0 else { return }
    guard let firstAddr = addresses else { return }
    
    for ptr in sequence(first: firstAddr, next: { $0.pointee.ifa_next })
    {
        let address = ptr.pointee
        let rawData = address.ifa_data
        
        if let rawData = rawData
        {
            let data: if_data = rawData.load(as: if_data.self)
            let up = data.ifi_obytes
            let name = String(cString: address.ifa_name)
            
            if name == "en1"
            {
                if old == 0
                {
                    old = UInt64(up)
                }
                
                let diff = UInt64(up) - old
                Swift.print(name, Double(diff) / 1024.0 / 1024.0) // MB/s
                
                old = UInt64(up)
            }
        }
    }
    
    freeifaddrs(addresses)
}

for _ in 0 ..< 128
{
    network()
    sleep(1)
}