diff --git a/OpenVPN Adapter.xcodeproj/project.pbxproj b/OpenVPN Adapter.xcodeproj/project.pbxproj index 88439b3..a3523c0 100644 --- a/OpenVPN Adapter.xcodeproj/project.pbxproj +++ b/OpenVPN Adapter.xcodeproj/project.pbxproj @@ -126,6 +126,10 @@ C9C1E4151FA475B7006ECA7D /* CustomFlow.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9C1E4131FA475B7006ECA7D /* CustomFlow.swift */; }; C9C2B2B7200CB42F00CA0FF3 /* OpenVPNAdapterPacketFlow.h in Headers */ = {isa = PBXBuildFile; fileRef = C9C2B2B6200CB42F00CA0FF3 /* OpenVPNAdapterPacketFlow.h */; settings = {ATTRIBUTES = (Public, ); }; }; C9C2B2B8200CB42F00CA0FF3 /* OpenVPNAdapterPacketFlow.h in Headers */ = {isa = PBXBuildFile; fileRef = C9C2B2B6200CB42F00CA0FF3 /* OpenVPNAdapterPacketFlow.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C9C2B2BB200CC42A00CA0FF3 /* OpenVPNPacket.h in Headers */ = {isa = PBXBuildFile; fileRef = C9C2B2B9200CC42A00CA0FF3 /* OpenVPNPacket.h */; }; + C9C2B2BC200CC42A00CA0FF3 /* OpenVPNPacket.h in Headers */ = {isa = PBXBuildFile; fileRef = C9C2B2B9200CC42A00CA0FF3 /* OpenVPNPacket.h */; }; + C9C2B2BD200CC42A00CA0FF3 /* OpenVPNPacket.m in Sources */ = {isa = PBXBuildFile; fileRef = C9C2B2BA200CC42A00CA0FF3 /* OpenVPNPacket.m */; }; + C9C2B2BE200CC42A00CA0FF3 /* OpenVPNPacket.m in Sources */ = {isa = PBXBuildFile; fileRef = C9C2B2BA200CC42A00CA0FF3 /* OpenVPNPacket.m */; }; C9CA4DD31F602F7B00C4F184 /* OpenVPNCertificate.h in Headers */ = {isa = PBXBuildFile; fileRef = C9CA4DD11F602F7B00C4F184 /* OpenVPNCertificate.h */; settings = {ATTRIBUTES = (Public, ); }; }; C9CA4DD41F602F7B00C4F184 /* OpenVPNCertificate.h in Headers */ = {isa = PBXBuildFile; fileRef = C9CA4DD11F602F7B00C4F184 /* OpenVPNCertificate.h */; settings = {ATTRIBUTES = (Public, ); }; }; C9CA4DD51F602F7B00C4F184 /* OpenVPNCertificate.m in Sources */ = {isa = PBXBuildFile; fileRef = C9CA4DD21F602F7B00C4F184 /* OpenVPNCertificate.m */; }; @@ -244,6 +248,8 @@ C9C1E40F1FA47117006ECA7D /* remote_vpn_server.ovpn */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = remote_vpn_server.ovpn; sourceTree = ""; }; C9C1E4131FA475B7006ECA7D /* CustomFlow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomFlow.swift; sourceTree = ""; }; C9C2B2B6200CB42F00CA0FF3 /* OpenVPNAdapterPacketFlow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OpenVPNAdapterPacketFlow.h; sourceTree = ""; }; + C9C2B2B9200CC42A00CA0FF3 /* OpenVPNPacket.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OpenVPNPacket.h; sourceTree = ""; }; + C9C2B2BA200CC42A00CA0FF3 /* OpenVPNPacket.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = OpenVPNPacket.m; sourceTree = ""; }; C9CA4DD11F602F7B00C4F184 /* OpenVPNCertificate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OpenVPNCertificate.h; sourceTree = ""; }; C9CA4DD21F602F7B00C4F184 /* OpenVPNCertificate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OpenVPNCertificate.m; sourceTree = ""; }; C9CA4DE01F603A5300C4F184 /* OpenVPNCertificateTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OpenVPNCertificateTests.swift; sourceTree = ""; }; @@ -440,6 +446,8 @@ ABD6EF071F8F8CCD007D3D90 /* OpenVPNNetworkSettingsBuilder.h */, ABD6EF081F8F8CCD007D3D90 /* OpenVPNNetworkSettingsBuilder.m */, C9C2B2B6200CB42F00CA0FF3 /* OpenVPNAdapterPacketFlow.h */, + C9C2B2B9200CC42A00CA0FF3 /* OpenVPNPacket.h */, + C9C2B2BA200CC42A00CA0FF3 /* OpenVPNPacket.m */, ABD6EF0E1F8F93AB007D3D90 /* OpenVPNPacketFlowBridge.h */, ABD6EF0F1F8F93AB007D3D90 /* OpenVPNPacketFlowBridge.mm */, ); @@ -605,6 +613,7 @@ ABD6EF091F8F8CCD007D3D90 /* OpenVPNNetworkSettingsBuilder.h in Headers */, C9657A611EB0D64E00EFF210 /* OpenVPNIPv6Preference.h in Headers */, C9657A671EB0D73200EFF210 /* OpenVPNMinTLSVersion.h in Headers */, + C9C2B2BB200CC42A00CA0FF3 /* OpenVPNPacket.h in Headers */, C93779D51EAE32670030A362 /* OpenVPNCredentials.h in Headers */, C9657A641EB0D6C200EFF210 /* OpenVPNCompressionMode.h in Headers */, C9FD921A1E9A667600374FC4 /* ovpncli.hpp in Headers */, @@ -650,6 +659,7 @@ ABD6EF0A1F8F8CCD007D3D90 /* OpenVPNNetworkSettingsBuilder.h in Headers */, C9657A621EB0D64E00EFF210 /* OpenVPNIPv6Preference.h in Headers */, C9657A681EB0D73200EFF210 /* OpenVPNMinTLSVersion.h in Headers */, + C9C2B2BC200CC42A00CA0FF3 /* OpenVPNPacket.h in Headers */, C93779D61EAE32670030A362 /* OpenVPNCredentials.h in Headers */, C9657A651EB0D6C200EFF210 /* OpenVPNCompressionMode.h in Headers */, C9D2ABEA1EA20F99007EDF9D /* ovpncli.hpp in Headers */, @@ -881,6 +891,7 @@ C9FD921B1E9A667600374FC4 /* ovpncli.cpp in Sources */, C9657A361EB0BA3900EFF210 /* OpenVPNInterfaceStats.mm in Sources */, C9657A211EB0ACAE00EFF210 /* OpenVPNConnectionInfo.mm in Sources */, + C9C2B2BD200CC42A00CA0FF3 /* OpenVPNPacket.m in Sources */, C93A4F621EE18009004DC561 /* OpenVPNError.m in Sources */, C93779D71EAE32670030A362 /* OpenVPNCredentials.mm in Sources */, C9B795601F1D16AA00CF35FE /* OpenVPNReachability.mm in Sources */, @@ -921,6 +932,7 @@ C9D2ABDE1EA20F99007EDF9D /* ovpncli.cpp in Sources */, C9657A371EB0BA3900EFF210 /* OpenVPNInterfaceStats.mm in Sources */, C9657A221EB0ACAE00EFF210 /* OpenVPNConnectionInfo.mm in Sources */, + C9C2B2BE200CC42A00CA0FF3 /* OpenVPNPacket.m in Sources */, C93A4F631EE18009004DC561 /* OpenVPNError.m in Sources */, C93779D81EAE32670030A362 /* OpenVPNCredentials.mm in Sources */, C9B795611F1D16AA00CF35FE /* OpenVPNReachability.mm in Sources */, diff --git a/OpenVPN Adapter/OpenVPNPacket.h b/OpenVPN Adapter/OpenVPNPacket.h new file mode 100644 index 0000000..9e423dd --- /dev/null +++ b/OpenVPN Adapter/OpenVPNPacket.h @@ -0,0 +1,22 @@ +// +// OpenVPNPacket.h +// OpenVPN Adapter +// +// Created by Sergey Abramchuk on 15.01.2018. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface OpenVPNPacket : NSObject + +@property (readonly, nonatomic) NSData *data; +@property (readonly, nonatomic) NSNumber *protocolFamily; + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithData:(NSData *)data protocolFamily:(NSNumber *)protocolFamily NS_DESIGNATED_INITIALIZER; + +@end + +NS_ASSUME_NONNULL_END diff --git a/OpenVPN Adapter/OpenVPNPacket.m b/OpenVPN Adapter/OpenVPNPacket.m new file mode 100644 index 0000000..99aee01 --- /dev/null +++ b/OpenVPN Adapter/OpenVPNPacket.m @@ -0,0 +1,20 @@ +// +// OpenVPNPacket.m +// OpenVPN Adapter +// +// Created by Sergey Abramchuk on 15.01.2018. +// + +#import "OpenVPNPacket.h" + +@implementation OpenVPNPacket + +- (instancetype)initWithData:(NSData *)data protocolFamily:(NSNumber *)protocolFamily { + if ((self = [super init])) { + _data = data; + _protocolFamily = protocolFamily; + } + return self; +} + +@end