diff options
Diffstat (limited to 'src/platform/linux/nftables.rs')
| -rw-r--r-- | src/platform/linux/nftables.rs | 39 |
1 files changed, 0 insertions, 39 deletions
diff --git a/src/platform/linux/nftables.rs b/src/platform/linux/nftables.rs deleted file mode 100644 index 4809000..0000000 --- a/src/platform/linux/nftables.rs +++ /dev/null @@ -1,39 +0,0 @@ -// SPDX-FileCopyrightText: 2026 Dilluti0n <[email protected]> -// SPDX-License-Identifier: GPL-3.0-or-later - -use std::sync::atomic::Ordering; -use anyhow::Result; - -use crate::opt; -use super::{exec_process, INJECT_MARK, IS_U32_SUPPORTED}; - -const DPIBREAK_TABLE: &str = "dpibreak"; - -/// Apply nft rules with `nft_command() -f -`. -fn nft(rule: &str) -> Result<()> { - crate::info!("nft: {rule}"); - exec_process(&[opt::nft_command(), "-f", "-"], Some(rule)) -} - -pub fn install_nft_rules() -> Result<()> { - let queue_num = opt::queue_num(); - let rule = format!( - r#"add table inet {DPIBREAK_TABLE} -add chain inet {DPIBREAK_TABLE} OUTPUT {{ type filter hook output priority 0; policy accept; }} -add rule inet {DPIBREAK_TABLE} OUTPUT meta mark {INJECT_MARK} return -add rule inet {DPIBREAK_TABLE} OUTPUT tcp dport 443 @ih,0,8 0x16 @ih,40,8 0x01 queue num {queue_num} bypass"# - ); - nft(&rule)?; - - // clienthello filtered by nft - IS_U32_SUPPORTED.store(true, Ordering::Relaxed); - - Ok(()) -} - -pub fn cleanup_nftables_rules() -> Result<()> { - let rule = format!("delete table inet {DPIBREAK_TABLE}"); - nft(&rule)?; - - Ok(()) -} |
