Struct tor_netdoc::types::policy::PortPolicy
source · pub struct PortPolicy { /* private fields */ }
Expand description
A policy to match zero or more TCP/UDP ports.
These are used in Tor to summarize all policies in microdescriptors, and Ipv6 policies in router descriptors.
NOTE: If a port is listed as accepted, it doesn’t mean that the relay allows every address on that port. Instead, a port is listed if a relay will exit to most public addresses on that port. Therefore, unlike super::addrpolicy::AddrPolicy objects, these policies cannot tell you if a port is definitely allowed or rejected: only if it is probably allowed or rejected.
§Examples
use tor_netdoc::types::policy::PortPolicy;
let policy: PortPolicy = "accept 1-1023,8000-8999,60000-65535".parse().unwrap();
assert!(policy.allows_port(22));
assert!(policy.allows_port(8000));
assert!(! policy.allows_port(1024));
assert!(! policy.allows_port(9000));
Implementations§
source§impl PortPolicy
impl PortPolicy
sourcepub fn new_reject_all() -> Self
pub fn new_reject_all() -> Self
Return a new PortPolicy that rejects all ports.
sourcepub fn allows_port(&self, port: u16) -> bool
pub fn allows_port(&self, port: u16) -> bool
Return true iff port
is allowed by this policy.
sourcepub fn intern(self) -> Arc<Self>
pub fn intern(self) -> Arc<Self>
Replace this PortPolicy with an interned copy, to save memory.
sourcepub fn allows_some_port(&self) -> bool
pub fn allows_some_port(&self) -> bool
Return true if this policy allows any ports at all.
§Example
use tor_netdoc::types::policy::PortPolicy;
let policy: PortPolicy = "accept 22".parse().unwrap();
assert!(policy.allows_some_port());
let policy2: PortPolicy = "reject 1-65535".parse().unwrap();
assert!(! policy2.allows_some_port());
Trait Implementations§
source§impl Clone for PortPolicy
impl Clone for PortPolicy
source§fn clone(&self) -> PortPolicy
fn clone(&self) -> PortPolicy
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl Debug for PortPolicy
impl Debug for PortPolicy
source§impl Display for PortPolicy
impl Display for PortPolicy
source§impl FromStr for PortPolicy
impl FromStr for PortPolicy
§type Err = PolicyError
type Err = PolicyError
The associated error which can be returned from parsing.
source§impl Hash for PortPolicy
impl Hash for PortPolicy
source§impl PartialEq for PortPolicy
impl PartialEq for PortPolicy
source§fn eq(&self, other: &PortPolicy) -> bool
fn eq(&self, other: &PortPolicy) -> bool
This method tests for
self
and other
values to be equal, and is used
by ==
.impl Eq for PortPolicy
impl StructuralPartialEq for PortPolicy
Auto Trait Implementations§
impl Freeze for PortPolicy
impl RefUnwindSafe for PortPolicy
impl Send for PortPolicy
impl Sync for PortPolicy
impl Unpin for PortPolicy
impl UnwindSafe for PortPolicy
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Checks if this value is equivalent to the given key. Read more
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key
and return true
if they are equal.§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more