diff --git a/libmodprobe/include/modprobe/modprobe.h b/libmodprobe/include/modprobe/modprobe.h index 421d82644..333fc5506 100644 --- a/libmodprobe/include/modprobe/modprobe.h +++ b/libmodprobe/include/modprobe/modprobe.h @@ -26,7 +26,7 @@ class Modprobe { public: Modprobe(const std::vector&); - bool LoadListedModules(); + bool LoadListedModules(bool strict = true); bool LoadWithAliases(const std::string& module_name, bool strict, const std::string& parameters = ""); bool Remove(const std::string& module_name); diff --git a/libmodprobe/libmodprobe.cpp b/libmodprobe/libmodprobe.cpp index 3c78ec999..6b9107fd5 100644 --- a/libmodprobe/libmodprobe.cpp +++ b/libmodprobe/libmodprobe.cpp @@ -360,13 +360,15 @@ bool Modprobe::LoadWithAliases(const std::string& module_name, bool strict, return true; } -bool Modprobe::LoadListedModules() { +bool Modprobe::LoadListedModules(bool strict) { + auto ret = true; for (const auto& module : module_load_) { if (!LoadWithAliases(module, true)) { - return false; + ret = false; + if (strict) break; } } - return true; + return ret; } bool Modprobe::Remove(const std::string& module_name) {