requester: check NetworkId when removing configs
Update removeConfigs() to match entries by both EID and NetworkId,
rather than EID alone.
Motivation:
Avoid deleting configurations belonging to endpoints on other networks
that share the same EID.
Change-Id: I9125993dd932405b439430976661c52e4b4b3c70
Signed-off-by: Eric Yang <eric.yang.wiwynn@gmail.com>
diff --git a/requester/mctp_endpoint_discovery.cpp b/requester/mctp_endpoint_discovery.cpp
index db764bf..cbcf333 100644
--- a/requester/mctp_endpoint_discovery.cpp
+++ b/requester/mctp_endpoint_discovery.cpp
@@ -498,11 +498,16 @@
{
for (const auto& mctpInfo : removedInfos)
{
- auto eidToRemove = std::get<eid>(mctpInfo);
- std::erase_if(configurations, [eidToRemove](const auto& config) {
- auto& [__, mctpInfo] = config;
- auto eidValue = std::get<eid>(mctpInfo);
- return eidValue == eidToRemove;
+ const auto eidToRemove = std::get<eid>(mctpInfo);
+ const auto netToRemove = std::get<NetworkId>(mctpInfo);
+
+ std::erase_if(configurations, [eidToRemove,
+ netToRemove](const auto& config) {
+ const auto& [__, mctpInfo] = config;
+ const auto eidValue = std::get<eid>(mctpInfo);
+ const auto netValue = std::get<NetworkId>(mctpInfo);
+
+ return eidValue == eidToRemove && netValue == netToRemove;
});
}
}