Skip to content

Commit 383b9d1

Browse files
committed
changing charspan to span<unsigned char> and addressing review comments
1 parent ee76ac9 commit 383b9d1

File tree

3 files changed

+24
-19
lines changed

3 files changed

+24
-19
lines changed

src/platform/silabs/ConnectivityManagerImpl_WIFI.cpp

+6-4
Original file line numberDiff line numberDiff line change
@@ -438,9 +438,13 @@ void ConnectivityManagerImpl::UpdateInternetConnectivityState(void)
438438
config.allowedQueuedPackets = 20; // Set the desired value
439439

440440
mEndpointQueueFilter.SetConfig(config);
441-
if (mEndpointQueueFilter.SetHostName(chip::CharSpan(macaddrString)) == CHIP_NO_ERROR)
441+
442+
// Convert macaddrString to Span<const unsigned char>
443+
Span<const unsigned char> macaddrSpan(reinterpret_cast<const unsigned char *>(macaddrString), sizeof(macaddrString));
444+
445+
if (mEndpointQueueFilter.SetHostName(macaddrSpan) == CHIP_NO_ERROR)
442446
{
443-
chip::Inet::UDPEndPointImpl::SetQueueFilter(&mEndpointQueueFilter);
447+
UDPEndPointImpl::SetQueueFilter(&mEndpointQueueFilter);
444448
}
445449
else
446450
{
@@ -449,8 +453,6 @@ void ConnectivityManagerImpl::UpdateInternetConnectivityState(void)
449453
}
450454
#endif // CHIP_CONFIG_ENABLE_ICD_SERVER
451455

452-
(void) PlatformMgr().PostEvent(&event);
453-
454456
if (haveIPv4Conn != hadIPv4Conn)
455457
{
456458
ChipLogProgress(DeviceLayer, "%s Internet connectivity %s", "IPv4", (haveIPv4Conn) ? "ESTABLISHED" : "LOST");

src/platform/silabs/EndpointQueueFilter.cpp

+16-13
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,18 @@
44
#include <string.h>
55
#include <support/CodeUtils.h>
66
#include <support/logging/CHIPLogging.h>
7+
#include <lib/core/CHIPSafeCasts.h>
8+
9+
using namespace ::chip;
10+
711
namespace chip {
812
namespace Inet {
913

1014
using FilterOutcome = EndpointQueueFilter::FilterOutcome;
1115

1216
namespace {
1317

14-
bool IsValidMdnsHostName(const CharSpan & hostName)
18+
bool IsValidMdnsHostName(const Span<const unsigned char> & hostName)
1519
{
1620
for (size_t i = 0; i < hostName.size(); ++i)
1721
{
@@ -30,7 +34,7 @@ bool IsMdnsBroadcastPacket(const IPPacketInfo & pktInfo, const System::PacketBuf
3034
VerifyOrReturnValue(pktInfo.DestPort == 5353, false);
3135
#if INET_CONFIG_ENABLE_IPV4
3236
ip_addr_t mdnsIPv4BroadcastAddr = IPADDR4_INIT_BYTES(224, 0, 0, 251);
33-
if (pktInfo.DestAddress == Inet::IPAddress(mdnsIPv4BroadcastAddr)
37+
if (pktInfo.DestAddress == Inet::IPAddress(mdnsIPv4BroadcastAddr))
3438
{
3539
return true;
3640
}
@@ -43,7 +47,7 @@ bool IsMdnsBroadcastPacket(const IPPacketInfo & pktInfo, const System::PacketBuf
4347
return false;
4448
}
4549

46-
bool PayloadContainsCaseInsensitive(const System::PacketBufferHandle & payload, const ByteSpan & pattern)
50+
bool PayloadContainsCaseInsensitive(const System::PacketBufferHandle & payload, const Span<const unsigned char> & pattern)
4751
{
4852
if (payload->TotalLength() == 0 || pattern.size() == 0)
4953
{
@@ -55,15 +59,14 @@ bool PayloadContainsCaseInsensitive(const System::PacketBufferHandle & payload,
5559
return false;
5660
}
5761

58-
CharSpan payloadView(reinterpret_cast<const char *>(payload->Start()), payload->TotalLength());
59-
CharSpan patternView(reinterpret_cast<const char *>(pattern.data()), pattern.size());
62+
Span<const unsigned char> payloadView(payload->Start(), payload->TotalLength());
6063

61-
auto toLower = [](char c) { return std::tolower(static_cast<unsigned char>(c)); };
64+
auto toLower = [](unsigned char c) { return std::tolower(static_cast<unsigned char>(c)); };
6265

63-
auto it = std::search(payloadView.data(), payloadView.data() + payloadView.size(), patternView.data(),
64-
patternView.data() + patternView.size(), [&](char a, char b) { return toLower(a) == toLower(b); });
66+
auto it = std::search(payloadView.begin(), payloadView.end(), pattern.begin(), pattern.end(),
67+
[&](unsigned char a, unsigned char b) { return toLower(a) == toLower(b); });
6568

66-
return (it != payloadView.data() + payloadView.size());
69+
return (it != payloadView.end());
6770
}
6871

6972
} // namespace
@@ -72,16 +75,16 @@ FilterOutcome HostNameFilter::Filter(const void * endpoint, const IPPacketInfo &
7275
const System::PacketBufferHandle & pktPayload)
7376
{
7477
// Drop the mDNS packets which don't contain 'matter' or '<device-hostname>'.
75-
const uint8_t matterBytes[] = { 'm', 'a', 't', 't', 'e', 'r' };
76-
if (PayloadContainsCaseInsensitive(pktPayload, ByteSpan(matterBytes)) ||
77-
PayloadContainsCaseInsensitive(pktPayload, ByteSpan(mHostName)))
78+
const unsigned char matterBytes[] = { 'm', 'a', 't', 't', 'e', 'r' };
79+
if (PayloadContainsCaseInsensitive(pktPayload, Span<const unsigned char>(matterBytes, sizeof(matterBytes))) ||
80+
PayloadContainsCaseInsensitive(pktPayload, Span<const unsigned char>(mHostName, sizeof(mHostName))))
7881
{
7982
return FilterOutcome::kAllowPacket;
8083
}
8184
return FilterOutcome::kDropPacket;
8285
}
8386

84-
CHIP_ERROR HostNameFilter::SetHostName(const CharSpan & hostName)
87+
CHIP_ERROR HostNameFilter::SetHostName(Span<const unsigned char> & hostName)
8588
{
8689
VerifyOrReturnError(IsValidMdnsHostName(hostName), CHIP_ERROR_INVALID_ARGUMENT);
8790
memcpy(mHostName, hostName.data(), hostName.size());

src/platform/silabs/EndpointQueueFilter.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ struct HostNameFilter : EndpointFilter
4141
EndpointQueueFilter::FilterOutcome Filter(const void * endpoint, const IPPacketInfo & pktInfo,
4242
const System::PacketBufferHandle & pktPayload) override;
4343

44-
CHIP_ERROR SetHostName(const CharSpan & name);
44+
CHIP_ERROR SetHostName(Span<const unsigned char> & name);
4545

4646
private:
4747
uint8_t mHostName[kHostNameLengthMax] = { 0 };
@@ -63,7 +63,7 @@ class EndpointQueueFilter : public Inet::EndpointQueueFilter
6363
FilterOutcome FilterAfterDequeue(const void * endpoint, const IPPacketInfo & pktInfo,
6464
const System::PacketBufferHandle & pktPayload);
6565

66-
CHIP_ERROR SetHostName(const CharSpan & addr) { return mHostNameFilter.SetHostName(addr); }
66+
CHIP_ERROR SetHostName(Span<const unsigned char> & addr) { return mHostNameFilter.SetHostName(addr); }
6767

6868
// Method to set the configuration
6969
void SetConfig(const EndpointQueueFilterConfig & config) { mConfig = config; }

0 commit comments

Comments
 (0)