From c825065b27ffb742f3e534e52ea9767152ad69cb Mon Sep 17 00:00:00 2001 From: Quanwei Zhou Date: Sun, 24 Jul 2022 20:44:24 +0800 Subject: [PATCH] runtime-rs: fix tc filter setup failed Fix bug using tc filter and protocol needs to use network byte order. Fixes: #4726 Signed-off-by: Quanwei Zhou --- .../src/network/network_model/tc_filter_model.rs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/runtime-rs/crates/resource/src/network/network_model/tc_filter_model.rs b/src/runtime-rs/crates/resource/src/network/network_model/tc_filter_model.rs index 6c014a7bc0..ff689b9b84 100644 --- a/src/runtime-rs/crates/resource/src/network/network_model/tc_filter_model.rs +++ b/src/runtime-rs/crates/resource/src/network/network_model/tc_filter_model.rs @@ -20,6 +20,7 @@ impl TcFilterModel { Ok(Self {}) } } + #[async_trait] impl NetworkModel for TcFilterModel { fn model_type(&self) -> NetworkModelType { @@ -60,22 +61,25 @@ impl NetworkModel for TcFilterModel { handle .traffic_filter(tap_index as i32) .add() - .protocol(0x0003) - .egress() + .parent(0xffff0000) + // get protocol with network byte order + .protocol(0x0003_u16.to_be()) .redirect(virt_index) .execute() .await - .context("add tap egress")?; + .context("add redirect for tap")?; handle .traffic_filter(virt_index as i32) .add() - .protocol(0x0003) - .egress() + .parent(0xffff0000) + // get protocol with network byte order + .protocol(0x0003_u16.to_be()) .redirect(tap_index) .execute() .await - .context("add virt egress")?; + .context("add redirect for virt")?; + Ok(()) }