ncsi: move ncsi operations to Interface class
The existing NCSI operations are quite Interface-specific (ie., rely on
netlink-specific constructs), so move these to methods on the Interface
class.
We'll add alternative implementations in a future change.
Change-Id: I3ea5fcd64969a2c164503057e35881010ad141a0
Signed-off-by: Jeremy Kerr <jk@codeconstruct.com.au>
diff --git a/src/ncsi_util.cpp b/src/ncsi_util.cpp
index 3eb73ad..a8cfbb2 100644
--- a/src/ncsi_util.cpp
+++ b/src/ncsi_util.cpp
@@ -425,87 +425,84 @@
return std::to_string(interface.ifindex);
}
-int sendOemCommand(Interface& interface, int package, int channel,
- int operation, std::span<const unsigned char> payload)
+int Interface::sendOemCommand(int package, int channel, int operation,
+ std::span<const unsigned char> payload)
{
lg2::debug("Send OEM Command, CHANNEL : {CHANNEL} , PACKAGE : {PACKAGE}, "
"INTERFACE: {INTERFACE}",
"CHANNEL", lg2::hex, channel, "PACKAGE", lg2::hex, package,
- "INTERFACE", interface);
+ "INTERFACE", this);
if (!payload.empty())
{
lg2::debug("Payload: {PAYLOAD}", "PAYLOAD", toHexStr(payload));
}
return internal::applyCmd(
- interface,
+ *this,
internal::Command(ncsi_nl_commands::NCSI_CMD_SEND_CMD, operation,
payload),
package, channel, NONE, internal::sendCallBack);
}
-int setChannel(Interface& interface, int package, int channel)
+int Interface::setChannel(int package, int channel)
{
lg2::debug("Set CHANNEL : {CHANNEL} , PACKAGE : {PACKAGE}, INTERFACE : "
"{INTERFACE}",
"CHANNEL", lg2::hex, channel, "PACKAGE", lg2::hex, package,
- "INTERFACE", interface);
+ "INTERFACE", this);
return internal::applyCmd(
- interface, internal::Command(ncsi_nl_commands::NCSI_CMD_SET_INTERFACE),
+ *this, internal::Command(ncsi_nl_commands::NCSI_CMD_SET_INTERFACE),
package, channel);
}
-int clearInterface(Interface& interface)
+int Interface::clearInterface()
{
- lg2::debug("ClearInterface , INTERFACE : {INTERFACE}", "INTERFACE",
- interface);
+ lg2::debug("ClearInterface , INTERFACE : {INTERFACE}", "INTERFACE", this);
return internal::applyCmd(
- interface,
- internal::Command(ncsi_nl_commands::NCSI_CMD_CLEAR_INTERFACE));
+ *this, internal::Command(ncsi_nl_commands::NCSI_CMD_CLEAR_INTERFACE));
}
-int getInfo(Interface& interface, int package)
+int Interface::getInfo(int package)
{
lg2::debug("Get Info , PACKAGE : {PACKAGE}, INTERFACE: {INTERFACE}",
- "PACKAGE", lg2::hex, package, "INTERFACE", interface);
+ "PACKAGE", lg2::hex, package, "INTERFACE", this);
if (package == DEFAULT_VALUE)
{
return internal::applyCmd(
- interface, internal::Command(ncsi_nl_commands::NCSI_CMD_PKG_INFO),
+ *this, internal::Command(ncsi_nl_commands::NCSI_CMD_PKG_INFO),
package, DEFAULT_VALUE, NLM_F_DUMP, internal::infoCallBack);
}
else
{
- return internal::applyCmd(interface,
- ncsi_nl_commands::NCSI_CMD_PKG_INFO, package,
- DEFAULT_VALUE, NONE, internal::infoCallBack);
+ return internal::applyCmd(*this, ncsi_nl_commands::NCSI_CMD_PKG_INFO,
+ package, DEFAULT_VALUE, NONE,
+ internal::infoCallBack);
}
}
-int setPackageMask(Interface& interface, unsigned int mask)
+int Interface::setPackageMask(unsigned int mask)
{
lg2::debug("Set Package Mask , INTERFACE: {INTERFACE} MASK: {MASK}",
- "INTERFACE", interface, "MASK", lg2::hex, mask);
+ "INTERFACE", this, "MASK", lg2::hex, mask);
auto payload = std::span<const unsigned char>(
reinterpret_cast<const unsigned char*>(&mask),
reinterpret_cast<const unsigned char*>(&mask) + sizeof(decltype(mask)));
return internal::applyCmd(
- interface,
- internal::Command(ncsi_nl_commands::NCSI_CMD_SET_PACKAGE_MASK, 0,
- payload));
+ *this, internal::Command(ncsi_nl_commands::NCSI_CMD_SET_PACKAGE_MASK, 0,
+ payload));
}
-int setChannelMask(Interface& interface, int package, unsigned int mask)
+int Interface::setChannelMask(int package, unsigned int mask)
{
lg2::debug(
"Set Channel Mask , INTERFACE: {INTERFACE}, PACKAGE : {PACKAGE} MASK: {MASK}",
- "INTERFACE", interface, "PACKAGE", lg2::hex, package, "MASK", lg2::hex,
+ "INTERFACE", this, "PACKAGE", lg2::hex, package, "MASK", lg2::hex,
mask);
auto payload = std::span<const unsigned char>(
reinterpret_cast<const unsigned char*>(&mask),
reinterpret_cast<const unsigned char*>(&mask) + sizeof(decltype(mask)));
return internal::applyCmd(
- interface,
+ *this,
internal::Command(ncsi_nl_commands::NCSI_CMD_SET_CHANNEL_MASK, 0,
payload),
package);