aboutsummaryrefslogtreecommitdiffstats
path: root/Sources/WireGuardKit/InterfaceConfiguration.swift
diff options
context:
space:
mode:
Diffstat (limited to 'Sources/WireGuardKit/InterfaceConfiguration.swift')
-rw-r--r--Sources/WireGuardKit/InterfaceConfiguration.swift32
1 files changed, 32 insertions, 0 deletions
diff --git a/Sources/WireGuardKit/InterfaceConfiguration.swift b/Sources/WireGuardKit/InterfaceConfiguration.swift
new file mode 100644
index 0000000..d99d969
--- /dev/null
+++ b/Sources/WireGuardKit/InterfaceConfiguration.swift
@@ -0,0 +1,32 @@
+// SPDX-License-Identifier: MIT
+// Copyright © 2018-2023 WireGuard LLC. All Rights Reserved.
+
+import Foundation
+import Network
+
+public struct InterfaceConfiguration {
+ public var privateKey: PrivateKey
+ public var addresses = [IPAddressRange]()
+ public var listenPort: UInt16?
+ public var mtu: UInt16?
+ public var dns = [DNSServer]()
+ public var dnsSearch = [String]()
+
+ public init(privateKey: PrivateKey) {
+ self.privateKey = privateKey
+ }
+}
+
+extension InterfaceConfiguration: Equatable {
+ public 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 &&
+ lhs.dnsSearch == rhs.dnsSearch
+ }
+}