diff --git a/.github/workflows/unit_integration_test.yaml b/.github/workflows/unit_integration_test.yaml index 60b97bce86006a..b0f62b07169833 100644 --- a/.github/workflows/unit_integration_test.yaml +++ b/.github/workflows/unit_integration_test.yaml @@ -26,7 +26,6 @@ jobs: unit_tests: name: Unit / Interation Tests timeout-minutes: 60 - if: github.actor != 'restyled-io[bot]' strategy: @@ -88,7 +87,7 @@ jobs: timeout-minutes: 5 run: scripts/build/gn_build.sh - name: Run Tests - timeout-minutes: 5 + timeout-minutes: 10 run: RUN_HAPPY_TESTS=1 scripts/tests/gn_tests.sh - name: Uploading Happy Test Log uses: actions/upload-artifact@v2 diff --git a/examples/minimal-mdns/AllInterfaceListener.h b/examples/minimal-mdns/AllInterfaceListener.h index 09d51d97803c55..3445a1c87ed5c3 100644 --- a/examples/minimal-mdns/AllInterfaceListener.h +++ b/examples/minimal-mdns/AllInterfaceListener.h @@ -15,6 +15,7 @@ * limitations under the License. */ +#include #include namespace MdnsExample { @@ -37,13 +38,17 @@ class AllInterfaces : public mdns::Minimal::ListenIterator { if (mState == State::kIpV4) { - *id = INET_NULL_INTERFACEID; - *type = chip::Inet::kIPAddressType_IPv4; +#if INET_CONFIG_ENABLE_IPV4 + *id = INET_NULL_INTERFACEID; + *type = chip::Inet::kIPAddressType_IPv4; +#endif mState = State::kIpV6; SkipToFirstValidInterface(); +#if INET_CONFIG_ENABLE_IPV4 return true; +#endif } if (!mIterator.HasCurrent()) diff --git a/examples/platform/linux/CommissioneeShellCommands.cpp b/examples/platform/linux/CommissioneeShellCommands.cpp index a379080b9b3246..03ac085d7c205f 100644 --- a/examples/platform/linux/CommissioneeShellCommands.cpp +++ b/examples/platform/linux/CommissioneeShellCommands.cpp @@ -59,8 +59,7 @@ static CHIP_ERROR PrintAllCommands() streamer_t * sout = streamer_get(); streamer_printf(sout, " help Usage: commissionee \r\n"); #if CHIP_DEVICE_CONFIG_ENABLE_COMMISSIONER_DISCOVERY_CLIENT - streamer_printf(sout, - " sendudc
Send UDC message to address. Usage: commissionee sendudc 127.0.0.1 5543\r\n"); + streamer_printf(sout, " sendudc
Send UDC message to address. Usage: commissionee sendudc ::1 5543\r\n"); #endif // CHIP_DEVICE_CONFIG_ENABLE_COMMISSIONER_DISCOVERY_CLIENT streamer_printf( sout, " setdiscoverytimeout Set discovery timeout in seconds. Usage: commissionee setdiscoverytimeout 30\r\n"); diff --git a/src/app/tests/integration/chip_im_initiator.cpp b/src/app/tests/integration/chip_im_initiator.cpp index fe78e2b7a6c4b9..a11e8cc178688d 100644 --- a/src/app/tests/integration/chip_im_initiator.cpp +++ b/src/app/tests/integration/chip_im_initiator.cpp @@ -697,7 +697,7 @@ int main(int argc, char * argv[]) InitializeChip(); err = gTransportManager.Init(chip::Transport::UdpListenParameters(&chip::DeviceLayer::InetLayer) - .SetAddressType(chip::Inet::kIPAddressType_IPv4) + .SetAddressType(gDestAddr.Type()) .SetListenPort(IM_CLIENT_PORT)); SuccessOrExit(err); diff --git a/src/app/tests/integration/chip_im_responder.cpp b/src/app/tests/integration/chip_im_responder.cpp index b0700f9c7a9c96..afbc3f03cd5fd2 100644 --- a/src/app/tests/integration/chip_im_responder.cpp +++ b/src/app/tests/integration/chip_im_responder.cpp @@ -206,8 +206,13 @@ int main(int argc, char * argv[]) InitializeChip(); - err = gTransportManager.Init( - chip::Transport::UdpListenParameters(&chip::DeviceLayer::InetLayer).SetAddressType(chip::Inet::kIPAddressType_IPv4)); + err = gTransportManager.Init(chip::Transport::UdpListenParameters(&chip::DeviceLayer::InetLayer) +#if INET_CONFIG_ENABLE_IPV4 + .SetAddressType(chip::Inet::kIPAddressType_IPv4) +#else + .SetAddressType(chip::Inet::kIPAddressType_IPv6) +#endif + ); SuccessOrExit(err); err = gSessionManager.Init(&chip::DeviceLayer::SystemLayer(), &gTransportManager, &gMessageCounterManager); diff --git a/src/controller/tests/TestDevice.cpp b/src/controller/tests/TestDevice.cpp index 3390e031e146f3..22e866b59cdfb4 100644 --- a/src/controller/tests/TestDevice.cpp +++ b/src/controller/tests/TestDevice.cpp @@ -37,7 +37,6 @@ using namespace chip::Transport; using namespace chip::Controller; using namespace chip::Messaging; -#if INET_CONFIG_ENABLE_IPV4 namespace { using TestTransportMgr = TransportMgr; @@ -62,7 +61,7 @@ void TestDevice_EstablishSessionDirectly(nlTestSuite * inSuite, void * inContext systemLayer.Init(); inetLayer.Init(systemLayer, nullptr); transportMgr.Init( - UdpListenParameters(&inetLayer).SetAddressType(Inet::IPAddressType::kIPAddressType_IPv4).SetListenPort(CHIP_PORT) + UdpListenParameters(&inetLayer).SetAddressType(Inet::IPAddressType::kIPAddressType_IPv6).SetListenPort(CHIP_PORT) #if INET_CONFIG_ENABLE_IPV4 , UdpListenParameters(&inetLayer).SetAddressType(Inet::kIPAddressType_IPv4).SetListenPort(CHIP_PORT) @@ -89,7 +88,7 @@ void TestDevice_EstablishSessionDirectly(nlTestSuite * inSuite, void * inContext NodeId mockNodeId = 1; FabricIndex mockFabricIndex = 1; Inet::IPAddress mockAddr; - Inet::IPAddress::FromString("127.0.0.1", mockAddr); + Inet::IPAddress::FromString("::1", mockAddr); PeerAddress addr = PeerAddress::UDP(mockAddr, CHIP_PORT); device.Init(params, mockNodeId, addr, mockFabricIndex); @@ -125,5 +124,3 @@ int TestDevice() } CHIP_REGISTER_TEST_SUITE(TestDevice) - -#endif // INET_CONFIG_ENABLE_IPV4 diff --git a/src/inet/DNSResolver.cpp b/src/inet/DNSResolver.cpp index d7ba426773e04e..92ab09255f41c1 100644 --- a/src/inet/DNSResolver.cpp +++ b/src/inet/DNSResolver.cpp @@ -101,9 +101,11 @@ CHIP_ERROR DNSResolver::Resolve(const char * hostName, uint16_t hostNameLen, uin uint8_t optionFlags = (options & kDNSOption_Flags_Mask); // Check that the supplied options are valid. - if ((addrFamilyOption != kDNSOption_AddrFamily_Any && addrFamilyOption != kDNSOption_AddrFamily_IPv4Only && - addrFamilyOption != kDNSOption_AddrFamily_IPv4Preferred && addrFamilyOption != kDNSOption_AddrFamily_IPv6Only && - addrFamilyOption != kDNSOption_AddrFamily_IPv6Preferred) || + if ((addrFamilyOption != kDNSOption_AddrFamily_Any +#if INET_CONFIG_ENABLE_IPV4 + && addrFamilyOption != kDNSOption_AddrFamily_IPv4Only && addrFamilyOption != kDNSOption_AddrFamily_IPv4Preferred +#endif + && addrFamilyOption != kDNSOption_AddrFamily_IPv6Only && addrFamilyOption != kDNSOption_AddrFamily_IPv6Preferred) || (optionFlags & ~kDNSOption_ValidFlags) != 0) { Release(); @@ -347,10 +349,11 @@ void DNSResolver::LwIPHandleResolveComplete(const char * name, ip_addr_t * ipadd void DNSResolver::InitAddrInfoHints(struct addrinfo & hints) { - uint8_t addrFamilyOption = (DNSOptions & kDNSOption_AddrFamily_Mask); - memset(&hints, 0, sizeof(hints)); + #if INET_CONFIG_ENABLE_IPV4 + uint8_t addrFamilyOption = (DNSOptions & kDNSOption_AddrFamily_Mask); + if (addrFamilyOption == kDNSOption_AddrFamily_IPv4Only) { hints.ai_family = AF_INET; diff --git a/src/inet/tests/TestInetEndPoint.cpp b/src/inet/tests/TestInetEndPoint.cpp index 9e80a769d97150..2f7941e9eaf468 100644 --- a/src/inet/tests/TestInetEndPoint.cpp +++ b/src/inet/tests/TestInetEndPoint.cpp @@ -413,10 +413,12 @@ static void TestInetEndPointLimit(nlTestSuite * inSuite, void * inContext) CHIP_ERROR err = CHIP_NO_ERROR; + // TODO: err is not validated EXCEPT the last call for (int i = 0; i < INET_CONFIG_NUM_UDP_ENDPOINTS + 1; i++) err = gInet.NewUDPEndPoint(&testUDPEP[i]); NL_TEST_ASSERT(inSuite, err == CHIP_ERROR_ENDPOINT_POOL_FULL); + // TODO: err is not validated EXCEPT the last call for (int i = 0; i < INET_CONFIG_NUM_TCP_ENDPOINTS + 1; i++) err = gInet.NewTCPEndPoint(&testTCPEP[i]); NL_TEST_ASSERT(inSuite, err == CHIP_ERROR_ENDPOINT_POOL_FULL); @@ -440,12 +442,20 @@ static void TestInetEndPointLimit(nlTestSuite * inSuite, void * inContext) // Release UDP endpoints for (int i = 0; i < INET_CONFIG_NUM_UDP_ENDPOINTS; i++) - testUDPEP[i]->Free(); + { + if (testUDPEP[i] != nullptr) + { + testUDPEP[i]->Free(); + } + } // Release TCP endpoints for (int i = 0; i < INET_CONFIG_NUM_TCP_ENDPOINTS; i++) { - testTCPEP[i]->Free(); + if (testTCPEP[i] != nullptr) + { + testTCPEP[i]->Free(); + } } } #endif diff --git a/src/inet/tests/TestInetLayerDNS.cpp b/src/inet/tests/TestInetLayerDNS.cpp index a734f7f7cba506..3430f91fa6a2fc 100644 --- a/src/inet/tests/TestInetLayerDNS.cpp +++ b/src/inet/tests/TestInetLayerDNS.cpp @@ -92,6 +92,7 @@ static void TestDNSResolution_Basic(nlTestSuite * testSuite, void * testContext) // clang-format off #ifndef DISABLE_BROKEN_DNS_TESTS +#if INET_CONFIG_ENABLE_IPV4 // Test resolving a name with only IPv4 addresses. RunTestCase(testSuite, DNSResolutionTestCase @@ -104,6 +105,7 @@ static void TestDNSResolution_Basic(nlTestSuite * testSuite, void * testContext) false } ); +#endif // Test resolving a name with only IPv6 addresses. RunTestCase(testSuite, @@ -118,6 +120,7 @@ static void TestDNSResolution_Basic(nlTestSuite * testSuite, void * testContext) } ); +#if INET_CONFIG_ENABLE_IPV4 // Test resolving a name with IPv4 and IPv6 addresses. RunTestCase(testSuite, DNSResolutionTestCase @@ -130,6 +133,7 @@ static void TestDNSResolution_Basic(nlTestSuite * testSuite, void * testContext) true } ); +#endif #endif // clang-format on } @@ -183,7 +187,6 @@ static void TestDNSResolution_AddressTypeOption(nlTestSuite * testSuite, void * true } ); -#endif // INET_CONFIG_ENABLE_IPV4 // Test requesting IPv6 address preferentially. RunTestCase(testSuite, @@ -197,6 +200,7 @@ static void TestDNSResolution_AddressTypeOption(nlTestSuite * testSuite, void * true } ); +#endif // INET_CONFIG_ENABLE_IPV4 #endif // clang-format on @@ -251,7 +255,6 @@ static void TestDNSResolution_RestrictedResults(nlTestSuite * testSuite, void * true } ); -#endif // INET_CONFIG_ENABLE_IPV4 // Test requesting 2 addresses, preferring IPv6. This should result in 1 IPv6 address // followed by 1 IPv4 address. @@ -267,6 +270,7 @@ static void TestDNSResolution_RestrictedResults(nlTestSuite * testSuite, void * } ); // clang-format on +#endif // INET_CONFIG_ENABLE_IPV4 } /** @@ -350,6 +354,7 @@ static void TestDNSResolution_NoHostRecord(nlTestSuite * testSuite, void * testC static void TestDNSResolution_TextForm(nlTestSuite * testSuite, void * testContext) { // clang-format off +#if INET_CONFIG_ENABLE_IPV4 RunTestCase(testSuite, DNSResolutionTestCase { @@ -361,6 +366,7 @@ static void TestDNSResolution_TextForm(nlTestSuite * testSuite, void * testConte false } ); +#endif RunTestCase(testSuite, DNSResolutionTestCase @@ -377,6 +383,7 @@ static void TestDNSResolution_TextForm(nlTestSuite * testSuite, void * testConte // Test resolving text form IPv4 and IPv6 addresses while requesting an // incompatible address type. +#if INET_CONFIG_ENABLE_IPV4 RunTestCase(testSuite, DNSResolutionTestCase { @@ -400,13 +407,14 @@ static void TestDNSResolution_TextForm(nlTestSuite * testSuite, void * testConte false } ); +#endif // clang-format on } static void TestDNSResolution_Cancel(nlTestSuite * testSuite, void * inContext) { DNSResolutionTestContext testContext{ - testSuite, DNSResolutionTestCase{ "www.google.com", kDNSOption_Default, kMaxResults, CHIP_NO_ERROR, true, false } + testSuite, DNSResolutionTestCase{ "ipv6.google.com", kDNSOption_Default, kMaxResults, CHIP_NO_ERROR, false, true } }; // Start DNS resolution. @@ -440,35 +448,35 @@ static void TestDNSResolution_Simultaneous(nlTestSuite * testSuite, void * inCon testSuite, DNSResolutionTestCase { - "www.nest.com", - kDNSOption_Default, + "example.net", + kDNSOption_AddrFamily_IPv6Only, kMaxResults, CHIP_NO_ERROR, - true, - false + false, + true } }, { testSuite, DNSResolutionTestCase { - "10.0.0.1", + "2607:f8b0:4005:804::200e", kDNSOption_Default, kMaxResults, CHIP_NO_ERROR, - true, - false + false, + true } }, { testSuite, DNSResolutionTestCase { - "www.google.com", + "ipv6.google.com", kDNSOption_Default, kMaxResults, CHIP_NO_ERROR, - true, + false, true } }, @@ -476,12 +484,12 @@ static void TestDNSResolution_Simultaneous(nlTestSuite * testSuite, void * inCon testSuite, DNSResolutionTestCase { - "pool.ntp.org", - kDNSOption_Default, + "ibm.com", + kDNSOption_AddrFamily_IPv6Only, kMaxResults, CHIP_NO_ERROR, - true, - false + false, + true } } }; @@ -587,7 +595,9 @@ static void HandleResolutionComplete(void * appState, CHIP_ERROR err, uint8_t ad for (uint8_t i = 0; i < addrCount; i++) { +#if INET_CONFIG_ENABLE_IPV4 respContainsIPv4Addrs = respContainsIPv4Addrs || (addrArray[i].Type() == kIPAddressType_IPv4); +#endif respContainsIPv6Addrs = respContainsIPv6Addrs || (addrArray[i].Type() == kIPAddressType_IPv6); } @@ -604,8 +614,14 @@ static void HandleResolutionComplete(void * appState, CHIP_ERROR err, uint8_t ad { if (testCase.expectIPv4Addrs) { +#if INET_CONFIG_ENABLE_IPV4 NL_TEST_ASSERT(testSuite, respContainsIPv4Addrs); +#else + // IP-v4 test ran without IPv4 support + NL_TEST_ASSERT(testSuite, false); +#endif } + if (testCase.expectIPv6Addrs) { NL_TEST_ASSERT(testSuite, respContainsIPv6Addrs); @@ -618,6 +634,7 @@ static void HandleResolutionComplete(void * appState, CHIP_ERROR err, uint8_t ad { case kDNSOption_AddrFamily_Any: break; +#if INET_CONFIG_ENABLE_IPV4 case kDNSOption_AddrFamily_IPv4Only: NL_TEST_ASSERT(testSuite, !respContainsIPv6Addrs); break; @@ -627,6 +644,7 @@ static void HandleResolutionComplete(void * appState, CHIP_ERROR err, uint8_t ad NL_TEST_ASSERT(testSuite, addrArray[0].Type() == kIPAddressType_IPv4); } break; +#endif case kDNSOption_AddrFamily_IPv6Only: NL_TEST_ASSERT(testSuite, !respContainsIPv4Addrs); break; diff --git a/src/lib/mdns/MinimalMdnsServer.cpp b/src/lib/mdns/MinimalMdnsServer.cpp index 7bd268bb72eb8c..ba2f6151edf42d 100644 --- a/src/lib/mdns/MinimalMdnsServer.cpp +++ b/src/lib/mdns/MinimalMdnsServer.cpp @@ -58,15 +58,13 @@ class AllInterfaces : public ListenIterator } private: +#if INET_CONFIG_ENABLE_IPV4 enum class State { kIpV4, kIpV6, }; -#if INET_CONFIG_ENABLE_IPV4 State mState = State::kIpV4; -#else - State mState = State::kIpV6; #endif chip::Inet::InterfaceIterator mIterator; diff --git a/src/lib/mdns/minimal/responders/tests/TestPtrResponder.cpp b/src/lib/mdns/minimal/responders/tests/TestPtrResponder.cpp index eb9fe39cc02239..0a16625747330f 100644 --- a/src/lib/mdns/minimal/responders/tests/TestPtrResponder.cpp +++ b/src/lib/mdns/minimal/responders/tests/TestPtrResponder.cpp @@ -81,11 +81,10 @@ class PtrResponseAccumulator : public ResponderDelegate nlTestSuite * mSuite; }; -#if INET_CONFIG_ENABLE_IPV4 void TestPtrResponse(nlTestSuite * inSuite, void * inContext) { IPAddress ipAddress; - NL_TEST_ASSERT(inSuite, IPAddress::FromString("10.20.30.40", ipAddress)); + NL_TEST_ASSERT(inSuite, IPAddress::FromString("2607:f8b0:4005:804::200e", ipAddress)); PtrResponder responder(kNames, kTargetNames); @@ -104,12 +103,9 @@ void TestPtrResponse(nlTestSuite * inSuite, void * inContext) responder.AddAllResponses(&packetInfo, &acc); } -#endif // INET_CONFIG_ENABLE_IPV4 const nlTest sTests[] = { -#if INET_CONFIG_ENABLE_IPV4 NL_TEST_DEF("TestPtrResponse", TestPtrResponse), // -#endif // INET_CONFIG_ENABLE_IPV4 NL_TEST_SENTINEL() // }; diff --git a/src/messaging/tests/MessagingContext.h b/src/messaging/tests/MessagingContext.h index 3448974cba2a31..ad8a4fa103e92d 100644 --- a/src/messaging/tests/MessagingContext.h +++ b/src/messaging/tests/MessagingContext.h @@ -50,7 +50,7 @@ class MessagingContext static Inet::IPAddress GetAddress() { Inet::IPAddress addr; - Inet::IPAddress::FromString("127.0.0.1", addr); + Inet::IPAddress::FromString("::1", addr); return addr; } NodeId GetBobNodeId() const { return mBobNodeId; } diff --git a/src/messaging/tests/echo/echo_requester.cpp b/src/messaging/tests/echo/echo_requester.cpp index b03e65ee177a35..12af4bf86aec71 100644 --- a/src/messaging/tests/echo/echo_requester.cpp +++ b/src/messaging/tests/echo/echo_requester.cpp @@ -228,7 +228,7 @@ int main(int argc, char * argv[]) if (gUseTCP) { err = gTCPManager.Init(chip::Transport::TcpListenParameters(&chip::DeviceLayer::InetLayer) - .SetAddressType(chip::Inet::kIPAddressType_IPv4) + .SetAddressType(gDestAddr.Type()) .SetListenPort(ECHO_CLIENT_PORT)); SuccessOrExit(err); @@ -238,7 +238,7 @@ int main(int argc, char * argv[]) else { err = gUDPManager.Init(chip::Transport::UdpListenParameters(&chip::DeviceLayer::InetLayer) - .SetAddressType(chip::Inet::kIPAddressType_IPv4) + .SetAddressType(gDestAddr.Type()) .SetListenPort(ECHO_CLIENT_PORT)); SuccessOrExit(err); diff --git a/src/messaging/tests/echo/echo_responder.cpp b/src/messaging/tests/echo/echo_responder.cpp index d6160c8cf6a277..a3a058ded27527 100644 --- a/src/messaging/tests/echo/echo_responder.cpp +++ b/src/messaging/tests/echo/echo_responder.cpp @@ -83,8 +83,13 @@ int main(int argc, char * argv[]) if (useTCP) { - err = gTCPManager.Init( - chip::Transport::TcpListenParameters(&chip::DeviceLayer::InetLayer).SetAddressType(chip::Inet::kIPAddressType_IPv4)); + err = gTCPManager.Init(chip::Transport::TcpListenParameters(&chip::DeviceLayer::InetLayer) +#if INET_CONFIG_ENABLE_IPV4 + .SetAddressType(chip::Inet::kIPAddressType_IPv4) +#else + .SetAddressType(chip::Inet::kIPAddressType_IPv6) +#endif + ); SuccessOrExit(err); err = gSessionManager.Init(&chip::DeviceLayer::SystemLayer(), &gTCPManager, &gMessageCounterManager); @@ -92,8 +97,13 @@ int main(int argc, char * argv[]) } else { - err = gUDPManager.Init( - chip::Transport::UdpListenParameters(&chip::DeviceLayer::InetLayer).SetAddressType(chip::Inet::kIPAddressType_IPv4)); + err = gUDPManager.Init(chip::Transport::UdpListenParameters(&chip::DeviceLayer::InetLayer) +#if INET_CONFIG_ENABLE_IPV4 + .SetAddressType(chip::Inet::kIPAddressType_IPv4) +#else + .SetAddressType(chip::Inet::kIPAddressType_IPv6) +#endif + ); SuccessOrExit(err); err = gSessionManager.Init(&chip::DeviceLayer::SystemLayer(), &gUDPManager, &gMessageCounterManager); diff --git a/src/platform/Darwin/InetPlatformConfig.h b/src/platform/Darwin/InetPlatformConfig.h index 7e8892ea120f54..07eb63b095db0e 100644 --- a/src/platform/Darwin/InetPlatformConfig.h +++ b/src/platform/Darwin/InetPlatformConfig.h @@ -26,7 +26,9 @@ // ==================== Platform Adaptations ==================== -#define INET_CONFIG_ENABLE_IPV4 1 +#ifndef INET_CONFIG_ENABLE_IPV4 +#error Inet IPv4 configuration should be configured at build generation time +#endif // ========== Platform-specific Configuration Overrides ========= diff --git a/src/platform/Darwin/MdnsImpl.cpp b/src/platform/Darwin/MdnsImpl.cpp index 9fa5fba29358dc..58b95dbba694fd 100644 --- a/src/platform/Darwin/MdnsImpl.cpp +++ b/src/platform/Darwin/MdnsImpl.cpp @@ -431,6 +431,8 @@ static CHIP_ERROR GetAddrInfo(void * context, MdnsResolveCallback callback, uint } DNSServiceProtocol protocol; + +#if INET_CONFIG_ENABLE_IPV4 if (addressType == chip::Inet::kIPAddressType_IPv4) { protocol = kDNSServiceProtocol_IPv4; @@ -443,6 +445,10 @@ static CHIP_ERROR GetAddrInfo(void * context, MdnsResolveCallback callback, uint { protocol = kDNSServiceProtocol_IPv4 | kDNSServiceProtocol_IPv6; } +#else + // without IPv4, IPv6 is the only option + protocol = kDNSServiceProtocol_IPv6; +#endif err = DNSServiceGetAddrInfo(&sdRef, 0 /* flags */, interfaceId, protocol, hostname, OnGetAddrInfo, sdCtx); VerifyOrReturnError(CheckForSuccess(sdCtx, __func__, err, true), CHIP_ERROR_INTERNAL); diff --git a/src/platform/EFR32/InetPlatformConfig.h b/src/platform/EFR32/InetPlatformConfig.h index a66f4c1ebc2964..87527cf1789e3e 100644 --- a/src/platform/EFR32/InetPlatformConfig.h +++ b/src/platform/EFR32/InetPlatformConfig.h @@ -25,11 +25,11 @@ #pragma once -#include - // ==================== Platform Adaptations ==================== -#define INET_CONFIG_ENABLE_IPV4 0 +#ifndef INET_CONFIG_ENABLE_IPV4 +#error Inet IPv4 configuration should be configured at build generation time +#endif // ========== Platform-specific Configuration Overrides ========= diff --git a/src/platform/K32W/InetPlatformConfig.h b/src/platform/K32W/InetPlatformConfig.h index 71eb18216922a4..e59c31f75eac37 100644 --- a/src/platform/K32W/InetPlatformConfig.h +++ b/src/platform/K32W/InetPlatformConfig.h @@ -26,11 +26,11 @@ #pragma once -#include - // ==================== Platform Adaptations ==================== -#define INET_CONFIG_ENABLE_IPV4 0 +#ifndef INET_CONFIG_ENABLE_IPV4 +#error Inet IPv4 configuration should be configured at build generation time +#endif // ========== Platform-specific Configuration Overrides ========= diff --git a/src/platform/Linux/InetPlatformConfig.h b/src/platform/Linux/InetPlatformConfig.h index add9c8ca0435f3..e951147040e52f 100644 --- a/src/platform/Linux/InetPlatformConfig.h +++ b/src/platform/Linux/InetPlatformConfig.h @@ -26,7 +26,9 @@ // ==================== Platform Adaptations ==================== -#define INET_CONFIG_ENABLE_IPV4 1 +#ifndef INET_CONFIG_ENABLE_IPV4 +#error Inet IPv4 configuration should be configured at build generation time +#endif // ========== Platform-specific Configuration Overrides ========= diff --git a/src/platform/Linux/MdnsImpl.cpp b/src/platform/Linux/MdnsImpl.cpp index 0153cfe7707847..145623bc665598 100644 --- a/src/platform/Linux/MdnsImpl.cpp +++ b/src/platform/Linux/MdnsImpl.cpp @@ -48,9 +48,11 @@ AvahiProtocol ToAvahiProtocol(chip::Inet::IPAddressType addressType) switch (addressType) { +#if INET_CONFIG_ENABLE_IPV4 case chip::Inet::IPAddressType::kIPAddressType_IPv4: protocol = AVAHI_PROTO_INET; break; +#endif case chip::Inet::IPAddressType::kIPAddressType_IPv6: protocol = AVAHI_PROTO_INET6; break; @@ -68,9 +70,11 @@ chip::Inet::IPAddressType ToAddressType(AvahiProtocol protocol) switch (protocol) { +#if INET_CONFIG_ENABLE_IPV4 case AVAHI_PROTO_INET: type = chip::Inet::IPAddressType::kIPAddressType_IPv4; break; +#endif case AVAHI_PROTO_INET6: type = chip::Inet::IPAddressType::kIPAddressType_IPv6; break; @@ -685,7 +689,8 @@ void MdnsAvahi::HandleResolve(AvahiServiceResolver * resolver, AvahiIfIndex inte context->mCallback(context->mContext, nullptr, CHIP_ERROR_INTERNAL); break; case AVAHI_RESOLVER_FOUND: - MdnsService result = {}; + MdnsService result = {}; + CHIP_ERROR result_err = CHIP_NO_ERROR; result.mAddress.SetValue(chip::Inet::IPAddress()); ChipLogError(DeviceLayer, "Avahi resolve found"); @@ -713,10 +718,15 @@ void MdnsAvahi::HandleResolve(AvahiServiceResolver * resolver, AvahiIfIndex inte switch (address->proto) { case AVAHI_PROTO_INET: +#if INET_CONFIG_ENABLE_IPV4 struct in_addr addr4; memcpy(&addr4, &(address->data.ipv4), sizeof(addr4)); result.mAddress.SetValue(chip::Inet::IPAddress::FromIPv4(addr4)); +#else + result_err = CHIP_ERROR_INVALID_ADDRESS; + ChipLogError(Discovery, "Ignoring IPv4 mDNS address."); +#endif break; case AVAHI_PROTO_INET6: struct in6_addr addr6; @@ -749,7 +759,14 @@ void MdnsAvahi::HandleResolve(AvahiServiceResolver * resolver, AvahiIfIndex inte } result.mTextEntrySize = textEntries.size(); - context->mCallback(context->mContext, &result, CHIP_NO_ERROR); + if (result_err == CHIP_NO_ERROR) + { + context->mCallback(context->mContext, &result, CHIP_NO_ERROR); + } + else + { + context->mCallback(context->mContext, nullptr, result_err); + } break; } diff --git a/src/platform/P6/args.gni b/src/platform/P6/args.gni index 3572ca87443f66..f547b5575d44d4 100644 --- a/src/platform/P6/args.gni +++ b/src/platform/P6/args.gni @@ -26,7 +26,6 @@ chip_device_platform = "p6" lwip_platform = "p6" -chip_inet_config_enable_ipv4 = true chip_inet_config_enable_dns_resolver = false chip_build_tests = false diff --git a/src/platform/Tizen/InetPlatformConfig.h b/src/platform/Tizen/InetPlatformConfig.h index 4510d3e8638b11..f7193a6be83a26 100644 --- a/src/platform/Tizen/InetPlatformConfig.h +++ b/src/platform/Tizen/InetPlatformConfig.h @@ -26,7 +26,9 @@ // ==================== Platform Adaptations ==================== -#define INET_CONFIG_ENABLE_IPV4 1 +#ifndef INET_CONFIG_ENABLE_IPV4 +#error Inet IPv4 configuration should be configured at build generation time +#endif // ========== Platform-specific Configuration Overrides ========= diff --git a/src/platform/cc13x2_26x2/InetPlatformConfig.h b/src/platform/cc13x2_26x2/InetPlatformConfig.h index d5a32ac56d0a23..363bdeb23bdb1b 100644 --- a/src/platform/cc13x2_26x2/InetPlatformConfig.h +++ b/src/platform/cc13x2_26x2/InetPlatformConfig.h @@ -27,7 +27,9 @@ // ==================== Platform Adaptations ==================== -#define INET_CONFIG_ENABLE_IPV4 0 +#ifndef INET_CONFIG_ENABLE_IPV4 +#error Inet IPv4 configuration should be configured at build generation time +#endif // ========== Platform-specific Configuration Overrides ========= diff --git a/src/platform/mbed/InetPlatformConfig.h b/src/platform/mbed/InetPlatformConfig.h index 29ddc7691f9b65..5ed05306ed9eb0 100644 --- a/src/platform/mbed/InetPlatformConfig.h +++ b/src/platform/mbed/InetPlatformConfig.h @@ -25,11 +25,11 @@ #pragma once -#include - // ==================== Platform Adaptations ==================== -// #define INET_CONFIG_ENABLE_IPV4 0 +#ifndef INET_CONFIG_ENABLE_IPV4 +#error Inet IPv4 configuration should be configured at build generation time +#endif // ========== Platform-specific Configuration Overrides ========= diff --git a/src/platform/nrfconnect/InetPlatformConfig.h b/src/platform/nrfconnect/InetPlatformConfig.h index 8f18e63cddbee3..6d00dee7ec77da 100644 --- a/src/platform/nrfconnect/InetPlatformConfig.h +++ b/src/platform/nrfconnect/InetPlatformConfig.h @@ -27,12 +27,8 @@ // ==================== Platform Adaptations ==================== #ifndef INET_CONFIG_ENABLE_IPV4 -#ifdef CONFIG_NET_IPV4 -#define INET_CONFIG_ENABLE_IPV4 CONFIG_NET_IPV4 -#else -#define INET_CONFIG_ENABLE_IPV4 0 +#error Inet IPv4 configuration should be configured at build generation time #endif -#endif // INET_CONFIG_ENABLE_IPV4 // ========== Platform-specific Configuration Overrides ========= diff --git a/src/platform/qpg/InetPlatformConfig.h b/src/platform/qpg/InetPlatformConfig.h index 030dafa2ac487e..8120e79d974d17 100644 --- a/src/platform/qpg/InetPlatformConfig.h +++ b/src/platform/qpg/InetPlatformConfig.h @@ -26,7 +26,9 @@ // ==================== Platform Adaptations ==================== -#define INET_CONFIG_ENABLE_IPV4 0 +#ifndef INET_CONFIG_ENABLE_IPV4 +#error Inet IPv4 configuration should be configured at build generation time +#endif // ========== Platform-specific Configuration Overrides ========= diff --git a/src/platform/telink/InetPlatformConfig.h b/src/platform/telink/InetPlatformConfig.h index b079c4755ffd89..0f083eb5425e1f 100644 --- a/src/platform/telink/InetPlatformConfig.h +++ b/src/platform/telink/InetPlatformConfig.h @@ -27,12 +27,8 @@ // ==================== Platform Adaptations ==================== #ifndef INET_CONFIG_ENABLE_IPV4 -#ifdef CONFIG_NET_IPV4 -#define INET_CONFIG_ENABLE_IPV4 CONFIG_NET_IPV4 -#else -#define INET_CONFIG_ENABLE_IPV4 0 +#error Inet IPv4 configuration should be configured at build generation time #endif -#endif // INET_CONFIG_ENABLE_IPV4 // ========== Platform-specific Configuration Overrides ========= diff --git a/src/test_driver/happy/tests/standalone/inet/test_inet_multicast_five_nodes_on_wifi.py b/src/test_driver/happy/tests/standalone/inet/test_inet_multicast_five_nodes_on_wifi.py index dc9b25f055575b..c0787b82e5fc53 100644 --- a/src/test_driver/happy/tests/standalone/inet/test_inet_multicast_five_nodes_on_wifi.py +++ b/src/test_driver/happy/tests/standalone/inet/test_inet_multicast_five_nodes_on_wifi.py @@ -68,15 +68,9 @@ def test_chip_inet_multicast(self): options = happy.HappyNodeList.option() options["quiet"] = True - # This test runs four (4) separate invocations / runs: - # - # 1) UDP over IPv6 - # 2) UDP over IPv4 - # 3) ICMPv6 over IPv6 - # 4) ICMPv4 over IPv4 - # - # each with one sender and four receivers. Each receiver - # varies in the number of multicast groups it participates in. + # This test validates UDP over IPv6 with one sender and four receivers. + # Each receiver varies in the number of multicast groups it participates + # in. # # The ipv4-local-addr configuration key-value pairs are only # used for LwIP hosted OS topologies where a network tap @@ -185,22 +179,16 @@ def test_chip_inet_multicast(self): } # Topology-independent test parameters: + TEST_TRANSPORT = "udp" + TEST_IP_NETWORK = "6" - transports = ["udp"] - networks = ["6", "4"] - - for network in networks: - for transport in transports: - - # Run the test. - - value, data = self.__run_inet_multicast_test( - configuration, self.interface, network, transport) - - # Process and report the results. + # Run the test. + value, data = self.__run_inet_multicast_test( + configuration, self.interface, TEST_IP_NETWORK, TEST_TRANSPORT) - self.__process_result( - configuration, self.interface, network, transport, value, data) + # Process and report the results. + self.__process_result( + configuration, self.interface, TEST_IP_NETWORK, TEST_TRANSPORT, value, data) def __process_result(self, configuration, interface, network, transport, value, data): nodes = len(configuration['sender']) + len(configuration['receivers']) diff --git a/src/transport/tests/TestPeerConnections.cpp b/src/transport/tests/TestPeerConnections.cpp index eb5dc93747244d..60b94eba794c8e 100644 --- a/src/transport/tests/TestPeerConnections.cpp +++ b/src/transport/tests/TestPeerConnections.cpp @@ -43,9 +43,9 @@ PeerAddress AddressFromString(const char * str) return PeerAddress::UDP(addr); } -const PeerAddress kPeer1Addr = AddressFromString("10.1.2.3"); -const PeerAddress kPeer2Addr = AddressFromString("10.0.0.32"); -const PeerAddress kPeer3Addr = AddressFromString("100.200.0.1"); +const PeerAddress kPeer1Addr = AddressFromString("fe80::1"); +const PeerAddress kPeer2Addr = AddressFromString("fe80::2"); +const PeerAddress kPeer3Addr = AddressFromString("fe80::3"); const NodeId kPeer1NodeId = 123; const NodeId kPeer2NodeId = 6; diff --git a/src/transport/tests/TestSessionManager.cpp b/src/transport/tests/TestSessionManager.cpp index 8e16e7b101c058..14025c42b0e215 100644 --- a/src/transport/tests/TestSessionManager.cpp +++ b/src/transport/tests/TestSessionManager.cpp @@ -137,7 +137,7 @@ void CheckMessageTest(nlTestSuite * inSuite, void * inContext) NL_TEST_ASSERT(inSuite, !buffer.IsNull()); IPAddress addr; - IPAddress::FromString("127.0.0.1", addr); + IPAddress::FromString("::1", addr); CHIP_ERROR err = CHIP_NO_ERROR; TransportMgr transportMgr; @@ -224,7 +224,7 @@ void SendEncryptedPacketTest(nlTestSuite * inSuite, void * inContext) NL_TEST_ASSERT(inSuite, !buffer.IsNull()); IPAddress addr; - IPAddress::FromString("127.0.0.1", addr); + IPAddress::FromString("::1", addr); CHIP_ERROR err = CHIP_NO_ERROR; TransportMgr transportMgr; @@ -297,7 +297,7 @@ void SendBadEncryptedPacketTest(nlTestSuite * inSuite, void * inContext) NL_TEST_ASSERT(inSuite, !buffer.IsNull()); IPAddress addr; - IPAddress::FromString("127.0.0.1", addr); + IPAddress::FromString("::1", addr); CHIP_ERROR err = CHIP_NO_ERROR; TransportMgr transportMgr;