7 changed files with 338 additions and 288 deletions
@ -0,0 +1,52 @@
|
||||
//
|
||||
// Network.h
|
||||
// ZeroTier One
|
||||
//
|
||||
// Created by Grant Limberg on 8/4/16.
|
||||
// Copyright © 2016 ZeroTier, Inc. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h> |
||||
|
||||
enum NetworkStatus { |
||||
REQUESTING_CONFIGURATION, |
||||
OK, |
||||
ACCESS_DENIED, |
||||
NOT_FOUND, |
||||
PORT_ERROR, |
||||
CLIENT_TOO_OLD, |
||||
}; |
||||
|
||||
enum NetworkType { |
||||
PUBLIC, |
||||
PRIVATE, |
||||
}; |
||||
|
||||
@interface Network : NSObject <NSCoding> |
||||
|
||||
@property (readonly) NSArray<NSString*> *assignedAddresses; |
||||
@property (readonly) BOOL bridge; |
||||
@property (readonly) BOOL broadcastEnabled; |
||||
@property (readonly) BOOL dhcp; |
||||
@property (readonly) NSString *mac; |
||||
@property (readonly) int mtu; |
||||
@property (readonly) int netconfRevision; |
||||
@property (readonly) NSString *name; |
||||
@property (readonly) UInt64 nwid; |
||||
@property (readonly) NSString *portDeviceName; |
||||
@property (readonly) int portError; |
||||
@property (readonly) enum NetworkStatus status; |
||||
@property (readonly) enum NetworkType type; |
||||
@property (readonly) BOOL allowManaged; |
||||
@property (readonly) BOOL allowGlobal; |
||||
@property (readonly) BOOL allowDefault; |
||||
@property (readonly) BOOL connected; // not persisted. set to YES if loaded via json
|
||||
|
||||
- (id)initWithJsonData:(NSDictionary*)jsonData; |
||||
- (id)initWithCoder:(NSCoder *)aDecoder; |
||||
- (void)encodeWithCoder:(NSCoder *)aCoder; |
||||
+ (BOOL)defaultRouteExists:(NSArray<Network *>*)netList; |
||||
- (NSString*)statusString; |
||||
- (NSString*)typeString; |
||||
|
||||
@end |
||||
@ -0,0 +1,268 @@
|
||||
// |
||||
// Network.m |
||||
// ZeroTier One |
||||
// |
||||
// Created by Grant Limberg on 8/4/16. |
||||
// Copyright © 2016 ZeroTier, Inc. All rights reserved. |
||||
// |
||||
|
||||
#import "Network.h" |
||||
|
||||
NSString *NetworkAddressesKey = @"addresses"; |
||||
NSString *NetworkBridgeKey = @"bridge"; |
||||
NSString *NetworkBroadcastKey = @"broadcast"; |
||||
NSString *NetworkDhcpKey = @"dhcp"; |
||||
NSString *NetworkMacKey = @"mac"; |
||||
NSString *NetworkMtuKey = @"mtu"; |
||||
NSString *NetworkMulticastKey = @"multicast"; |
||||
NSString *NetworkNameKey = @"name"; |
||||
NSString *NetworkNetconfKey = @"netconf"; |
||||
NSString *NetworkNwidKey = @"nwid"; |
||||
NSString *NetworkPortNameKey = @"port"; |
||||
NSString *NetworkPortErrorKey = @"portError"; |
||||
NSString *NetworkStatusKey = @"status"; |
||||
NSString *NetworkTypeKey = @"type"; |
||||
NSString *NetworkAllowManagedKey = @"allowManaged"; |
||||
NSString *NetworkAllowGlobalKey = @"allowGlobal"; |
||||
NSString *NetworkAllowDefaultKey = @"allowDefault"; |
||||
|
||||
@implementation Network |
||||
|
||||
- (id)initWithJsonData:(NSDictionary*)jsonData |
||||
{ |
||||
self = [super init]; |
||||
|
||||
if(self) { |
||||
if([jsonData objectForKey:@"assignedAddresses"]) { |
||||
_assignedAddresses = (NSArray<NSString*>*)[jsonData objectForKey:@"assignedAddresses"]; |
||||
} |
||||
|
||||
if([jsonData objectForKey:@"bridge"]) { |
||||
_bridge = [(NSNumber*)[jsonData objectForKey:@"bridge"] boolValue]; |
||||
} |
||||
|
||||
if([jsonData objectForKey:@"broadcastEnabled"]) { |
||||
_broadcastEnabled = [(NSNumber*)[jsonData objectForKey:@"broadcastEnabled"] boolValue]; |
||||
} |
||||
|
||||
if([jsonData objectForKey:@"dhcp"]) { |
||||
_dhcp = [(NSNumber*)[jsonData objectForKey:@"dhcp"] boolValue]; |
||||
} |
||||
|
||||
if([jsonData objectForKey:@"mac"]) { |
||||
_mac = (NSString*)[jsonData objectForKey:@"mac"]; |
||||
} |
||||
|
||||
if([jsonData objectForKey:@"mtu"]) { |
||||
_mtu = [(NSNumber*)[jsonData objectForKey:@"mtu"] intValue]; |
||||
} |
||||
|
||||
if([jsonData objectForKey:@"name"]) { |
||||
_name = (NSString*)[jsonData objectForKey:@"name"]; |
||||
} |
||||
|
||||
if([jsonData objectForKey:@"netconfRevision"]) { |
||||
_netconfRevision = [(NSNumber*)[jsonData objectForKey:@"netconfRevision"] intValue]; |
||||
} |
||||
|
||||
if([jsonData objectForKey:@"nwid"]) { |
||||
NSString *networkid = (NSString*)[jsonData objectForKey:@"nwid"]; |
||||
|
||||
NSScanner *scanner = [NSScanner scannerWithString:networkid]; |
||||
[scanner scanHexLongLong:&_nwid]; |
||||
} |
||||
|
||||
if([jsonData objectForKey:@"portDeviceName"]) { |
||||
_portDeviceName = (NSString*)[jsonData objectForKey:@"portDeviceName"]; |
||||
} |
||||
|
||||
if([jsonData objectForKey:@"portError"]) { |
||||
_portError = [(NSNumber*)[jsonData objectForKey:@"portError"] intValue]; |
||||
} |
||||
|
||||
if([jsonData objectForKey:@"allowManaged"]) { |
||||
_allowManaged = [(NSNumber*)[jsonData objectForKey:@"allowManaged"] boolValue]; |
||||
} |
||||
|
||||
if([jsonData objectForKey:@"allowGlobal"]) { |
||||
_allowGlobal = [(NSNumber*)[jsonData objectForKey:@"allowGlobal"] boolValue]; |
||||
} |
||||
|
||||
if([jsonData objectForKey:@"allowDefault"]) { |
||||
_allowDefault = [(NSNumber*)[jsonData objectForKey:@"allowDefault"] boolValue]; |
||||
} |
||||
|
||||
if([jsonData objectForKey:@"status"]) { |
||||
NSString *statusStr = (NSString*)[jsonData objectForKey:@"status"]; |
||||
if([statusStr isEqualToString:@"REQUESTING_CONFIGURATION"]) { |
||||
_status = REQUESTING_CONFIGURATION; |
||||
} |
||||
else if([statusStr isEqualToString:@"OK"]) { |
||||
_status = OK; |
||||
} |
||||
else if([statusStr isEqualToString:@"ACCESS_DENIED"]) { |
||||
_status = ACCESS_DENIED; |
||||
} |
||||
else if([statusStr isEqualToString:@"NOT_FOUND"]) { |
||||
_status = NOT_FOUND; |
||||
} |
||||
else if([statusStr isEqualToString:@"PORT_ERROR"]) { |
||||
_status = PORT_ERROR; |
||||
} |
||||
else if([statusStr isEqualToString:@"CLIENT_TOO_OLD"]) { |
||||
_status = CLIENT_TOO_OLD; |
||||
} |
||||
} |
||||
|
||||
if([jsonData objectForKey:@"type"]) { |
||||
NSString *typeStr = (NSString*)[jsonData objectForKey:@"type"]; |
||||
if([typeStr isEqualToString:@"PRIVATE"]) { |
||||
_type = PRIVATE; |
||||
} |
||||
else if([typeStr isEqualToString:@"PUBLIC"]) { |
||||
_type = PUBLIC; |
||||
} |
||||
} |
||||
|
||||
_connected = YES; |
||||
} |
||||
|
||||
return self; |
||||
} |
||||
- (id)initWithCoder:(NSCoder *)aDecoder |
||||
{ |
||||
self = [super init]; |
||||
|
||||
if(self) { |
||||
if([aDecoder containsValueForKey:NetworkAddressesKey]) { |
||||
_assignedAddresses = (NSArray<NSString*>*)[aDecoder decodeObjectForKey:NetworkAddressesKey]; |
||||
} |
||||
|
||||
if([aDecoder containsValueForKey:NetworkBridgeKey]) { |
||||
_bridge = [aDecoder decodeBoolForKey:NetworkBridgeKey]; |
||||
} |
||||
|
||||
if([aDecoder containsValueForKey:NetworkBroadcastKey]) { |
||||
_broadcastEnabled = [aDecoder decodeBoolForKey:NetworkBroadcastKey]; |
||||
} |
||||
|
||||
if([aDecoder containsValueForKey:NetworkDhcpKey]) { |
||||
_dhcp = [aDecoder decodeBoolForKey:NetworkDhcpKey]; |
||||
} |
||||
|
||||
if([aDecoder containsValueForKey:NetworkMacKey]) { |
||||
_mac = (NSString*)[aDecoder decodeObjectForKey:NetworkMacKey]; |
||||
} |
||||
|
||||
if([aDecoder containsValueForKey:NetworkMtuKey]) { |
||||
_mtu = [aDecoder decodeIntegerForKey:NetworkMtuKey]; |
||||
} |
||||
|
||||
if([aDecoder containsValueForKey:NetworkNameKey]) { |
||||
_name = (NSString*)[aDecoder decodeObjectForKey:NetworkNameKey]; |
||||
} |
||||
|
||||
if([aDecoder containsValueForKey:NetworkNetconfKey]) { |
||||
_netconfRevision = [aDecoder decodeIntegerForKey:NetworkNetconfKey]; |
||||
} |
||||
|
||||
if([aDecoder containsValueForKey:NetworkNwidKey]) { |
||||
_nwid = [(NSNumber*)[aDecoder decodeObjectForKey:NetworkNwidKey] unsignedLongLongValue]; |
||||
} |
||||
|
||||
if([aDecoder containsValueForKey:NetworkPortNameKey]) { |
||||
_portDeviceName = (NSString*)[aDecoder decodeObjectForKey:NetworkPortNameKey]; |
||||
} |
||||
|
||||
if([aDecoder containsValueForKey:NetworkPortErrorKey]) { |
||||
_portError = [aDecoder decodeIntegerForKey:NetworkPortErrorKey]; |
||||
} |
||||
|
||||
if([aDecoder containsValueForKey:NetworkStatusKey]) { |
||||
_status = [aDecoder decodeIntegerForKey:NetworkStatusKey]; |
||||
} |
||||
|
||||
if([aDecoder containsValueForKey:NetworkTypeKey]) { |
||||
_type = [aDecoder decodeIntegerForKey:NetworkTypeKey]; |
||||
} |
||||
|
||||
if([aDecoder containsValueForKey:NetworkAllowManagedKey]) { |
||||
_allowManaged = [aDecoder decodeBoolForKey:NetworkAllowManagedKey]; |
||||
} |
||||
|
||||
if([aDecoder containsValueForKey:NetworkAllowGlobalKey]) { |
||||
_allowGlobal = [aDecoder decodeBoolForKey:NetworkAllowGlobalKey]; |
||||
} |
||||
|
||||
if([aDecoder containsValueForKey:NetworkAllowDefaultKey]) { |
||||
_allowDefault = [aDecoder decodeBoolForKey:NetworkAllowDefaultKey]; |
||||
} |
||||
|
||||
_connected = NO; |
||||
} |
||||
|
||||
return self; |
||||
} |
||||
|
||||
- (void)encodeWithCoder:(NSCoder *)aCoder |
||||
{ |
||||
[aCoder encodeObject:_assignedAddresses forKey:NetworkAddressesKey]; |
||||
[aCoder encodeBool:_bridge forKey:NetworkBridgeKey]; |
||||
[aCoder encodeBool:_broadcastEnabled forKey:NetworkBroadcastKey]; |
||||
[aCoder encodeBool:_dhcp forKey:NetworkDhcpKey]; |
||||
[aCoder encodeObject:_mac forKey:NetworkMacKey]; |
||||
[aCoder encodeInteger:_mtu forKey:NetworkMtuKey]; |
||||
[aCoder encodeObject:_name forKey:NetworkNameKey]; |
||||
[aCoder encodeInteger:_netconfRevision forKey:NetworkNetconfKey]; |
||||
[aCoder encodeObject:[NSNumber numberWithUnsignedLongLong:_nwid] |
||||
forKey:NetworkNwidKey]; |
||||
[aCoder encodeObject:_portDeviceName forKey:NetworkPortNameKey]; |
||||
[aCoder encodeInteger:_portError forKey:NetworkPortErrorKey]; |
||||
[aCoder encodeInteger:_status forKey:NetworkStatusKey]; |
||||
[aCoder encodeInteger:_type forKey:NetworkTypeKey]; |
||||
[aCoder encodeBool:_allowManaged forKey:NetworkAllowManagedKey]; |
||||
[aCoder encodeBool:_allowGlobal forKey:NetworkAllowGlobalKey]; |
||||
[aCoder encodeBool:_allowDefault forKey:NetworkAllowDefaultKey]; |
||||
} |
||||
|
||||
+ (BOOL)defaultRouteExists:(NSArray<Network *>*)netList |
||||
{ |
||||
for(Network *net in netList) { |
||||
if (net.allowDefault && net.connected) { |
||||
return YES; |
||||
} |
||||
} |
||||
return NO; |
||||
} |
||||
|
||||
- (NSString*)statusString { |
||||
switch(_status) { |
||||
case REQUESTING_CONFIGURATION: |
||||
return @"REQUESTING_CONFIGURATION"; |
||||
case OK: |
||||
return @"OK"; |
||||
case ACCESS_DENIED: |
||||
return @"ACCESS_DENIED"; |
||||
case NOT_FOUND: |
||||
return @"NOT_FOUND"; |
||||
case PORT_ERROR: |
||||
return @"PORT_ERROR"; |
||||
case CLIENT_TOO_OLD: |
||||
return @"CLIENT_TOO_OLD"; |
||||
default: |
||||
return @""; |
||||
} |
||||
} |
||||
|
||||
- (NSString*)typeString { |
||||
switch(_type) { |
||||
case PUBLIC: |
||||
return @"PUBLIC"; |
||||
case PRIVATE: |
||||
return @"PRIVATE"; |
||||
default: |
||||
return @""; |
||||
} |
||||
} |
||||
|
||||
@end |
||||
@ -1,279 +0,0 @@
|
||||
// |
||||
// Network.swift |
||||
// ZeroTier One |
||||
// |
||||
// Created by Grant Limberg on 5/17/16. |
||||
// Copyright © 2016 ZeroTier, Inc. All rights reserved. |
||||
// |
||||
|
||||
import Cocoa |
||||
|
||||
enum NetworkStatus : Int, CustomStringConvertible { |
||||
case REQUESTING_CONFIGURATION |
||||
case OK |
||||
case ACCESS_DENIED |
||||
case NOT_FOUND |
||||
case PORT_ERROR |
||||
case CLIENT_TOO_OLD |
||||
|
||||
var description: String { |
||||
switch self { |
||||
case .REQUESTING_CONFIGURATION: return "REQUESTING_CONFIGURATION" |
||||
case .OK: return "OK" |
||||
case .ACCESS_DENIED: return "ACCESS_DENIED" |
||||
case .NOT_FOUND: return "NOT_FOUND" |
||||
case .PORT_ERROR: return "PORT_ERROR" |
||||
case .CLIENT_TOO_OLD: return "CLIENT_TOO_OLD" |
||||
} |
||||
} |
||||
} |
||||
|
||||
enum NetworkType: Int, CustomStringConvertible { |
||||
case PUBLIC |
||||
case PRIVATE |
||||
|
||||
var description: String { |
||||
switch self { |
||||
case .PUBLIC: return "PUBLIC" |
||||
case .PRIVATE: return "PRIVATE" |
||||
} |
||||
} |
||||
} |
||||
|
||||
|
||||
struct PropertyKeys { |
||||
static let addressesKey = "addresses" |
||||
static let bridgeKey = "bridge" |
||||
static let broadcastKey = "broadcast" |
||||
static let dhcpKey = "dhcp" |
||||
static let macKey = "mac" |
||||
static let mtuKey = "mtu" |
||||
static let multicastKey = "multicast" |
||||
static let nameKey = "name" |
||||
static let netconfKey = "netconf" |
||||
static let nwidKey = "nwid" |
||||
static let portNameKey = "port" |
||||
static let portErrorKey = "portError" |
||||
static let statusKey = "status" |
||||
static let typeKey = "type" |
||||
static let allowManagedKey = "allowManaged" |
||||
static let allowGlobalKey = "allowGlobal" |
||||
static let allowDefaultKey = "allowDefault" |
||||
} |
||||
|
||||
class Network: NSObject, NSCoding { |
||||
var assignedAddresses: [String] = [String]() |
||||
var bridge: Bool = false |
||||
var broadcastEnabled: Bool = false |
||||
var dhcp: Bool = false |
||||
var mac: String = "" |
||||
var mtu: Int = 0 |
||||
var name: String = "" |
||||
var netconfRevision: Int = 232 |
||||
var nwid: UInt64 = 0 |
||||
var portDeviceName: String = "" |
||||
var portError: Int = 0 |
||||
var status: NetworkStatus = .REQUESTING_CONFIGURATION |
||||
var type: NetworkType = .PRIVATE |
||||
var allowManaged: Bool = true |
||||
var allowGlobal: Bool = false |
||||
var allowDefault: Bool = false |
||||
var connected: Bool = false // NOT PERSISTED. Set to true if loaded via JSON |
||||
|
||||
init(jsonData: [String: AnyObject]) { |
||||
super.init() |
||||
|
||||
if let aa = jsonData["assignedAddresses"] as? [String] { |
||||
for a in aa { |
||||
assignedAddresses.append(a) |
||||
} |
||||
} |
||||
|
||||
if let b = jsonData["bridge"] as? NSNumber { |
||||
bridge = b.boolValue |
||||
} |
||||
|
||||
if let b = jsonData["broadcastEnabled"] as? NSNumber { |
||||
broadcastEnabled = b.boolValue |
||||
} |
||||
|
||||
if let d = jsonData["dhcp"] as? NSNumber { |
||||
dhcp = d.boolValue |
||||
} |
||||
|
||||
if let m = jsonData["mac"] as? String { |
||||
mac = m |
||||
} |
||||
|
||||
if let m = jsonData["mtu"] as? NSNumber { |
||||
mtu = m.integerValue |
||||
} |
||||
|
||||
if let n = jsonData["name"] as? String { |
||||
name = n |
||||
} |
||||
|
||||
if let n = jsonData["netconfRevision"] as? NSNumber { |
||||
netconfRevision = n.integerValue |
||||
} |
||||
|
||||
if let n = UInt64((jsonData["nwid"] as! String), radix: 16) { |
||||
nwid = n |
||||
} |
||||
|
||||
if let p = jsonData["portDeviceName"] as? String { |
||||
portDeviceName = p |
||||
} |
||||
|
||||
if let p = jsonData["portError"] as? NSNumber { |
||||
portError = p.integerValue |
||||
} |
||||
|
||||
if let a = jsonData["allowManaged"] as? NSNumber { |
||||
allowManaged = a.boolValue |
||||
} |
||||
|
||||
if let a = jsonData["allowGlobal"] as? NSNumber { |
||||
allowGlobal = a.boolValue |
||||
} |
||||
|
||||
if let a = jsonData["allowDefault"] as? NSNumber { |
||||
allowDefault = a.boolValue |
||||
} |
||||
|
||||
if let statusStr = jsonData["status"] as? String { |
||||
switch statusStr { |
||||
case "REQUESTING_CONFIGURATION": |
||||
status = .REQUESTING_CONFIGURATION |
||||
case "OK": |
||||
status = .OK |
||||
case "ACCESS_DENIED": |
||||
status = .ACCESS_DENIED |
||||
case "NOT_FOUND": |
||||
status = .NOT_FOUND |
||||
case "PORT_ERROR": |
||||
status = .PORT_ERROR |
||||
case "CLIENT_TOO_OLD": |
||||
status = .CLIENT_TOO_OLD |
||||
default: |
||||
break |
||||
} |
||||
} |
||||
|
||||
if let typeStr = jsonData["type"] as? String { |
||||
switch typeStr { |
||||
case "PRIVATE": |
||||
type = .PRIVATE |
||||
case "PUBLIC": |
||||
type = .PUBLIC |
||||
default: |
||||
break |
||||
} |
||||
} |
||||
|
||||
// if it's being initialized via JSON, it's connected |
||||
connected = true |
||||
} |
||||
|
||||
required init?(coder aDecoder: NSCoder) { |
||||
if aDecoder.containsValueForKey(PropertyKeys.addressesKey) { |
||||
let addrs = aDecoder.decodeObjectForKey(PropertyKeys.addressesKey) as! [String] |
||||
|
||||
for a in addrs { |
||||
self.assignedAddresses.append(a) |
||||
} |
||||
} |
||||
|
||||
if aDecoder.containsValueForKey(PropertyKeys.bridgeKey) { |
||||
self.bridge = aDecoder.decodeBoolForKey(PropertyKeys.bridgeKey) |
||||
} |
||||
|
||||
if aDecoder.containsValueForKey(PropertyKeys.broadcastKey) { |
||||
self.broadcastEnabled = aDecoder.decodeBoolForKey(PropertyKeys.broadcastKey) |
||||
} |
||||
|
||||
if aDecoder.containsValueForKey(PropertyKeys.dhcpKey) { |
||||
self.dhcp = aDecoder.decodeBoolForKey(PropertyKeys.dhcpKey) |
||||
} |
||||
|
||||
if aDecoder.containsValueForKey(PropertyKeys.macKey) { |
||||
let mac = aDecoder.decodeObjectForKey(PropertyKeys.macKey) as! String |
||||
self.mac = mac |
||||
} |
||||
|
||||
if aDecoder.containsValueForKey(PropertyKeys.mtuKey) { |
||||
self.mtu = aDecoder.decodeIntegerForKey(PropertyKeys.mtuKey) |
||||
} |
||||
|
||||
if aDecoder.containsValueForKey(PropertyKeys.nameKey) { |
||||
let name = aDecoder.decodeObjectForKey(PropertyKeys.nameKey) as! String |
||||
|
||||
self.name = name |
||||
} |
||||
|
||||
if aDecoder.containsValueForKey(PropertyKeys.netconfKey) { |
||||
self.netconfRevision = aDecoder.decodeIntegerForKey(PropertyKeys.netconfKey) |
||||
} |
||||
|
||||
if aDecoder.containsValueForKey(PropertyKeys.nwidKey) { |
||||
self.nwid = (aDecoder.decodeObjectForKey(PropertyKeys.nwidKey) as! NSNumber).unsignedLongLongValue |
||||
} |
||||
|
||||
if aDecoder.containsValueForKey(PropertyKeys.portNameKey) { |
||||
self.portDeviceName = aDecoder.decodeObjectForKey(PropertyKeys.portNameKey) as! String |
||||
} |
||||
|
||||
if aDecoder.containsValueForKey(PropertyKeys.portErrorKey) { |
||||
self.portError = aDecoder.decodeIntegerForKey(PropertyKeys.portErrorKey) |
||||
} |
||||
|
||||
if aDecoder.containsValueForKey(PropertyKeys.statusKey) { |
||||
self.status = NetworkStatus(rawValue: aDecoder.decodeIntegerForKey(PropertyKeys.statusKey))! |
||||
} |
||||
|
||||
if aDecoder.containsValueForKey(PropertyKeys.typeKey) { |
||||
self.type = NetworkType(rawValue: aDecoder.decodeIntegerForKey(PropertyKeys.typeKey))! |
||||
} |
||||
|
||||
if aDecoder.containsValueForKey(PropertyKeys.allowManagedKey) { |
||||
self.allowManaged = aDecoder.decodeBoolForKey(PropertyKeys.allowManagedKey) |
||||
} |
||||
|
||||
if aDecoder.containsValueForKey(PropertyKeys.allowGlobalKey) { |
||||
self.allowGlobal = aDecoder.decodeBoolForKey(PropertyKeys.allowGlobalKey) |
||||
} |
||||
|
||||
if aDecoder.containsValueForKey(PropertyKeys.allowDefaultKey) { |
||||
self.allowDefault = aDecoder.decodeBoolForKey(PropertyKeys.allowDefaultKey) |
||||
} |
||||
} |
||||
|
||||
func encodeWithCoder(aCoder: NSCoder) { |
||||
aCoder.encodeObject(self.assignedAddresses, forKey: PropertyKeys.addressesKey) |
||||
aCoder.encodeBool(self.bridge, forKey: PropertyKeys.bridgeKey) |
||||
aCoder.encodeBool(self.broadcastEnabled, forKey: PropertyKeys.broadcastKey) |
||||
aCoder.encodeBool(self.dhcp, forKey: PropertyKeys.dhcpKey) |
||||
aCoder.encodeObject(self.mac, forKey: PropertyKeys.macKey) |
||||
aCoder.encodeInteger(self.mtu, forKey: PropertyKeys.mtuKey) |
||||
aCoder.encodeObject(self.name, forKey: PropertyKeys.nameKey) |
||||
aCoder.encodeInteger(self.netconfRevision, forKey: PropertyKeys.netconfKey) |
||||
aCoder.encodeObject(NSNumber(unsignedLongLong: self.nwid), forKey: PropertyKeys.nwidKey) |
||||
aCoder.encodeObject(self.portDeviceName, forKey: PropertyKeys.portNameKey) |
||||
aCoder.encodeInteger(self.portError, forKey: PropertyKeys.portErrorKey) |
||||
aCoder.encodeInteger(self.status.rawValue, forKey: PropertyKeys.statusKey) |
||||
aCoder.encodeInteger(self.type.rawValue, forKey: PropertyKeys.typeKey) |
||||
aCoder.encodeBool(self.allowManaged, forKey: PropertyKeys.allowManagedKey) |
||||
aCoder.encodeBool(self.allowGlobal, forKey: PropertyKeys.allowGlobalKey) |
||||
aCoder.encodeBool(self.allowDefault, forKey: PropertyKeys.allowDefaultKey) |
||||
} |
||||
} |
||||
|
||||
func defaultRouteExists(netList: [Network]) -> Bool { |
||||
for net in netList { |
||||
if net.allowDefault && net.connected { |
||||
return true |
||||
} |
||||
} |
||||
|
||||
return false |
||||
} |
||||
Loading…
Reference in new issue