treewide: Codify memory pinning
This enforces movability constraints.
Change-Id: I49dbd43a791c1d70eb7e97f30708231c053901d9
Signed-off-by: William A. Kennington III <wak@google.com>
diff --git a/src/network_manager.cpp b/src/network_manager.cpp
index 557e826..060242c 100644
--- a/src/network_manager.cpp
+++ b/src/network_manager.cpp
@@ -14,6 +14,7 @@
#include <phosphor-logging/elog-errors.hpp>
#include <phosphor-logging/log.hpp>
#include <sdbusplus/message.hpp>
+#include <stdplus/pinned.hpp>
#include <xyz/openbmc_project/Common/error.hpp>
constexpr char SYSTEMD_BUSNAME[] = "org.freedesktop.systemd1";
@@ -39,13 +40,14 @@
"link',interface='org.freedesktop.DBus.Properties',member='"
"PropertiesChanged',arg0='org.freedesktop.network1.Link',";
-Manager::Manager(sdbusplus::bus_t& bus, DelayedExecutor& reload,
- stdplus::zstring_view objPath,
+Manager::Manager(stdplus::PinnedRef<sdbusplus::bus_t> bus,
+ DelayedExecutor& reload, stdplus::zstring_view objPath,
const std::filesystem::path& confDir) :
ManagerIface(bus, objPath.c_str(), ManagerIface::action::defer_emit),
reload(reload), bus(bus), objPath(std::string(objPath)), confDir(confDir),
systemdNetworkdEnabledMatch(
- bus, enabledMatch, [&](sdbusplus::message_t& m) {
+ bus, enabledMatch,
+ [man = stdplus::PinnedRef(*this)](sdbusplus::message_t& m) {
std::string intf;
std::unordered_map<std::string, std::variant<std::string>> values;
try
@@ -64,7 +66,7 @@
}
auto ifidx = DecodeInt<unsigned, 10>{}(obj.substr(sep + 3));
const auto& state = std::get<std::string>(it->second);
- handleAdminState(state, ifidx);
+ man.get().handleAdminState(state, ifidx);
}
catch (const std::exception& e)
{
@@ -92,9 +94,10 @@
reloadPreHooks.clear();
try
{
- auto method = bus.new_method_call(NETWORKD_BUSNAME, NETWORKD_PATH,
- NETWORKD_INTERFACE, "Reload");
- bus.call_noreply(method);
+ bus.get()
+ .new_method_call(NETWORKD_BUSNAME, NETWORKD_PATH,
+ NETWORKD_INTERFACE, "Reload")
+ .call();
log<level::INFO>("Reloaded systemd-networkd");
}
catch (const sdbusplus::exception_t& ex)
@@ -122,11 +125,12 @@
links;
try
{
- auto rsp =
- bus.new_method_call("org.freedesktop.network1",
- "/org/freedesktop/network1",
- "org.freedesktop.network1.Manager", "ListLinks")
- .call();
+ auto rsp = bus.get()
+ .new_method_call("org.freedesktop.network1",
+ "/org/freedesktop/network1",
+ "org.freedesktop.network1.Manager",
+ "ListLinks")
+ .call();
rsp.read(links);
}
catch (const sdbusplus::exception::SdBusError& e)
@@ -138,8 +142,8 @@
unsigned ifidx = std::get<0>(link);
auto obj = fmt::format("/org/freedesktop/network1/link/_3{}", ifidx);
auto req =
- bus.new_method_call("org.freedesktop.network1", obj.c_str(),
- "org.freedesktop.DBus.Properties", "Get");
+ bus.get().new_method_call("org.freedesktop.network1", obj.c_str(),
+ "org.freedesktop.DBus.Properties", "Get");
req.append("org.freedesktop.network1.Link", "AdministrativeState");
auto rsp = req.call();
std::variant<std::string> val;