#[repr(C)]pub struct NETunnelProviderProtocol { /* private fields */ }
Expand description
The NETunnelProviderProtocol class declares the programmatic interface for an object that contains NETunnelProvider-specific configuration settings.
Instances of this class are thread safe.
See also Apple’s documentation
Implementations§
Source§impl NETunnelProviderProtocol
impl NETunnelProviderProtocol
Sourcepub unsafe fn providerConfiguration(
&self,
) -> Option<Retained<NSDictionary<NSString, AnyObject>>>
pub unsafe fn providerConfiguration( &self, ) -> Option<Retained<NSDictionary<NSString, AnyObject>>>
A dictionary containing NETunnelProvider vendor-specific configuration parameters. This dictionary is passed as-is to NETunnelProviders when a tunnel is started.
Sourcepub unsafe fn setProviderConfiguration(
&self,
provider_configuration: Option<&NSDictionary<NSString, AnyObject>>,
)
pub unsafe fn setProviderConfiguration( &self, provider_configuration: Option<&NSDictionary<NSString, AnyObject>>, )
Setter for providerConfiguration
.
Sourcepub unsafe fn providerBundleIdentifier(&self) -> Option<Retained<NSString>>
pub unsafe fn providerBundleIdentifier(&self) -> Option<Retained<NSString>>
A string containing the bundle identifier of the NETunnelProvider to be used by this configuration.
Sourcepub unsafe fn setProviderBundleIdentifier(
&self,
provider_bundle_identifier: Option<&NSString>,
)
pub unsafe fn setProviderBundleIdentifier( &self, provider_bundle_identifier: Option<&NSString>, )
Setter for providerBundleIdentifier
.
Methods from Deref<Target = NEVPNProtocol>§
Sourcepub unsafe fn serverAddress(&self) -> Option<Retained<NSString>>
pub unsafe fn serverAddress(&self) -> Option<Retained<NSString>>
The VPN server. Depending on the protocol, may be an IP address, host name, or URL.
Sourcepub unsafe fn setServerAddress(&self, server_address: Option<&NSString>)
pub unsafe fn setServerAddress(&self, server_address: Option<&NSString>)
Setter for serverAddress
.
Sourcepub unsafe fn username(&self) -> Option<Retained<NSString>>
pub unsafe fn username(&self) -> Option<Retained<NSString>>
The username component of the VPN authentication credential.
Sourcepub unsafe fn setUsername(&self, username: Option<&NSString>)
pub unsafe fn setUsername(&self, username: Option<&NSString>)
Setter for username
.
Sourcepub unsafe fn passwordReference(&self) -> Option<Retained<NSData>>
pub unsafe fn passwordReference(&self) -> Option<Retained<NSData>>
The password component of the VPN authentication credential. The value is a persistent reference to a keychain item with the kSecClassGenericPassword class.
Sourcepub unsafe fn setPasswordReference(&self, password_reference: Option<&NSData>)
pub unsafe fn setPasswordReference(&self, password_reference: Option<&NSData>)
Setter for passwordReference
.
Sourcepub unsafe fn identityReference(&self) -> Option<Retained<NSData>>
pub unsafe fn identityReference(&self) -> Option<Retained<NSData>>
The certificate and private key component of the VPN authentication credential. The value is a persistent reference to a keychain item with the kSecClassIdentity class.
Sourcepub unsafe fn setIdentityReference(&self, identity_reference: Option<&NSData>)
pub unsafe fn setIdentityReference(&self, identity_reference: Option<&NSData>)
Setter for identityReference
.
Sourcepub unsafe fn identityData(&self) -> Option<Retained<NSData>>
pub unsafe fn identityData(&self) -> Option<Retained<NSData>>
The PKCS12 data for the VPN authentication identity. The value is a NSData in PKCS12 format.
Sourcepub unsafe fn setIdentityData(&self, identity_data: Option<&NSData>)
pub unsafe fn setIdentityData(&self, identity_data: Option<&NSData>)
Setter for identityData
.
Sourcepub unsafe fn identityDataPassword(&self) -> Option<Retained<NSString>>
pub unsafe fn identityDataPassword(&self) -> Option<Retained<NSString>>
The password to be used to decrypt the PKCS12 identity data.
Sourcepub unsafe fn setIdentityDataPassword(
&self,
identity_data_password: Option<&NSString>,
)
pub unsafe fn setIdentityDataPassword( &self, identity_data_password: Option<&NSString>, )
Setter for identityDataPassword
.
Sourcepub unsafe fn disconnectOnSleep(&self) -> bool
pub unsafe fn disconnectOnSleep(&self) -> bool
If YES, the VPN connection will be disconnected when the device goes to sleep. The default is NO.
Sourcepub unsafe fn setDisconnectOnSleep(&self, disconnect_on_sleep: bool)
pub unsafe fn setDisconnectOnSleep(&self, disconnect_on_sleep: bool)
Setter for disconnectOnSleep
.
Sourcepub unsafe fn proxySettings(&self) -> Option<Retained<NEProxySettings>>
pub unsafe fn proxySettings(&self) -> Option<Retained<NEProxySettings>>
An NEProxySettings object containing the proxy settings to use for connections routed through the tunnel.
Sourcepub unsafe fn setProxySettings(&self, proxy_settings: Option<&NEProxySettings>)
pub unsafe fn setProxySettings(&self, proxy_settings: Option<&NEProxySettings>)
Setter for proxySettings
.
Sourcepub unsafe fn includeAllNetworks(&self) -> bool
pub unsafe fn includeAllNetworks(&self) -> bool
If this property is set to YES then all network traffic is routed through the tunnel, with some exclusions. Several of the exclusions can be controlled with the excludeLocalNetworks, excludeCellularServices, excludeAPNs and excludeDeviceCommunication properties. See the documentation for those properties. The following traffic is always excluded from the tunnel:
- Traffic necessary for connecting and maintaining the device’s network connection, such as DHCP.
- Traffic necessary for connecting to captive networks.
- Certain cellular services traffic that is not routable over the internet and is instead directly routed to the cellular network. See the excludeCellularServices property for more details.
- Network communication with a companion device such as a watchOS device. The default value of this property is NO.
Sourcepub unsafe fn setIncludeAllNetworks(&self, include_all_networks: bool)
pub unsafe fn setIncludeAllNetworks(&self, include_all_networks: bool)
Setter for includeAllNetworks
.
Sourcepub unsafe fn excludeLocalNetworks(&self) -> bool
pub unsafe fn excludeLocalNetworks(&self) -> bool
If YES, all traffic destined for local networks will be excluded from the tunnel. The default is NO on macOS and YES on iOS.
Sourcepub unsafe fn setExcludeLocalNetworks(&self, exclude_local_networks: bool)
pub unsafe fn setExcludeLocalNetworks(&self, exclude_local_networks: bool)
Setter for excludeLocalNetworks
.
Sourcepub unsafe fn excludeCellularServices(&self) -> bool
pub unsafe fn excludeCellularServices(&self) -> bool
If includeAllNetworks is set to YES and this property is set to YES, then internet-routable network traffic for cellular services (VoLTE, Wi-Fi Calling, IMS, MMS, Visual Voicemail, etc.) is excluded from the tunnel. Note that some cellular carriers route cellular services traffic directly to the carrier network, bypassing the internet. Such cellular services traffic is always excluded from the tunnel. The default value of this property is YES.
Sourcepub unsafe fn setExcludeCellularServices(&self, exclude_cellular_services: bool)
pub unsafe fn setExcludeCellularServices(&self, exclude_cellular_services: bool)
Setter for excludeCellularServices
.
Sourcepub unsafe fn excludeAPNs(&self) -> bool
pub unsafe fn excludeAPNs(&self) -> bool
If includeAllNetworks is set to YES and this property is set to YES, then network traffic for the Apple Push Notification service (APNs) is excluded from the tunnel. The default value of this property is YES.
Sourcepub unsafe fn setExcludeAPNs(&self, exclude_ap_ns: bool)
pub unsafe fn setExcludeAPNs(&self, exclude_ap_ns: bool)
Setter for excludeAPNs
.
Sourcepub unsafe fn excludeDeviceCommunication(&self) -> bool
pub unsafe fn excludeDeviceCommunication(&self) -> bool
If includeAllNetworks is set to YES and this property is set to YES, then network traffic used for communicating with devices connected via USB or Wi-Fi is excluded from the tunnel. For example, Xcode uses a network tunnel to communicate with connected development devices like iPhone, iPad and TV. The default value of this property is YES.
Sourcepub unsafe fn setExcludeDeviceCommunication(
&self,
exclude_device_communication: bool,
)
pub unsafe fn setExcludeDeviceCommunication( &self, exclude_device_communication: bool, )
Setter for excludeDeviceCommunication
.
Sourcepub unsafe fn enforceRoutes(&self) -> bool
pub unsafe fn enforceRoutes(&self) -> bool
If YES, route rules for this tunnel will take precendence over any locally-defined routes. The default is NO.
Sourcepub unsafe fn setEnforceRoutes(&self, enforce_routes: bool)
pub unsafe fn setEnforceRoutes(&self, enforce_routes: bool)
Setter for enforceRoutes
.
Sourcepub unsafe fn sliceUUID(&self) -> Option<Retained<NSString>>
pub unsafe fn sliceUUID(&self) -> Option<Retained<NSString>>
Identification string of the associated Cellular slice. If present, VPN tunnel will be scoped to the associated Cellular slice whenever slice is active. Otherwise, VPN tunnel will fallback onto the primary interface.
Sourcepub unsafe fn setSliceUUID(&self, slice_uuid: Option<&NSString>)
pub unsafe fn setSliceUUID(&self, slice_uuid: Option<&NSString>)
Setter for sliceUUID
.
Methods from Deref<Target = NSObject>§
Sourcepub fn doesNotRecognizeSelector(&self, sel: Sel) -> !
pub fn doesNotRecognizeSelector(&self, sel: Sel) -> !
Handle messages the object doesn’t recognize.
See Apple’s documentation for details.
Methods from Deref<Target = AnyObject>§
Sourcepub fn class(&self) -> &'static AnyClass
pub fn class(&self) -> &'static AnyClass
Dynamically find the class of this object.
§Panics
May panic if the object is invalid (which may be the case for objects
returned from unavailable init
/new
methods).
§Example
Check that an instance of NSObject
has the precise class NSObject
.
use objc2::ClassType;
use objc2::runtime::NSObject;
let obj = NSObject::new();
assert_eq!(obj.class(), NSObject::class());
Sourcepub unsafe fn get_ivar<T>(&self, name: &str) -> &Twhere
T: Encode,
👎Deprecated: this is difficult to use correctly, use Ivar::load
instead.
pub unsafe fn get_ivar<T>(&self, name: &str) -> &Twhere
T: Encode,
Ivar::load
instead.Use Ivar::load
instead.
§Safety
The object must have an instance variable with the given name, and it
must be of type T
.
See Ivar::load_ptr
for details surrounding this.
Sourcepub fn downcast_ref<T>(&self) -> Option<&T>where
T: DowncastTarget,
pub fn downcast_ref<T>(&self) -> Option<&T>where
T: DowncastTarget,
Attempt to downcast the object to a class of type T
.
This is the reference-variant. Use Retained::downcast
if you want
to convert a retained object to another type.
§Mutable classes
Some classes have immutable and mutable variants, such as NSString
and NSMutableString
.
When some Objective-C API signature says it gives you an immutable class, it generally expects you to not mutate that, even though it may technically be mutable “under the hood”.
So using this method to convert a NSString
to a NSMutableString
,
while not unsound, is generally frowned upon unless you created the
string yourself, or the API explicitly documents the string to be
mutable.
See Apple’s documentation on mutability and on
isKindOfClass:
for more details.
§Generic classes
Objective-C generics are called “lightweight generics”, and that’s because they aren’t exposed in the runtime. This makes it impossible to safely downcast to generic collections, so this is disallowed by this method.
You can, however, safely downcast to generic collections where all the
type-parameters are AnyObject
.
§Panics
This works internally by calling isKindOfClass:
. That means that the
object must have the instance method of that name, and an exception
will be thrown (if CoreFoundation is linked) or the process will abort
if that is not the case. In the vast majority of cases, you don’t need
to worry about this, since both root objects NSObject
and
NSProxy
implement this method.
§Examples
Cast an NSString
back and forth from NSObject
.
use objc2::rc::Retained;
use objc2_foundation::{NSObject, NSString};
let obj: Retained<NSObject> = NSString::new().into_super();
let string = obj.downcast_ref::<NSString>().unwrap();
// Or with `downcast`, if we do not need the object afterwards
let string = obj.downcast::<NSString>().unwrap();
Try (and fail) to cast an NSObject
to an NSString
.
use objc2_foundation::{NSObject, NSString};
let obj = NSObject::new();
assert!(obj.downcast_ref::<NSString>().is_none());
Try to cast to an array of strings.
use objc2_foundation::{NSArray, NSObject, NSString};
let arr = NSArray::from_retained_slice(&[NSObject::new()]);
// This is invalid and doesn't type check.
let arr = arr.downcast_ref::<NSArray<NSString>>();
This fails to compile, since it would require enumerating over the array to ensure that each element is of the desired type, which is a performance pitfall.
Downcast when processing each element instead.
use objc2_foundation::{NSArray, NSObject, NSString};
let arr = NSArray::from_retained_slice(&[NSObject::new()]);
for elem in arr {
if let Some(data) = elem.downcast_ref::<NSString>() {
// handle `data`
}
}
Trait Implementations§
Source§impl AsRef<AnyObject> for NETunnelProviderProtocol
impl AsRef<AnyObject> for NETunnelProviderProtocol
Source§impl AsRef<NEVPNProtocol> for NETunnelProviderProtocol
impl AsRef<NEVPNProtocol> for NETunnelProviderProtocol
Source§fn as_ref(&self) -> &NEVPNProtocol
fn as_ref(&self) -> &NEVPNProtocol
Source§impl AsRef<NSObject> for NETunnelProviderProtocol
impl AsRef<NSObject> for NETunnelProviderProtocol
Source§impl Borrow<AnyObject> for NETunnelProviderProtocol
impl Borrow<AnyObject> for NETunnelProviderProtocol
Source§impl Borrow<NEVPNProtocol> for NETunnelProviderProtocol
impl Borrow<NEVPNProtocol> for NETunnelProviderProtocol
Source§fn borrow(&self) -> &NEVPNProtocol
fn borrow(&self) -> &NEVPNProtocol
Source§impl Borrow<NSObject> for NETunnelProviderProtocol
impl Borrow<NSObject> for NETunnelProviderProtocol
Source§impl ClassType for NETunnelProviderProtocol
impl ClassType for NETunnelProviderProtocol
Source§const NAME: &'static str = "NETunnelProviderProtocol"
const NAME: &'static str = "NETunnelProviderProtocol"
Source§type Super = NEVPNProtocol
type Super = NEVPNProtocol
Source§type ThreadKind = <<NETunnelProviderProtocol as ClassType>::Super as ClassType>::ThreadKind
type ThreadKind = <<NETunnelProviderProtocol as ClassType>::Super as ClassType>::ThreadKind
Source§impl CopyingHelper for NETunnelProviderProtocol
impl CopyingHelper for NETunnelProviderProtocol
Source§type Result = NETunnelProviderProtocol
type Result = NETunnelProviderProtocol
Self
if the type has no
immutable counterpart. Read moreSource§impl Debug for NETunnelProviderProtocol
impl Debug for NETunnelProviderProtocol
Source§impl Deref for NETunnelProviderProtocol
impl Deref for NETunnelProviderProtocol
Source§impl Hash for NETunnelProviderProtocol
impl Hash for NETunnelProviderProtocol
Source§impl Message for NETunnelProviderProtocol
impl Message for NETunnelProviderProtocol
Source§impl NSCopying for NETunnelProviderProtocol
impl NSCopying for NETunnelProviderProtocol
Source§impl NSObjectProtocol for NETunnelProviderProtocol
impl NSObjectProtocol for NETunnelProviderProtocol
Source§fn isEqual(&self, other: Option<&AnyObject>) -> bool
fn isEqual(&self, other: Option<&AnyObject>) -> bool
Source§fn hash(&self) -> usize
fn hash(&self) -> usize
Source§fn isKindOfClass(&self, cls: &AnyClass) -> bool
fn isKindOfClass(&self, cls: &AnyClass) -> bool
Source§fn is_kind_of<T>(&self) -> bool
fn is_kind_of<T>(&self) -> bool
isKindOfClass
directly, or cast your objects with AnyObject::downcast_ref