wireguard-apple/WireGuard/Shared/Model/InterfaceConfiguration.swift

34 lines
1.1 KiB
Swift
Raw Normal View History

2018-12-21 04:52:45 +00:00
// SPDX-License-Identifier: MIT
2019-01-02 00:56:33 +00:00
// Copyright © 2018-2019 WireGuard LLC. All Rights Reserved.
2018-12-21 04:52:45 +00:00
import Foundation
2018-12-22 04:41:54 +00:00
import Network
2018-12-21 04:52:45 +00:00
struct InterfaceConfiguration {
var privateKey: Data
var addresses = [IPAddressRange]()
var listenPort: UInt16?
var mtu: UInt16?
var dns = [DNSServer]()
2018-12-21 22:34:56 +00:00
2018-12-21 23:28:18 +00:00
init(privateKey: Data) {
2018-12-21 04:52:45 +00:00
if privateKey.count != TunnelConfiguration.keyLength {
fatalError("Invalid private key")
}
2018-12-21 23:28:18 +00:00
self.privateKey = privateKey
2018-12-21 04:52:45 +00:00
}
}
2018-12-22 04:41:54 +00:00
extension InterfaceConfiguration: Equatable {
static func == (lhs: InterfaceConfiguration, rhs: InterfaceConfiguration) -> Bool {
let lhsAddresses = lhs.addresses.filter { $0.address is IPv4Address } + lhs.addresses.filter { $0.address is IPv6Address }
let rhsAddresses = rhs.addresses.filter { $0.address is IPv4Address } + rhs.addresses.filter { $0.address is IPv6Address }
return lhs.privateKey == rhs.privateKey &&
lhsAddresses == rhsAddresses &&
lhs.listenPort == rhs.listenPort &&
lhs.mtu == rhs.mtu &&
lhs.dns == rhs.dns
}
}