support p2p-only mode (#1598)

This commit is contained in:
Sijie.Sun
2025-11-20 08:20:27 +08:00
committed by GitHub
parent 5b9ac65477
commit b44053f496
16 changed files with 165 additions and 3 deletions
+1
View File
@@ -35,6 +35,7 @@ pub fn gen_default_flags() -> Flags {
use_smoltcp: false,
relay_network_whitelist: "*".to_string(),
disable_p2p: false,
p2p_only: false,
relay_all_peer_rpc: false,
disable_udp_hole_punching: false,
multi_thread: true,
+12
View File
@@ -84,6 +84,7 @@ pub struct GlobalCtx {
enable_exit_node: bool,
proxy_forward_by_system: bool,
no_tun: bool,
p2p_only: bool,
feature_flags: AtomicCell<PeerFeatureFlag>,
@@ -138,6 +139,7 @@ impl GlobalCtx {
let enable_exit_node = config_fs.get_flags().enable_exit_node || cfg!(target_env = "ohos");
let proxy_forward_by_system = config_fs.get_flags().proxy_forward_by_system;
let no_tun = config_fs.get_flags().no_tun;
let p2p_only = config_fs.get_flags().p2p_only;
let feature_flags = PeerFeatureFlag {
kcp_input: !config_fs.get_flags().disable_kcp_input,
@@ -172,6 +174,7 @@ impl GlobalCtx {
enable_exit_node,
proxy_forward_by_system,
no_tun,
p2p_only,
feature_flags: AtomicCell::new(feature_flags),
quic_proxy_port: AtomicCell::new(None),
@@ -421,6 +424,15 @@ impl GlobalCtx {
.and_then(|acl_v1| acl_v1.group)
.map_or_else(Vec::new, |group| group.declares.to_vec())
}
pub fn p2p_only(&self) -> bool {
self.p2p_only
}
pub fn latency_first(&self) -> bool {
// NOTICE: p2p only is conflict with latency first
self.config.get_flags().latency_first && !self.p2p_only
}
}
#[cfg(test)]