Add thread spawning FFI

This commit is contained in:
Jett Chen 2023-08-27 10:21:55 +08:00
parent a2cbd2ad77
commit 1b69b4a8e1
7 changed files with 98 additions and 29 deletions

View file

@ -4,23 +4,15 @@ import OSLog
class PacketTunnelProvider: NEPacketTunnelProvider {
let logger = Logger(subsystem: "com.hackclub.burrow", category: "General")
var osInitialized = false
override func startTunnel(options: [String: NSObject]?, completionHandler: @escaping (Error?) -> Void) {
libburrow.initialize_oslog()
let fild = libburrow.retrieve()
if fild == -1 {
// Not sure if this is the right way to return an error
logger.error("Failed to retrieve file descriptor for burrow.")
let err = NSError(
domain: "com.hackclub.burrow",
code: 1_010,
userInfo: [NSLocalizedDescriptionKey: "Failed to find TunInterface"]
)
completionHandler(err)
if(!osInitialized){
libburrow.initialize_oslog()
osInitialized=true
}
logger.info("fd: \(fild)")
let network_settings = genNetSec(fild: fild)
logger.info("Network Settings: - ipv4:\(network_settings.ipv4Settings) -mtu: \(network_settings.mtu)")
libburrow.spawn_server()
logger.debug("spawned server")
completionHandler(nil)
}

View file

@ -9,3 +9,4 @@ typedef struct {
NetWorkSettings getNetworkSettings(int);
void initialize_oslog();
void spawn_server();