         }
     }
     
+    /**
+     * Returns all network interfaces in your system. If you have an interface name (e.g. `en0`) that has
+     * multiple IP addresses (e.g. one IPv4 address and a few IPv6 addresses), then they will be returned
+     * as separate instances of Interface.
+     * - Returns: An array containing all network interfaces in your system.
+     */
     public static func allInterfaces() -> [Interface] {
         var interfaces : [Interface] = []
         

        return s
    }
    
    public var addressBytes: [UInt8]? {
        guard let addr = address else { return nil }
        

import Foundation
import ifaddrs

/**
 * This class represents a network interface in your system. For example, `en0` with a certain IP address.
 * It is a wrapper around the `getifaddrs` system call.
 *
 * Typical use of this class is to first call `Interface.allInterfaces()` and then use the properties of the interface(s) that you need.
 *
 * - See: `/usr/include/ifaddrs.h`
 */
public class Interface : CustomStringConvertible, CustomDebugStringConvertible {

    /// The network interface family (IPv4 or IPv6).
    public enum Family : Int {
        /// IPv4.
        case ipv4
        
        /// IPv6.
        case ipv6
        
        /// Used in case of errors.
        case other
        
        /// String representation of the address family.
        public func toString() -> String {
            switch (self) {
                case .ipv4: return "IPv4"
