sysmaster/backport-feature-devmaster-add-net_driver-builtin-to-be-compa.patch
2024-04-08 23:58:29 +08:00

130 lines
4.2 KiB
Diff

From 98a7de479aa6da2d499b893fb1b5e5bfc598ab40 Mon Sep 17 00:00:00 2001
From: chenjiayi <chenjiayi22@huawei.com>
Date: Fri, 26 Jan 2024 15:27:03 +0800
Subject: [PATCH] feature(devmaster): add net_driver builtin to be compatible
with systemd-udev 255
The net_driver builtin is added to be compatible with systemd-udev 255.
Otherwise devmaster would crash when encounterring net_driver builtin in udev rules.
---
exts/devmaster/src/lib/builtin/mod.rs | 12 ++++-
exts/devmaster/src/lib/builtin/net_driver.rs | 56 ++++++++++++++++++++
2 files changed, 66 insertions(+), 2 deletions(-)
create mode 100644 exts/devmaster/src/lib/builtin/net_driver.rs
diff --git a/exts/devmaster/src/lib/builtin/mod.rs b/exts/devmaster/src/lib/builtin/mod.rs
index 259ebd13..30ad9031 100644
--- a/exts/devmaster/src/lib/builtin/mod.rs
+++ b/exts/devmaster/src/lib/builtin/mod.rs
@@ -34,6 +34,7 @@ pub mod hwdb;
pub mod input_id;
pub mod keyboard;
pub mod kmod;
+pub mod net_driver;
pub mod net_id;
pub mod net_setup_link;
pub mod path_id;
@@ -108,8 +109,9 @@ pub enum BuiltinCommand {
PathId = 8,
Uaccess = 9,
UsbId = 10,
- Example = 11,
- Max = 12,
+ NetDriver = 11,
+ Example = 12,
+ Max = 13,
}
impl FromStr for BuiltinCommand {
@@ -135,6 +137,7 @@ impl FromStr for BuiltinCommand {
"path_id" => Ok(BuiltinCommand::PathId),
"uaccess" => Ok(BuiltinCommand::Uaccess),
"usb_id" => Ok(BuiltinCommand::UsbId),
+ "net_driver" => Ok(BuiltinCommand::NetDriver),
"example" => Ok(BuiltinCommand::Example),
_ => Err(Error::BuiltinCommandError {
msg: "invalid builtin command".to_string(),
@@ -157,6 +160,7 @@ impl Display for BuiltinCommand {
BuiltinCommand::PathId => "path_id",
BuiltinCommand::Uaccess => "uaccess",
BuiltinCommand::UsbId => "usb_id",
+ BuiltinCommand::NetDriver => "net_driver",
BuiltinCommand::Example => "example",
_ => "invalid",
};
@@ -190,6 +194,10 @@ impl BuiltinManager {
builtins.insert(BuiltinCommand::PathId, Box::new(path_id::PathId {}));
builtins.insert(BuiltinCommand::Uaccess, Box::new(uaccess::Uaccess {}));
builtins.insert(BuiltinCommand::UsbId, Box::new(usb_id::UsbId {}));
+ builtins.insert(
+ BuiltinCommand::NetDriver,
+ Box::new(net_driver::NetDriver {}),
+ );
builtins.insert(BuiltinCommand::Example, Box::new(example::Example {}));
BuiltinManager { builtins }
diff --git a/exts/devmaster/src/lib/builtin/net_driver.rs b/exts/devmaster/src/lib/builtin/net_driver.rs
new file mode 100644
index 00000000..83e6398e
--- /dev/null
+++ b/exts/devmaster/src/lib/builtin/net_driver.rs
@@ -0,0 +1,56 @@
+// Copyright (c) 2022 Huawei Technologies Co.,Ltd. All rights reserved.
+//
+// sysMaster is licensed under Mulan PSL v2.
+// You can use this software according to the terms and conditions of the Mulan
+// PSL v2.
+// You may obtain a copy of Mulan PSL v2 at:
+// http://license.coscl.org.cn/MulanPSL2
+// THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY
+// KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
+// NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+// See the Mulan PSL v2 for more details.
+
+//! net_driver builtin
+//!
+//! Todo: compatible with udev
+
+use crate::builtin::Builtin;
+use crate::error::Result;
+use crate::rules::exec_unit::ExecuteUnit;
+
+/// btrfs builtin command
+pub struct NetDriver;
+
+impl Builtin for NetDriver {
+ /// builtin command
+ fn cmd(
+ &self,
+ _exec_unit: &ExecuteUnit,
+ _argc: i32,
+ _argv: Vec<String>,
+ _test: bool,
+ ) -> Result<bool> {
+ Ok(true)
+ }
+
+ /// builtin init function
+ fn init(&self) {}
+
+ /// builtin exit function
+ fn exit(&self) {}
+
+ /// check whether builtin command should reload
+ fn should_reload(&self) -> bool {
+ false
+ }
+
+ /// the help of builtin command
+ fn help(&self) -> String {
+ "detect network interface driver".to_string()
+ }
+
+ /// whether the builtin command can only run once
+ fn run_once(&self) -> bool {
+ false
+ }
+}
--
Gitee