fips_core/node/
session_access_impl.rs1use super::*;
2
3impl Node {
4 #[cfg(test)]
9 pub(crate) fn disable_discovery_forward_rate_limit(&mut self) {
10 self.discovery_forward_limiter
11 .set_interval(std::time::Duration::ZERO);
12 }
13
14 #[cfg(test)]
15 pub(crate) fn get_session(&self, remote: &NodeAddr) -> Option<&SessionEntry> {
16 self.sessions.get(remote)
17 }
18
19 #[cfg(test)]
21 pub(crate) fn get_session_mut(&mut self, remote: &NodeAddr) -> Option<&mut SessionEntry> {
22 self.sessions.get_mut(remote)
23 }
24
25 #[cfg(test)]
27 pub(crate) fn remove_session(&mut self, remote: &NodeAddr) -> Option<SessionEntry> {
28 self.sessions.remove(remote)
29 }
30
31 #[cfg(test)]
33 pub(crate) fn path_mtu_lookup_get(&self, fips_addr: &crate::FipsAddress) -> Option<u16> {
34 self.path_mtu_lookup
35 .read()
36 .ok()
37 .and_then(|map| map.get(fips_addr).copied())
38 }
39
40 #[cfg(test)]
42 pub(crate) fn path_mtu_lookup_insert(&self, fips_addr: crate::FipsAddress, mtu: u16) {
43 if let Ok(mut map) = self.path_mtu_lookup.write() {
44 map.insert(fips_addr, mtu);
45 }
46 }
47
48 pub fn session_count(&self) -> usize {
50 self.sessions.len()
51 }
52
53 pub(crate) fn session_entries(&self) -> impl Iterator<Item = (&NodeAddr, &SessionEntry)> {
55 self.sessions.iter()
56 }
57
58 pub(crate) fn register_identity(
62 &mut self,
63 node_addr: NodeAddr,
64 pubkey: secp256k1::PublicKey,
65 ) -> bool {
66 self.identity_cache.register(
70 node_addr,
71 pubkey,
72 Self::now_ms(),
73 self.config.node.cache.identity_size,
74 )
75 }
76
77 pub(crate) fn lookup_by_fips_prefix(
79 &mut self,
80 prefix: &[u8; 15],
81 ) -> Option<(NodeAddr, secp256k1::PublicKey)> {
82 self.identity_cache.lookup_by_prefix(prefix, Self::now_ms())
83 }
84
85 pub(crate) fn has_cached_identity(&self, addr: &NodeAddr) -> bool {
87 self.identity_cache.has_prefix_for(addr)
88 }
89
90 pub fn identity_cache_len(&self) -> usize {
92 self.identity_cache.len()
93 }
94
95 pub fn identity_cache_iter(
100 &self,
101 ) -> impl Iterator<Item = (&NodeAddr, &secp256k1::PublicKey, u64)> {
102 self.identity_cache.iter()
103 }
104
105 pub fn identity_cache_max(&self) -> usize {
107 self.config.node.cache.identity_size
108 }
109
110 pub fn pending_lookup_count(&self) -> usize {
112 self.pending_lookups.len()
113 }
114
115 pub fn pending_lookups_iter(
117 &self,
118 ) -> impl Iterator<Item = (&NodeAddr, &handlers::discovery::PendingLookup)> {
119 self.pending_lookups.iter()
120 }
121
122 pub fn recent_request_count(&self) -> usize {
124 self.recent_requests.len()
125 }
126
127 pub fn pending_tun_destinations(&self) -> usize {
129 self.pending_session_traffic.tun_destination_count()
130 }
131
132 pub fn pending_tun_total_packets(&self) -> usize {
134 self.pending_session_traffic.tun_packet_count()
135 }
136
137 pub fn retry_state_iter(&self) -> impl Iterator<Item = (&NodeAddr, &retry::RetryState)> {
139 self.retry_pending.iter()
140 }
141}