From 7dda8a357865762017662eaec3f07b407a85dd98 Mon Sep 17 00:00:00 2001 From: chenjiayi Date: Sat, 5 Aug 2023 12:56:43 +0800 Subject: [PATCH 1/3] fix(devmaster): fix interruption on non-netif devices when processing add uevent Non-netif devices have no ifindex, which interrupts the latter rules processing. Thus if the device has no ifindex, skip to rename it. --- exts/devmaster/src/lib/rules/exec_unit.rs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/exts/devmaster/src/lib/rules/exec_unit.rs b/exts/devmaster/src/lib/rules/exec_unit.rs index 6bd12343..d3f72ca3 100644 --- a/exts/devmaster/src/lib/rules/exec_unit.rs +++ b/exts/devmaster/src/lib/rules/exec_unit.rs @@ -241,14 +241,23 @@ impl ExecuteUnitData { } fn rename_netif(&self) -> Result { + let ifindex = match self.device.borrow().get_ifindex().context(DeviceSnafu) { + Ok(ifindex) => ifindex, + Err(e) => { + if e.get_errno() == nix::Error::ENOENT { + return Ok(false); + } + + return Err(e); + } + }; + let rt = tokio::runtime::Runtime::new().unwrap(); if let Err(e) = rt.block_on(async { let (connection, handle, _) = new_connection().unwrap(); tokio::spawn(connection); - let ifindex = self.device.borrow().get_ifindex().context(DeviceSnafu)?; - set_link_name(handle, ifindex, self.name.clone()) .await .context(RtnetlinkSnafu) -- Gitee From d4c22fe40862babf38c5f9de4f053607b1da53e9 Mon Sep 17 00:00:00 2001 From: chenjiayi Date: Sat, 5 Aug 2023 13:47:36 +0800 Subject: [PATCH 2/3] fix(devmaster): delete the prefix backslash escaped symbol Keep consistent with udev. --- exts/devmaster/src/lib/rules/node.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/exts/devmaster/src/lib/rules/node.rs b/exts/devmaster/src/lib/rules/node.rs index c5fbff0f..9d66991c 100644 --- a/exts/devmaster/src/lib/rules/node.rs +++ b/exts/devmaster/src/lib/rules/node.rs @@ -379,7 +379,7 @@ pub(crate) fn get_prior_dir(symlink: &str) -> Result { Some(v) => v, }; - let name = match cano_link.strip_prefix("/dev") { + let name = match cano_link.strip_prefix("/dev/") { Some(s) => s, None => { return Err(Error::Nix { -- Gitee From d5b00aafbe8976bdcbac7e231b3605fcfed221c5 Mon Sep 17 00:00:00 2001 From: chenjiayi Date: Sun, 6 Aug 2023 11:27:49 +0800 Subject: [PATCH 3/3] fix(devmaster): fix incorrect hints when loading GOTO and LABEL rules --- exts/devmaster/src/lib/rules/rules_load.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/exts/devmaster/src/lib/rules/rules_load.rs b/exts/devmaster/src/lib/rules/rules_load.rs index d5bd8ebb..a5e42379 100644 --- a/exts/devmaster/src/lib/rules/rules_load.rs +++ b/exts/devmaster/src/lib/rules/rules_load.rs @@ -1660,7 +1660,7 @@ impl RuleToken { if op != OperatorType::Assign { return Err(Error::RulesLoadError { - msg: "Key 'GOTO' can not take assign operator.".to_string(), + msg: "Key 'GOTO' should take '=' operator.".to_string(), }); } @@ -1683,7 +1683,7 @@ impl RuleToken { if op != OperatorType::Assign { return Err(Error::RulesLoadError { - msg: "Key 'LABEL' can not take assign operator.".to_string(), + msg: "Key 'LABEL' should take '=' operator.".to_string(), }); } -- Gitee