Skip to content

Commit

Permalink
config(qemu): default emulated network when on iOS
Browse files Browse the repository at this point in the history
Do not fail import because network mode is not supported.
  • Loading branch information
osy committed Sep 24, 2022
1 parent 5d62502 commit 9f22277
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 23 deletions.
4 changes: 0 additions & 4 deletions Configuration/QEMUConstant.swift
Original file line number Diff line number Diff line change
Expand Up @@ -181,20 +181,16 @@ enum QEMUUSBBus: String, CaseIterable, QEMUConstant {

enum QEMUNetworkMode: String, CaseIterable, QEMUConstant {
case emulated = "Emulated"
#if os(macOS)
case shared = "Shared"
case host = "Host"
case bridged = "Bridged"
#endif

var prettyValue: String {
switch self {
case .emulated: return NSLocalizedString("Emulated VLAN", comment: "UTMQemuConstants")
#if os(macOS)
case .shared: return NSLocalizedString("Shared Network", comment: "UTMQemuConstants")
case .host: return NSLocalizedString("Host Only", comment: "UTMQemuConstants")
case .bridged: return NSLocalizedString("Bridged (Advanced)", comment: "UTMQemuConstants")
#endif
}
}
}
Expand Down
30 changes: 12 additions & 18 deletions Configuration/UTMQemuConfigurationNetwork.swift
Original file line number Diff line number Diff line change
Expand Up @@ -124,22 +124,18 @@ struct UTMQemuConfigurationNetwork: Codable, Identifiable {
try container.encode(macAddress, forKey: .macAddress)
try container.encode(isIsolateFromHost, forKey: .isIsolateFromHost)
try container.encode(portForward, forKey: .portForward)
#if os(macOS)
if mode == .bridged {
try container.encodeIfPresent(bridgeInterface, forKey: .bridgeInterface)
}
#endif
if mode == .emulated {
try container.encodeIfPresent(vlanGuestAddress, forKey: .vlanGuestAddress)
try container.encodeIfPresent(vlanGuestAddressIPv6, forKey: .vlanGuestAddressIPv6)
try container.encodeIfPresent(vlanHostAddress, forKey: .vlanHostAddress)
try container.encodeIfPresent(vlanHostAddressIPv6, forKey: .vlanHostAddressIPv6)
try container.encodeIfPresent(vlanDhcpStartAddress, forKey: .vlanDhcpStartAddress)
try container.encodeIfPresent(vlanDhcpDomain, forKey: .vlanDhcpDomain)
try container.encodeIfPresent(vlanDnsServerAddress, forKey: .vlanDnsServerAddress)
try container.encodeIfPresent(vlanDnsServerAddressIPv6, forKey: .vlanDnsServerAddressIPv6)
try container.encodeIfPresent(vlanDnsSearchDomain, forKey: .vlanDnsSearchDomain)
}
try container.encodeIfPresent(vlanGuestAddress, forKey: .vlanGuestAddress)
try container.encodeIfPresent(vlanGuestAddressIPv6, forKey: .vlanGuestAddressIPv6)
try container.encodeIfPresent(vlanHostAddress, forKey: .vlanHostAddress)
try container.encodeIfPresent(vlanHostAddressIPv6, forKey: .vlanHostAddressIPv6)
try container.encodeIfPresent(vlanDhcpStartAddress, forKey: .vlanDhcpStartAddress)
try container.encodeIfPresent(vlanDhcpDomain, forKey: .vlanDhcpDomain)
try container.encodeIfPresent(vlanDnsServerAddress, forKey: .vlanDnsServerAddress)
try container.encodeIfPresent(vlanDnsServerAddressIPv6, forKey: .vlanDnsServerAddressIPv6)
try container.encodeIfPresent(vlanDnsSearchDomain, forKey: .vlanDnsSearchDomain)
}
}

Expand Down Expand Up @@ -209,16 +205,14 @@ extension UTMQemuConfigurationNetwork {
private func convertMode(from str: String?) -> QEMUNetworkMode? {
if str == "emulated" {
return .emulated
}
#if os(macOS)
if str == "shared" {
} else if str == "shared" {
return .shared
} else if str == "host" {
return .host
} else if str == "bridged" {
return .bridged
} else {
return nil
}
#endif
return nil
}
}
6 changes: 5 additions & 1 deletion Platform/Shared/VMConfigNetworkView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ struct VMConfigNetworkView: View {
VStack {
Form {
Section(header: Text("Hardware")) {
VMConfigConstantPicker("Network Mode", selection: $config.mode)
#if os(macOS)
VMConfigConstantPicker("Network Mode", selection: $config.mode)
if config.mode == .bridged {
DefaultTextField("Bridged Interface", text: $config.bridgeInterface.bound, prompt: "en0")
.keyboardType(.asciiCapable)
Expand All @@ -52,10 +52,14 @@ struct VMConfigNetworkView: View {
}
}

#if os(macOS)
/// Bridged and shared networking doesn't support port forwarding
if config.mode == .emulated {
VMConfigNetworkPortForwardView(config: $config)
}
#else
VMConfigNetworkPortForwardView(config: $config)
#endif
}
}
}
Expand Down

0 comments on commit 9f22277

Please sign in to comment.