Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions Package.resolved

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

52 changes: 29 additions & 23 deletions Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import PackageDescription
let releaseVersion = ProcessInfo.processInfo.environment["RELEASE_VERSION"] ?? "0.0.0"
let gitCommit = ProcessInfo.processInfo.environment["GIT_COMMIT"] ?? "unspecified"
let builderShimVersion = "0.12.0"
let scVersion = "0.33.1"
let scVersion = "0.33.2"

let package = Package(
name: "container",
Expand All @@ -34,7 +34,9 @@ let package = Package(
.library(name: "ContainerAPIService", targets: ["ContainerAPIService"]),
.library(name: "ContainerAPIClient", targets: ["ContainerAPIClient"]),
.library(name: "ContainerImagesService", targets: ["ContainerImagesService", "ContainerImagesServiceClient"]),
.library(name: "ContainerNetworkService", targets: ["ContainerNetworkService", "ContainerNetworkServiceClient"]),
.library(name: "ContainerNetworkClient", targets: ["ContainerNetworkClient"]),
.library(name: "ContainerNetworkServer", targets: ["ContainerNetworkServer"]),
.library(name: "ContainerNetworkVmnetServer", targets: ["ContainerNetworkVmnetServer"]),
.library(name: "ContainerResource", targets: ["ContainerResource"]),
.library(name: "ContainerLog", targets: ["ContainerLog"]),
.library(name: "ContainerPersistence", targets: ["ContainerPersistence"]),
Expand Down Expand Up @@ -106,7 +108,6 @@ let package = Package(
"ContainerBuild",
"ContainerAPIClient",
"ContainerLog",
"ContainerNetworkService",
"ContainerPersistence",
"ContainerPlugin",
"ContainerResource",
Expand Down Expand Up @@ -166,7 +167,7 @@ let package = Package(
"ContainerAPIService",
"ContainerAPIClient",
"ContainerLog",
"ContainerNetworkService",
"ContainerNetworkClient",
"ContainerPersistence",
"ContainerPlugin",
"ContainerResource",
Expand All @@ -188,7 +189,7 @@ let package = Package(
.product(name: "SystemPackage", package: "swift-system"),
"CVersion",
"ContainerAPIClient",
"ContainerNetworkServiceClient",
"ContainerNetworkClient",
"ContainerPersistence",
"ContainerPlugin",
"ContainerResource",
Expand Down Expand Up @@ -291,13 +292,12 @@ let package = Package(
dependencies: [
.product(name: "ArgumentParser", package: "swift-argument-parser"),
.product(name: "Logging", package: "swift-log"),
.product(name: "Containerization", package: "containerization"),
.product(name: "ContainerizationExtras", package: "containerization"),
.product(name: "ContainerizationIO", package: "containerization"),
.product(name: "ContainerizationOS", package: "containerization"),
"ContainerLog",
"ContainerNetworkService",
"ContainerNetworkServiceClient",
"ContainerNetworkClient",
"ContainerNetworkServer",
"ContainerNetworkVmnetServer",
"ContainerPersistence",
"ContainerPlugin",
"ContainerResource",
Expand All @@ -308,36 +308,42 @@ let package = Package(
exclude: ["config.toml"]
),
.target(
name: "ContainerNetworkService",
name: "ContainerNetworkClient",
dependencies: [
.product(name: "ContainerizationExtras", package: "containerization"),
"ContainerResource",
"ContainerXPC",
],
path: "Sources/Services/Network/Client"
),
.target(
name: "ContainerNetworkServer",
dependencies: [
.product(name: "Logging", package: "swift-log"),
.product(name: "Containerization", package: "containerization"),
.product(name: "ContainerizationOS", package: "containerization"),
"ContainerNetworkServiceClient",
"ContainerPersistence",
.product(name: "ContainerizationExtras", package: "containerization"),
"ContainerNetworkClient",
"ContainerResource",
"ContainerXPC",
],
path: "Sources/Services/ContainerNetworkService/Server"
path: "Sources/Services/Network/Server"
),
.testTarget(
name: "ContainerNetworkServiceTests",
name: "ContainerNetworkServerTests",
dependencies: [
.product(name: "Containerization", package: "containerization"),
.product(name: "ContainerizationExtras", package: "containerization"),
"ContainerNetworkService",
"ContainerNetworkServer",
]
),
.target(
name: "ContainerNetworkServiceClient",
name: "ContainerNetworkVmnetServer",
dependencies: [
.product(name: "Logging", package: "swift-log"),
.product(name: "Containerization", package: "containerization"),
"ContainerLog",
.product(name: "ContainerizationExtras", package: "containerization"),
"ContainerNetworkServer",
"ContainerResource",
"ContainerXPC",
],
path: "Sources/Services/ContainerNetworkService/Client"
path: "Sources/Services/NetworkVmnet/Server"
),
.target(
name: "ContainerRuntimeLinuxClient",
Expand Down Expand Up @@ -371,7 +377,7 @@ let package = Package(
.product(name: "ContainerizationOS", package: "containerization"),
.product(name: "ArgumentParser", package: "swift-argument-parser"),
"ContainerAPIClient",
"ContainerNetworkServiceClient",
"ContainerNetworkClient",
"ContainerOS",
"ContainerPersistence",
"ContainerResource",
Expand Down
1 change: 0 additions & 1 deletion Sources/APIServer/APIServer+Start.swift
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ import ArgumentParser
import ContainerAPIClient
import ContainerAPIService
import ContainerLog
import ContainerNetworkService
import ContainerPersistence
import ContainerPlugin
import ContainerResource
Expand Down
15 changes: 8 additions & 7 deletions Sources/Plugins/NetworkVmnet/NetworkVmnetHelper+Start.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,9 @@

import ArgumentParser
import ContainerLog
import ContainerNetworkService
import ContainerNetworkServiceClient
import ContainerNetworkClient
import ContainerNetworkServer
import ContainerNetworkVmnetServer
import ContainerPlugin
import ContainerResource
import ContainerXPC
Expand Down Expand Up @@ -99,14 +100,14 @@ extension NetworkVmnetHelper {
log: log
)
try await network.start()
let server = try await NetworkService(network: network, log: log)
let service = try await DefaultNetworkService(network: network, log: log)
let harness = NetworkHarness(service: service)
let xpc = XPCServer(
identifier: serviceIdentifier,
routes: [
NetworkRoutes.state.rawValue: XPCServer.route(server.state),
NetworkRoutes.allocate.rawValue: server.allocate,
NetworkRoutes.lookup.rawValue: XPCServer.route(server.lookup),
NetworkRoutes.disableAllocator.rawValue: XPCServer.route(server.disableAllocator),
NetworkRoutes.state.rawValue: XPCServer.route(harness.state),
NetworkRoutes.allocate.rawValue: harness.allocate,
NetworkRoutes.lookup.rawValue: XPCServer.route(harness.lookup),
],
log: log
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
//===----------------------------------------------------------------------===//

import ContainerAPIClient
import ContainerNetworkServiceClient
import ContainerNetworkClient
import ContainerPersistence
import ContainerPlugin
import ContainerResource
Expand All @@ -30,7 +30,7 @@ import SystemPackage
public actor NetworksService {
struct NetworkServiceState {
var networkState: NetworkState
var client: ContainerNetworkServiceClient.NetworkClient
var client: ContainerNetworkClient.NetworkClient
}

private let pluginLoader: PluginLoader
Expand Down Expand Up @@ -389,7 +389,7 @@ public actor NetworksService {
return pluginInfo
}

private static func getClient(configuration: NetworkConfiguration) throws -> ContainerNetworkServiceClient.NetworkClient {
private static func getClient(configuration: NetworkConfiguration) throws -> ContainerNetworkClient.NetworkClient {
guard let pluginInfo = configuration.pluginInfo else {
throw ContainerizationError(.internalError, message: "network \(configuration.id) missing plugin information")
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -113,15 +113,6 @@ extension NetworkClient {
}
}

public func disableAllocator() async throws -> Bool {
let request = XPCMessage(route: NetworkRoutes.disableAllocator.rawValue)

let client = createClient()

let response = try await client.send(request)
return try response.allocatorDisabled()
}

private func createClient() -> XPCClient {
XPCClient(service: machServiceLabel)
}
Expand All @@ -135,10 +126,6 @@ extension XPCMessage {
return XPCMessage(object: additionalData)
}

public func allocatorDisabled() throws -> Bool {
self.bool(key: NetworkKeys.allocatorDisabled.rawValue)
}

public func attachment() throws -> Attachment {
let data = self.dataNoCopy(key: NetworkKeys.attachment.rawValue)
guard let data else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@

public enum NetworkKeys: String {
case additionalData
case allocatorDisabled
case attachment
case hostname
case macAddress
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,6 @@ public enum NetworkRoutes: String {
case state = "com.apple.container.network/state"
/// Allocates parameters for attaching a sandbox to the network.
case allocate = "com.apple.container.network/allocate"
/// Disables the allocator if no sandboxes are attached.
case disableAllocator = "com.apple.container.network/disableAllocator"
/// Retrieves the allocation for a hostname.
case lookup = "com.apple.container.network/lookup"
}
Original file line number Diff line number Diff line change
Expand Up @@ -52,11 +52,6 @@ actor AttachmentAllocator {
return index
}

/// If no addresses are allocated, prevent future allocations and return true.
func disableAllocator() async -> Bool {
allocator.disableAllocator()
}

/// Retrieve the allocator index for a hostname.
func lookup(hostname: String) async throws -> UInt32? {
hostnames[hostname]
Expand Down
Loading