diff --git a/OpenVPN Adapter/OpenVPNAdapter+Public.h b/OpenVPN Adapter/OpenVPNAdapter+Public.h index b101e62..188f819 100644 --- a/OpenVPN Adapter/OpenVPNAdapter+Public.h +++ b/OpenVPN Adapter/OpenVPNAdapter+Public.h @@ -10,14 +10,19 @@ #import "OpenVPNAdapter.h" -@class NEPacketTunnelFlow; @class NEPacketTunnelNetworkSettings; +@protocol OpenVPNAdapterPacketFlow + +- (void)readPacketsWithCompletionHandler:(nonnull void (^)(NSArray * _Nonnull packets, NSArray * _Nonnull protocols))completionHandler; +- (BOOL)writePackets:(nonnull NSArray *)packets withProtocols:(nonnull NSArray *)protocols; + +@end @protocol OpenVPNAdapterDelegate - (void)configureTunnelWithSettings:(nonnull NEPacketTunnelNetworkSettings *)settings - callback:(nonnull void (^)(NEPacketTunnelFlow * __nullable flow))callback + callback:(nonnull void (^)(id _Nullable flow))callback NS_SWIFT_NAME(configureTunnel(settings:callback:)); - (void)handleEvent:(OpenVPNEvent)event @@ -29,7 +34,6 @@ NS_SWIFT_NAME(handle(error:)); @end - @interface OpenVPNAdapter (Provider) @property (strong, nonatomic, nullable) NSString *username; diff --git a/OpenVPN Adapter/OpenVPNAdapter.mm b/OpenVPN Adapter/OpenVPNAdapter.mm index 129f3a2..a3fd300 100644 --- a/OpenVPN Adapter/OpenVPNAdapter.mm +++ b/OpenVPN Adapter/OpenVPNAdapter.mm @@ -43,7 +43,7 @@ NSString * const OpenVPNAdapterErrorEventKey = @"me.ss-abramchuk.openvpn-adapter @property CFSocketRef vpnSocket; @property CFSocketRef tunSocket; -@property (weak, nonatomic) NEPacketTunnelFlow *packetFlow; +@property (weak, nonatomic) id packetFlow; - (void)readTUNPackets; - (void)readVPNData:(NSData *)data; @@ -199,7 +199,7 @@ static void socketCallback(CFSocketRef socket, CFSocketCallBackType type, CFData dispatch_semaphore_t sema = dispatch_semaphore_create(0); - [self.delegate configureTunnelWithSettings:networkSettings callback:^(NEPacketTunnelFlow * _Nullable flow) { + [self.delegate configureTunnelWithSettings:networkSettings callback:^(id _Nullable flow) { self.packetFlow = flow; dispatch_semaphore_signal(sema); }]; diff --git a/OpenVPN Tunnel Provider/NEPacketTunnelFlow+OpenVPN.swift b/OpenVPN Tunnel Provider/NEPacketTunnelFlow+OpenVPN.swift new file mode 100644 index 0000000..1588f82 --- /dev/null +++ b/OpenVPN Tunnel Provider/NEPacketTunnelFlow+OpenVPN.swift @@ -0,0 +1,13 @@ +// +// NEPacketTunnelFlow+OpenVPN.swift +// OpenVPN iOS Client +// +// Created by Sergey Abramchuk on 09.03.17. +// +// + +import Foundation +import NetworkExtension +import OpenVPNAdapter + +extension NEPacketTunnelFlow: OpenVPNAdapterPacketFlow { } diff --git a/OpenVPN Tunnel Provider/PacketTunnelProvider.swift b/OpenVPN Tunnel Provider/PacketTunnelProvider.swift index 7b5c971..cc34c7f 100644 --- a/OpenVPN Tunnel Provider/PacketTunnelProvider.swift +++ b/OpenVPN Tunnel Provider/PacketTunnelProvider.swift @@ -74,7 +74,7 @@ class PacketTunnelProvider: NEPacketTunnelProvider { extension PacketTunnelProvider: OpenVPNAdapterDelegate { - func configureTunnel(settings: NEPacketTunnelNetworkSettings, callback: @escaping (NEPacketTunnelFlow?) -> Void) { + func configureTunnel(settings: NEPacketTunnelNetworkSettings, callback: @escaping (OpenVPNAdapterPacketFlow?) -> Void) { setTunnelNetworkSettings(settings) { (error) in callback(error == nil ? self.packetFlow : nil) } @@ -85,7 +85,7 @@ extension PacketTunnelProvider: OpenVPNAdapterDelegate { } func handle(error: Error) { - + } }