160 lines
5.7 KiB
Diff
160 lines
5.7 KiB
Diff
From 08f37b15eee2bf80604ff07860b6bec99b2d9407 Mon Sep 17 00:00:00 2001
|
|
From: chenjiayi <chenjiayi22@huawei.com>
|
|
Date: Tue, 15 Aug 2023 10:06:45 +0800
|
|
Subject: [PATCH 1/3] fix(devmaster): avoid coredump when rules directory is
|
|
empty
|
|
|
|
Also simplify configuration entry 'netif_cfg_d' into 'network_d'.
|
|
---
|
|
exts/devmaster/config/config.toml | 13 +++++++++++++
|
|
exts/devmaster/config/network.d/99-default.link | 5 +++++
|
|
exts/devmaster/config/rules.d/99-default.rules | 1 +
|
|
exts/devmaster/src/lib/config/devmaster_conf.rs | 11 +++++++----
|
|
exts/devmaster/src/lib/framework/devmaster.rs | 4 ++--
|
|
exts/devmaster/src/lib/rules/exec_mgr.rs | 5 +----
|
|
exts/devmaster/tests/network/99-default.link | 7 -------
|
|
7 files changed, 29 insertions(+), 17 deletions(-)
|
|
create mode 100644 exts/devmaster/config/config.toml
|
|
create mode 100644 exts/devmaster/config/network.d/99-default.link
|
|
create mode 100644 exts/devmaster/config/rules.d/99-default.rules
|
|
delete mode 100644 exts/devmaster/tests/network/99-default.link
|
|
|
|
diff --git a/exts/devmaster/config/config.toml b/exts/devmaster/config/config.toml
|
|
new file mode 100644
|
|
index 00000000..35e795c3
|
|
--- /dev/null
|
|
+++ b/exts/devmaster/config/config.toml
|
|
@@ -0,0 +1,13 @@
|
|
+# Default configuration of devmaster daemon.
|
|
+
|
|
+# Support 'info' and 'debug'.
|
|
+log_level = "info"
|
|
+
|
|
+# Support multiple rules directories.
|
|
+rules_d = ["/etc/devmaster/rules.d"]
|
|
+
|
|
+# Support multiple network interface configuration directories.
|
|
+network_d = ["/etc/devmaster/network.d"]
|
|
+
|
|
+# The default value is 3.
|
|
+max_workers = 3
|
|
diff --git a/exts/devmaster/config/network.d/99-default.link b/exts/devmaster/config/network.d/99-default.link
|
|
new file mode 100644
|
|
index 00000000..831f33ed
|
|
--- /dev/null
|
|
+++ b/exts/devmaster/config/network.d/99-default.link
|
|
@@ -0,0 +1,5 @@
|
|
+[Match]
|
|
+OriginalName = "*"
|
|
+
|
|
+[Link]
|
|
+NamePolicy = ["database", "onboard", "slot", "path"]
|
|
diff --git a/exts/devmaster/config/rules.d/99-default.rules b/exts/devmaster/config/rules.d/99-default.rules
|
|
new file mode 100644
|
|
index 00000000..78f59f0a
|
|
--- /dev/null
|
|
+++ b/exts/devmaster/config/rules.d/99-default.rules
|
|
@@ -0,0 +1 @@
|
|
+TAG+="devmaster"
|
|
\ No newline at end of file
|
|
diff --git a/exts/devmaster/src/lib/config/devmaster_conf.rs b/exts/devmaster/src/lib/config/devmaster_conf.rs
|
|
index b7fcd00d..645d2e67 100644
|
|
--- a/exts/devmaster/src/lib/config/devmaster_conf.rs
|
|
+++ b/exts/devmaster/src/lib/config/devmaster_conf.rs
|
|
@@ -44,7 +44,7 @@ pub(crate) struct DevmasterConfigData {
|
|
pub(crate) rules_d: Option<Vec<String>>,
|
|
pub(crate) max_workers: Option<u32>,
|
|
pub(crate) log_level: Option<String>,
|
|
- pub(crate) netif_cfg_d: Option<Vec<String>>,
|
|
+ pub(crate) network_d: Option<Vec<String>>,
|
|
}
|
|
|
|
impl DevmasterConfig {
|
|
@@ -101,7 +101,7 @@ impl DevmasterConfig {
|
|
pub fn get_netif_cfg_d(&self) -> Vec<String> {
|
|
self.inner
|
|
.borrow()
|
|
- .netif_cfg_d
|
|
+ .network_d
|
|
.clone()
|
|
.unwrap_or_else(|| DEFAULT_NETIF_CONFIG_DIRS.to_vec())
|
|
}
|
|
@@ -116,7 +116,7 @@ mod tests {
|
|
fn test_config() {
|
|
let config_s = "
|
|
rules_d = [\"/root/rules.d\"]
|
|
-netif_cfg_d = [\"/root/network\"]
|
|
+network_d = [\"/root/network.d\"]
|
|
";
|
|
fs::write("/tmp/test_config.toml", config_s).unwrap();
|
|
let config: DevmasterConfig = DevmasterConfig::new();
|
|
@@ -125,7 +125,10 @@ netif_cfg_d = [\"/root/network\"]
|
|
assert_eq!(config.get_rules_d(), vec!["/root/rules.d".to_string()]);
|
|
assert_eq!(config.get_max_workers(), 3);
|
|
assert_eq!(config.get_log_level(), LevelFilter::Info);
|
|
- assert_eq!(config.get_netif_cfg_d(), vec!["/root/network".to_string()]);
|
|
+ assert_eq!(
|
|
+ config.get_netif_cfg_d(),
|
|
+ vec!["/root/network.d".to_string()]
|
|
+ );
|
|
fs::remove_file("/tmp/test_config.toml").unwrap();
|
|
|
|
let default_conf = DevmasterConfig::new();
|
|
diff --git a/exts/devmaster/src/lib/framework/devmaster.rs b/exts/devmaster/src/lib/framework/devmaster.rs
|
|
index 2fc00313..b636dc1e 100644
|
|
--- a/exts/devmaster/src/lib/framework/devmaster.rs
|
|
+++ b/exts/devmaster/src/lib/framework/devmaster.rs
|
|
@@ -56,11 +56,11 @@ pub struct Cache {
|
|
|
|
impl Cache {
|
|
/// generate the shared cache
|
|
- pub fn new(rules_d: Vec<String>, netif_cfg_d: Vec<String>) -> Cache {
|
|
+ pub fn new(rules_d: Vec<String>, network_d: Vec<String>) -> Cache {
|
|
let rules = Rules::load_rules(rules_d, ResolveNameTime::Early);
|
|
|
|
let mut netif_cfg_ctx = NetifConfigCtx::new();
|
|
- netif_cfg_ctx.load(netif_cfg_d);
|
|
+ netif_cfg_ctx.load(network_d);
|
|
|
|
Cache {
|
|
rules,
|
|
diff --git a/exts/devmaster/src/lib/rules/exec_mgr.rs b/exts/devmaster/src/lib/rules/exec_mgr.rs
|
|
index 7a685e1b..18c38a18 100644
|
|
--- a/exts/devmaster/src/lib/rules/exec_mgr.rs
|
|
+++ b/exts/devmaster/src/lib/rules/exec_mgr.rs
|
|
@@ -219,7 +219,7 @@ impl ExecuteManager {
|
|
.files
|
|
.clone();
|
|
|
|
- loop {
|
|
+ while self.current_rule_file.is_some() {
|
|
let next_file = self
|
|
.current_rule_file
|
|
.clone()
|
|
@@ -233,9 +233,6 @@ impl ExecuteManager {
|
|
self.apply_rule_file()?;
|
|
|
|
self.current_rule_file = next_file;
|
|
- if self.current_rule_file.is_none() {
|
|
- break;
|
|
- }
|
|
}
|
|
|
|
Ok(())
|
|
diff --git a/exts/devmaster/tests/network/99-default.link b/exts/devmaster/tests/network/99-default.link
|
|
deleted file mode 100644
|
|
index 2c86cdb5..00000000
|
|
--- a/exts/devmaster/tests/network/99-default.link
|
|
+++ /dev/null
|
|
@@ -1,7 +0,0 @@
|
|
-[Match]
|
|
-OriginalName = "*"
|
|
-
|
|
-[Link]
|
|
-NamePolicy = ["keep", "kernel", "database", "onboard", "slot", "path"]
|
|
-AlternativeNamesPolicy = ["database", "onboard", "slot", "path"]
|
|
-MACAddressPolicy = "persistent"
|
|
--
|
|
2.33.0
|
|
|