Skip to content

Commit

Permalink
config(qemu): support DHCP start/end for vmnet configs
Browse files Browse the repository at this point in the history
Resolves #5301
  • Loading branch information
osy committed May 29, 2023
1 parent 3c2906a commit 3a9c8b4
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 2 deletions.
2 changes: 1 addition & 1 deletion Configuration/UTMQemuConfiguration+Arguments.swift
Original file line number Diff line number Diff line change
Expand Up @@ -703,7 +703,7 @@ import Foundation
let firstAddrStr = String(cString: inet_ntoa(firstAddr))
let lastAddrStr = String(cString: inet_ntoa(lastAddr))
let netmaskStr = String(cString: inet_ntoa(netmask))
return (firstAddrStr, lastAddrStr, netmaskStr)
return (network.vlanDhcpStartAddress ?? firstAddrStr, network.vlanDhcpEndAddress ?? lastAddrStr, netmaskStr)
}

@QEMUArgumentBuilder private var networkArguments: [QEMUArgument] {
Expand Down
6 changes: 6 additions & 0 deletions Configuration/UTMQemuConfigurationNetwork.swift
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,9 @@ struct UTMQemuConfigurationNetwork: Codable, Identifiable {
/// DHCP start address for emulated VLAN.
var vlanDhcpStartAddress: String?

/// DHCP end address for Apple VLAN
var vlanDhcpEndAddress: String?

/// DHCP domain for emulated VLAN.
var vlanDhcpDomain: String?

Expand Down Expand Up @@ -91,6 +94,7 @@ struct UTMQemuConfigurationNetwork: Codable, Identifiable {
case vlanHostAddress = "VlanHostAddress"
case vlanHostAddressIPv6 = "VlanHostAddressIPv6"
case vlanDhcpStartAddress = "VlanDhcpStartAddress"
case vlanDhcpEndAddress = "VlanDhcpEndAddress"
case vlanDhcpDomain = "VlanDhcpDomain"
case vlanDnsServerAddress = "VlanDnsServerAddress"
case vlanDnsServerAddressIPv6 = "VlanDnsServerAddressIPv6"
Expand All @@ -113,6 +117,7 @@ struct UTMQemuConfigurationNetwork: Codable, Identifiable {
vlanHostAddress = try values.decodeIfPresent(String.self, forKey: .vlanHostAddress)
vlanHostAddressIPv6 = try values.decodeIfPresent(String.self, forKey: .vlanHostAddressIPv6)
vlanDhcpStartAddress = try values.decodeIfPresent(String.self, forKey: .vlanDhcpStartAddress)
vlanDhcpEndAddress = try values.decodeIfPresent(String.self, forKey: .vlanDhcpEndAddress)
vlanDhcpDomain = try values.decodeIfPresent(String.self, forKey: .vlanDhcpDomain)
vlanDnsServerAddress = try values.decodeIfPresent(String.self, forKey: .vlanDnsServerAddress)
vlanDnsServerAddressIPv6 = try values.decodeIfPresent(String.self, forKey: .vlanDnsServerAddressIPv6)
Expand All @@ -134,6 +139,7 @@ struct UTMQemuConfigurationNetwork: Codable, Identifiable {
try container.encodeIfPresent(vlanHostAddress, forKey: .vlanHostAddress)
try container.encodeIfPresent(vlanHostAddressIPv6, forKey: .vlanHostAddressIPv6)
try container.encodeIfPresent(vlanDhcpStartAddress, forKey: .vlanDhcpStartAddress)
try container.encodeIfPresent(vlanDhcpEndAddress, forKey: .vlanDhcpEndAddress)
try container.encodeIfPresent(vlanDhcpDomain, forKey: .vlanDhcpDomain)
try container.encodeIfPresent(vlanDnsServerAddress, forKey: .vlanDnsServerAddress)
try container.encodeIfPresent(vlanDnsServerAddressIPv6, forKey: .vlanDnsServerAddressIPv6)
Expand Down
8 changes: 7 additions & 1 deletion Platform/Shared/VMConfigAdvancedNetworkView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,14 @@ struct IPConfigurationSection: View {
.keyboardType(.decimalPad)
DefaultTextField("Host Address (IPv6)", text: $config.vlanHostAddressIPv6.bound, prompt: "fec0::2")
.keyboardType(.asciiCapable)
DefaultTextField("DHCP Start", text: $config.vlanDhcpStartAddress.bound, prompt: "10.0.2.15")
}
DefaultTextField("DHCP Start", text: $config.vlanDhcpStartAddress.bound, prompt: "10.0.2.15")
.keyboardType(.decimalPad)
if config.mode != .emulated {
DefaultTextField("DHCP End", text: $config.vlanDhcpEndAddress.bound, prompt: "10.0.2.254")
.keyboardType(.decimalPad)
}
if config.mode == .emulated {
DefaultTextField("DHCP Domain Name", text: $config.vlanDhcpDomain.bound)
.keyboardType(.asciiCapable)
DefaultTextField("DNS Server", text: $config.vlanDnsServerAddress.bound, prompt: "10.0.2.3")
Expand Down

0 comments on commit 3a9c8b4

Please sign in to comment.