pub struct NodeInfo {Show 17 fields
pub id: i64,
pub stable_id: StableId,
pub hostname: String,
pub capability_version: CapabilityVersion,
pub status: NodeStatus,
pub tailnet: Option<String>,
pub node_capabilities: BTreeMap<String, Vec<String>>,
pub tags: Vec<String>,
pub tailnet_address: TailnetAddress,
pub node_key: NodePublicKey,
pub node_key_expiry: Option<DateTime<Utc>>,
pub machine_key: Option<MachinePublicKey>,
pub disco_key: Option<DiscoPublicKey>,
pub tailnet_lock_key_signature: Option<Vec<u8>>,
pub accepted_routes: Vec<IpNet>,
pub underlay_addresses: Vec<SocketAddr>,
pub derp_region: Option<RegionId>,
}Expand description
A node in a tailnet.
Fields§
§id: i64The node’s id.
stable_id: StableIdThe node’s stable id.
hostname: StringThe node’s hostname.
capability_version: CapabilityVersionThe node’s capability version.
status: NodeStatusWhether the node is connected to the control plane or not. If NodeStatus::Unknown, the
control plane hasn’t told us yet.
This field does not indicate whether the node is reachable or visible from this device.
tailnet: Option<String>The tailnet this node belongs to.
node_capabilities: BTreeMap<String, Vec<String>>The node capabilities assigned to this node.
The tags assigned to this node.
tailnet_address: TailnetAddressThe address of the node in the tailnet.
node_key: NodePublicKeyThe node’s NodePublicKey.
node_key_expiry: Option<DateTime<Utc>>The node key’s expiration.
machine_key: Option<MachinePublicKey>The node’s MachinePublicKey, if known.
disco_key: Option<DiscoPublicKey>The node’s DiscoPublicKey, if known.
tailnet_lock_key_signature: Option<Vec<u8>>The signature of the node’s public key with the Tailnet Lock signing key, if Tailnet Lock is enabled and the signature is known.
accepted_routes: Vec<IpNet>The routes this node accepts traffic for.
underlay_addresses: Vec<SocketAddr>The underlay addresses this node is reachable on (Endpoints in Go).
derp_region: Option<RegionId>The DERP region for this node, if known.
Implementations§
Source§impl Node
impl Node
Sourcepub fn apply_update(&mut self, update: &NodeUpdate)
pub fn apply_update(&mut self, update: &NodeUpdate)
Apply the given partial update to this Node.
§Panics
If update.id does not match self.id. The caller must guarantee this method is only
called with NodeUpdates for this Node.
Sourcepub fn fqdn(&self, trailing_dot: bool) -> String
pub fn fqdn(&self, trailing_dot: bool) -> String
The fully-qualified domain name of the node.
This is a string of the form $HOST.$TAILNET_DOMAIN.. For tailnets controlled by
Tailscale’s control plane, this usually means $HOST.tail1234.ts.net.
The trailing_dot parameter specifies whether to include the trailing dot in the
fqdn. This is included by the definition of FQDN, and is the way the Go codebase
formats this field, but the parameter is included to allow turning it off for use
in contexts that expect it to be absent.
Sourcepub fn fqdn_opt(&self, trailing_dot: bool) -> Option<String>
pub fn fqdn_opt(&self, trailing_dot: bool) -> Option<String>
The fully-qualified domain name of the node, only returning Some if the tailnet
component is present.
See Node::fqdn.
Sourcepub fn matches_name(&self, name: &str) -> bool
pub fn matches_name(&self, name: &str) -> bool
Report whether this node matches the given name.
name is checked for equality with both this node’s bare hostname and its fqdn. A
trailing . may be present.
Trait Implementations§
impl Eq for Node
impl StructuralPartialEq for Node
Auto Trait Implementations§
impl Freeze for Node
impl RefUnwindSafe for Node
impl Send for Node
impl Sync for Node
impl Unpin for Node
impl UnsafeUnpin for Node
impl UnwindSafe for Node
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<A, T> DynMessage<A> for T
impl<A, T> DynMessage<A> for T
Source§fn handle_dyn<'a>(
self: Box<T>,
state: &'a mut A,
actor_ref: ActorRef<A>,
tx: Option<Sender<Result<Box<dyn Any + Send>, SendError<Box<dyn Any + Send>, Box<dyn Any + Send>>>>>,
stop: &'a mut bool,
) -> Pin<Box<dyn Future<Output = Result<(), Box<dyn ReplyError>>> + Send + 'a>>
fn handle_dyn<'a>( self: Box<T>, state: &'a mut A, actor_ref: ActorRef<A>, tx: Option<Sender<Result<Box<dyn Any + Send>, SendError<Box<dyn Any + Send>, Box<dyn Any + Send>>>>>, stop: &'a mut bool, ) -> Pin<Box<dyn Future<Output = Result<(), Box<dyn ReplyError>>> + Send + 'a>>
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
impl<T> ErasedDestructor for Twhere
T: 'static,
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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>
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>
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