Skip to content

RDK-61444 : Network Manager Plugin to support Scan Specific SSID#306

Open
jincysam87 wants to merge 55 commits into
rdkcentral:developfrom
jincysam87:feature/RDK-61444-1
Open

RDK-61444 : Network Manager Plugin to support Scan Specific SSID#306
jincysam87 wants to merge 55 commits into
rdkcentral:developfrom
jincysam87:feature/RDK-61444-1

Conversation

@jincysam87
Copy link
Copy Markdown
Contributor

Reason for change: Support to scan multiple SSIDs
Test Procedure: Test wifi scan API with multiple SSIDs
Risks: Low
Signed-off-by: jincysaramma_sam@comcast.com

Copilot AI review requested due to automatic review settings May 8, 2026 15:59
@jincysam87 jincysam87 requested a review from a team as a code owner May 8, 2026 15:59
@rdkcmf-jenkins
Copy link
Copy Markdown
Contributor

b'## Blackduck scan failure details

Summary: 0 violations, 0 files pending approval, 1 file pending identification.

  • Protex Server Path: /home/blackduck/github/networkmanager/306/rdkcentral/networkmanager

  • Commit: 3a19acc

Report detail: gist'

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the GNOME NetworkManager WiFi scan path to support scanning with multiple SSID filters (instead of a single optional SSID string), aligning the plugin with the requirement to “scan multiple SSIDs”.

Changes:

  • Updated wifiScanRequest API to accept a std::vector<std::string> of SSIDs to filter.
  • Built a GVariant aay SSID list for nm_device_wifi_request_scan_options_async() when filters are provided; otherwise falls back to a normal scan.
  • Updated the GNOME proxy to pass the SSID filter list through to the WiFi manager.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 5 comments.

File Description
plugin/gnome/NetworkManagerGnomeWIFI.h Changes wifiScanRequest signature to take a vector of SSIDs.
plugin/gnome/NetworkManagerGnomeWIFI.cpp Implements building a multi-SSID scan options payload and triggers filtered vs unfiltered scan.
plugin/gnome/NetworkManagerGnomeProxy.cpp Passes the SSID filter list to the updated scan request API.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread plugin/gnome/NetworkManagerGnomeWIFI.h Outdated
bool wifiConnectedSSIDInfo(Exchange::INetworkManager::WiFiSSIDInfo &ssidinfo);
bool wifiConnect(const Exchange::INetworkManager::WiFiConnectTo &ssidInfo);
bool wifiScanRequest(std::string ssidReq = "");
bool wifiScanRequest(std::vector<std::string> ssidsToFilter = {});
Comment thread plugin/gnome/NetworkManagerGnomeWIFI.cpp Outdated
if(!ssidsToFilter.empty())
{
NMLOG_INFO("starting wifi scanning .. %s", ssidReq.c_str());
NMLOG_INFO("Starting wifi scanning for %d SSIDs:", ssidsToFilter.size());
Comment thread plugin/gnome/NetworkManagerGnomeWIFI.cpp
Comment thread plugin/gnome/NetworkManagerGnomeProxy.cpp
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings May 8, 2026 16:05
@rdkcmf-jenkins
Copy link
Copy Markdown
Contributor

b'## Blackduck scan failure details

Summary: 0 violations, 0 files pending approval, 1 file pending identification.

  • Protex Server Path: /home/blackduck/github/networkmanager/306/rdkcentral/networkmanager

  • Commit: ec5d3a2

Report detail: gist'

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated 4 comments.

Comment thread plugin/gnome/NetworkManagerGnomeWIFI.h Outdated
Comment thread plugin/gnome/NetworkManagerGnomeWIFI.h
Comment thread plugin/gnome/NetworkManagerGnomeWIFI.h Outdated
bool wifiConnectedSSIDInfo(Exchange::INetworkManager::WiFiSSIDInfo &ssidinfo);
bool wifiConnect(const Exchange::INetworkManager::WiFiConnectTo &ssidInfo);
bool wifiScanRequest(std::string ssidReq = "");
bool wifiScanRequest(std::vector<std::string> ssidsToFilter = {});
if(!ssidsToFilter.empty())
{
NMLOG_INFO("starting wifi scanning .. %s", ssidReq.c_str());
NMLOG_INFO("Starting wifi scanning for %d SSIDs:", ssidsToFilter.size());
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings May 8, 2026 16:13
@rdkcmf-jenkins
Copy link
Copy Markdown
Contributor

b'## Blackduck scan failure details

Summary: 0 violations, 0 files pending approval, 1 file pending identification.

  • Protex Server Path: /home/blackduck/github/networkmanager/306/rdkcentral/networkmanager

  • Commit: 3aba5bb

Report detail: gist'

@rdkcmf-jenkins
Copy link
Copy Markdown
Contributor

b'## Blackduck scan failure details

Summary: 0 violations, 0 files pending approval, 1 file pending identification.

  • Protex Server Path: /home/blackduck/github/networkmanager/306/rdkcentral/networkmanager

  • Commit: 7032c46

Report detail: gist'

Copilot AI review requested due to automatic review settings May 15, 2026 19:09
@rdkcmf-jenkins
Copy link
Copy Markdown
Contributor

b'## Blackduck scan failure details

Summary: 0 violations, 0 files pending approval, 1 file pending identification.

  • Protex Server Path: /home/blackduck/github/networkmanager/306/rdkcentral/networkmanager

  • Commit: 4bec02b

Report detail: gist'

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 13 out of 13 changed files in this pull request and generated 4 comments.

Comments suppressed due to low confidence (2)

plugin/NetworkManagerJsonRpc.cpp:678

  • Once frequencies is allocated here, later early returns in SSID parsing/iterator creation exit without releasing it. Add cleanup before those returns or manage the iterator with RAII so invalid SSID input or allocation failure does not leak the frequency iterator.
				if (!frequencyList.empty()) {
					using FrequencyIterator = RPC::IteratorType<Exchange::INetworkManager::IWIFIFrequencyIterator>;
					frequencies = Core::Service<FrequencyIterator>::Create<Exchange::INetworkManager::IWIFIFrequencyIterator>(frequencyList);
					if (frequencies == nullptr) {
						returnJson(rc);

legacy/LegacyWiFiManagerAPIs.cpp:671

  • After allocating frequencies here, the later ssids == nullptr early return exits without releasing it. Add cleanup before returning on subsequent errors or use RAII for the iterator to avoid leaking the frequency iterator.
			if (!frequencyList.empty()) {
				using FrequencyIterator = RPC::IteratorType<Exchange::INetworkManager::IWIFIFrequencyIterator>;
				frequencies = Core::Service<FrequencyIterator>::Create<Exchange::INetworkManager::IWIFIFrequencyIterator>(frequencyList);
				if (frequencies == nullptr) {
					returnJson(rc);

Comment thread plugin/NetworkManagerImplementation.h
Comment thread plugin/NetworkManagerJsonRpc.cpp Outdated
|| freq > static_cast<int>(Exchange::INetworkManager::WIFI_FREQUENCY_6_GHZ))
{
NMLOG_ERROR("Invalid frequency value in array");
return Core::ERROR_BAD_REQUEST;
Comment thread legacy/LegacyWiFiManagerAPIs.cpp Outdated
|| freq > static_cast<int>(Exchange::INetworkManager::WIFI_FREQUENCY_6_GHZ))
{
NMLOG_ERROR("Invalid frequency value in array");
return Core::ERROR_BAD_REQUEST;
Comment on lines +644 to +665
JsonArray array = parameters["frequency"].Array();
JsonArray::Iterator index(array.Elements());
while (index.Next() == true)
{
if (Core::JSON::Variant::type::NUMBER == index.Current().Content())
{
const int freq = index.Current().Number();
if (freq < static_cast<int>(Exchange::INetworkManager::WIFI_FREQUENCY_NONE)
|| freq > static_cast<int>(Exchange::INetworkManager::WIFI_FREQUENCY_6_GHZ))
{
NMLOG_ERROR("Invalid frequency value in array");
return Core::ERROR_BAD_REQUEST;
returnJson(rc);
}
frequencyList.push_back(static_cast<Exchange::INetworkManager::WIFIFrequency>(freq));
}
else
{
NMLOG_ERROR("Unexpected variant type in frequency array.");
returnJson(rc);
}
}
@rdkcmf-jenkins
Copy link
Copy Markdown
Contributor

b'## Blackduck scan failure details

Summary: 0 violations, 0 files pending approval, 1 file pending identification.

  • Protex Server Path: /home/blackduck/github/networkmanager/306/rdkcentral/networkmanager

  • Commit: 37087a4

Report detail: gist'

Copilot AI review requested due to automatic review settings May 15, 2026 19:18
@rdkcmf-jenkins
Copy link
Copy Markdown
Contributor

b'## Blackduck scan failure details

Summary: 0 violations, 0 files pending approval, 1 file pending identification.

  • Protex Server Path: /home/blackduck/github/networkmanager/306/rdkcentral/networkmanager

  • Commit: 80bef14

Report detail: gist'

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 13 out of 13 changed files in this pull request and generated 3 comments.

Comments suppressed due to low confidence (2)

plugin/NetworkManagerJsonRpc.cpp:676

  • After this iterator is created, the later ssids parsing paths can still return early on an invalid SSID entry or iterator allocation failure before reaching the cleanup block, which leaks frequencies. Route those errors through a common cleanup path (or parse/validate all inputs before creating the iterator) so malformed requests do not leak RPC iterator objects.
					frequencies = Core::Service<FrequencyIterator>::Create<Exchange::INetworkManager::IWIFIFrequencyIterator>(frequencyList);

legacy/LegacyWiFiManagerAPIs.cpp:669

  • After this iterator is created, the subsequent ssid iterator creation can return early on failure without releasing frequencies. Use a common cleanup path or delay iterator creation until all input parsing/allocation has succeeded to avoid leaking the frequency iterator on error.
				frequencies = Core::Service<FrequencyIterator>::Create<Exchange::INetworkManager::IWIFIFrequencyIterator>(frequencyList);

Comment thread interface/INetworkManager.h
Comment thread plugin/NetworkManagerJsonRpc.cpp
}
else
{
NMLOG_ERROR("Unexpected variant type in frequency array.");
@rdkcmf-jenkins
Copy link
Copy Markdown
Contributor

b'## Blackduck scan failure details

Summary: 0 violations, 0 files pending approval, 1 file pending identification.

  • Protex Server Path: /home/blackduck/github/networkmanager/306/rdkcentral/networkmanager

  • Commit: 19c5ff5

Report detail: gist'

@rdkcmf-jenkins
Copy link
Copy Markdown
Contributor

b'## Blackduck scan failure details

Summary: 0 violations, 0 files pending approval, 1 file pending identification.

  • Protex Server Path: /home/blackduck/github/networkmanager/306/rdkcentral/networkmanager

  • Commit: 2efeab8

Report detail: gist'

Copilot AI review requested due to automatic review settings May 15, 2026 19:45
@rdkcmf-jenkins
Copy link
Copy Markdown
Contributor

b'## Blackduck scan failure details

Summary: 0 violations, 0 files pending approval, 1 file pending identification.

  • Protex Server Path: /home/blackduck/github/networkmanager/306/rdkcentral/networkmanager

  • Commit: e088b9c

Report detail: gist'

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 14 out of 14 changed files in this pull request and generated 5 comments.

Comments suppressed due to low confidence (1)

plugin/NetworkManagerJsonRpc.cpp:670

  • The non-numeric frequency path also returns with rc left as Core::ERROR_GENERAL. This should be treated as a bad request, matching the out-of-range validation path, before returning the JSON-RPC response.
						NMLOG_ERROR("Unexpected variant type in frequency array.");
	                    returnJson(rc);

}

uint32_t NetworkManagerImplementation::StartWiFiScan(const string& frequency /* @in */, IStringIterator* const ssids/* @in */)
uint32_t NetworkManagerImplementation::StartWiFiScan(IWIFIFrequencyIterator* const frequencies /* @in */, IStringIterator* const ssids/* @in */)
Comment on lines +662 to +663
NMLOG_ERROR("Invalid frequency value in array");
returnJson(rc);
Comment on lines +667 to +670
if (!frequencyList.empty()) {
using FrequencyIterator = RPC::IteratorType<Exchange::INetworkManager::IWIFIFrequencyIterator>;
frequencies = Core::Service<FrequencyIterator>::Create<Exchange::INetworkManager::IWIFIFrequencyIterator>(frequencyList);
if (frequencies == nullptr) {
}
else
{
NMLOG_ERROR("Unexpected variant type in frequency array.");
Comment on lines +1706 to +1709
for (const auto& ssid : ssidsToFilter) {
g_variant_builder_add(&array_builder, "@ay",
g_variant_new_fixed_array(G_VARIANT_TYPE_BYTE, (const guint8 *) ssid.c_str(), ssid.length(), 1)
);
Copilot AI review requested due to automatic review settings May 15, 2026 19:57
@rdkcmf-jenkins
Copy link
Copy Markdown
Contributor

b'## Blackduck scan failure details

Summary: 0 violations, 0 files pending approval, 1 file pending identification.

  • Protex Server Path: /home/blackduck/github/networkmanager/306/rdkcentral/networkmanager

  • Commit: 66a899a

Report detail: gist'

@rdkcmf-jenkins
Copy link
Copy Markdown
Contributor

b'## Blackduck scan failure details

Summary: 0 violations, 0 files pending approval, 1 file pending identification.

  • Protex Server Path: /home/blackduck/github/networkmanager/306/rdkcentral/networkmanager

  • Commit: 66a899a

Report detail: gist'

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 14 out of 14 changed files in this pull request and generated 4 comments.

Comment on lines +988 to +990
if (frequencies && frequencies->Count() > 0)
{
m_filterfrequency = frequency;
NMLOG_DEBUG("Scan SSIDs of frequency %s", m_filterfrequency.c_str());
NMLOG_DEBUG("Scan SSIDs of frequency not supported");
Comment thread plugin/NetworkManagerJsonRpc.cpp
Comment thread legacy/LegacyWiFiManagerAPIs.cpp
Comment thread legacy/LegacyWiFiManagerAPIs.cpp
@rdkcmf-jenkins
Copy link
Copy Markdown
Contributor

b'## Blackduck scan failure details

Summary: 0 violations, 0 files pending approval, 1 file pending identification.

  • Protex Server Path: /home/blackduck/github/networkmanager/306/rdkcentral/networkmanager

  • Commit: 2f43fb2

Report detail: gist'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants