upnpctrl: add command to show all existing port mappings
This can be useful for debugging purposes.
Change-Id: I9da11d20a7a8cd9f7d1eae9d4aee45281c5cd4ad
diff --git a/src/upnp/upnp_context.cpp b/src/upnp/upnp_context.cpp
index 78488dc..7ea3d83 100644
--- a/src/upnp/upnp_context.cpp
+++ b/src/upnp/upnp_context.cpp
@@ -459,6 +459,27 @@
}
}
+std::vector<IGDInfo>
+UPnPContext::getIgdsInfo() const
+{
+ std::vector<IGDInfo> igdInfoList;
+
+ std::lock_guard lk(mappingMutex_);
+ for (auto& igd : validIgdList_) {
+ auto protocol = protocolList_.at(igd->getProtocol());
+
+ IGDInfo info;
+ info.uid = igd->getUID();
+ info.localIp = igd->getLocalIp();
+ info.publicIp = igd->getPublicIp();
+ info.mappingInfoList = protocol->getMappingsInfo(igd);
+
+ igdInfoList.push_back(std::move(info));
+ }
+
+ return igdInfoList;
+}
+
uint16_t
UPnPContext::getAvailablePortNumber(PortType type)
{