From 8ed949e6fdfaf9d34e4e08b208484132f1f5beaa Mon Sep 17 00:00:00 2001 From: Yang Sun Date: Fri, 15 Sep 2023 07:32:00 +0800 Subject: [PATCH] [posix] add a flag to turn posix multicast routing feature on/off (#9412) This commit adds a separate flag to be able to turn the posix part of multicast routing implementation off/on. The new OPENTHREAD_POSIX_CONFIG_BACKBONE_ROUTER_MULTICAST_ROUTING_ENABLE flag guards the feature of posix multicast routing using MFC(multicast forwarding cache) in MRT(multicast routing table). The existing OPENTHREAD_CONFIG_BACKBONE_ROUTER_MULTICAST_ROUTING_ENABLE continues to guard the core multicast routing feature, for example handling the MLR.req message and the multicast listeners table. In a system where it has its own multicast routing support for packet forwarding between Thread network and AIL, it should set OPENTHREAD_POSIX_CONFIG_BACKBONE_ROUTER_MULTICAST_ROUTING_ENABLE to 0. --- src/posix/platform/backbone.cpp | 8 ++++---- src/posix/platform/multicast_routing.cpp | 4 ++-- src/posix/platform/multicast_routing.hpp | 4 ++-- src/posix/platform/openthread-posix-config.h | 17 +++++++++++++++++ 4 files changed, 25 insertions(+), 8 deletions(-) diff --git a/src/posix/platform/backbone.cpp b/src/posix/platform/backbone.cpp index c5f1f95cf..517dc90f1 100644 --- a/src/posix/platform/backbone.cpp +++ b/src/posix/platform/backbone.cpp @@ -42,7 +42,7 @@ char gBackboneNetifName[IFNAMSIZ] = ""; unsigned int gBackboneNetifIndex = 0; -#if OPENTHREAD_CONFIG_BACKBONE_ROUTER_MULTICAST_ROUTING_ENABLE +#if OPENTHREAD_POSIX_CONFIG_BACKBONE_ROUTER_MULTICAST_ROUTING_ENABLE static ot::Posix::MulticastRoutingManager sMulticastRoutingManager; #endif @@ -69,14 +69,14 @@ exit: void platformBackboneSetUp(void) { -#if OPENTHREAD_CONFIG_BACKBONE_ROUTER_MULTICAST_ROUTING_ENABLE +#if OPENTHREAD_POSIX_CONFIG_BACKBONE_ROUTER_MULTICAST_ROUTING_ENABLE sMulticastRoutingManager.SetUp(); #endif } void platformBackboneTearDown(void) { -#if OPENTHREAD_CONFIG_BACKBONE_ROUTER_MULTICAST_ROUTING_ENABLE +#if OPENTHREAD_POSIX_CONFIG_BACKBONE_ROUTER_MULTICAST_ROUTING_ENABLE sMulticastRoutingManager.TearDown(); #endif } @@ -93,7 +93,7 @@ void platformBackboneStateChange(otInstance *aInstance, otChangedFlags aFlags) OT_UNUSED_VARIABLE(aInstance); OT_UNUSED_VARIABLE(aFlags); -#if OPENTHREAD_CONFIG_BACKBONE_ROUTER_MULTICAST_ROUTING_ENABLE +#if OPENTHREAD_POSIX_CONFIG_BACKBONE_ROUTER_MULTICAST_ROUTING_ENABLE sMulticastRoutingManager.HandleStateChange(aInstance, aFlags); #endif } diff --git a/src/posix/platform/multicast_routing.cpp b/src/posix/platform/multicast_routing.cpp index 9d71481e9..abced8c4d 100644 --- a/src/posix/platform/multicast_routing.cpp +++ b/src/posix/platform/multicast_routing.cpp @@ -28,7 +28,7 @@ #include "posix/platform/multicast_routing.hpp" -#if OPENTHREAD_CONFIG_BACKBONE_ROUTER_MULTICAST_ROUTING_ENABLE +#if OPENTHREAD_POSIX_CONFIG_BACKBONE_ROUTER_MULTICAST_ROUTING_ENABLE #include #include @@ -615,4 +615,4 @@ void MulticastRoutingManager::RemoveMulticastForwardingCache( } // namespace Posix } // namespace ot -#endif // OPENTHREAD_CONFIG_BACKBONE_ROUTER_MULTICAST_ROUTING_ENABLE +#endif // OPENTHREAD_POSIX_CONFIG_BACKBONE_ROUTER_MULTICAST_ROUTING_ENABLE diff --git a/src/posix/platform/multicast_routing.hpp b/src/posix/platform/multicast_routing.hpp index dc8b72a03..08d87ca58 100644 --- a/src/posix/platform/multicast_routing.hpp +++ b/src/posix/platform/multicast_routing.hpp @@ -31,7 +31,7 @@ #include "openthread-posix-config.h" -#if OPENTHREAD_CONFIG_BACKBONE_ROUTER_MULTICAST_ROUTING_ENABLE +#if OPENTHREAD_POSIX_CONFIG_BACKBONE_ROUTER_MULTICAST_ROUTING_ENABLE #include #include @@ -140,6 +140,6 @@ private: } // namespace Posix } // namespace ot -#endif // OPENTHREAD_CONFIG_BACKBONE_ROUTER_MULTICAST_ROUTING_ENABLE +#endif // OPENTHREAD_POSIX_CONFIG_BACKBONE_ROUTER_MULTICAST_ROUTING_ENABLE #endif // OT_POSIX_PLATFORM_MULTICAST_ROUTING_HPP_ diff --git a/src/posix/platform/openthread-posix-config.h b/src/posix/platform/openthread-posix-config.h index 66a6dacb5..2efa6ef37 100644 --- a/src/posix/platform/openthread-posix-config.h +++ b/src/posix/platform/openthread-posix-config.h @@ -135,6 +135,23 @@ #define OPENTHREAD_POSIX_CONFIG_MAX_MULTICAST_FORWARDING_CACHE_TABLE (OPENTHREAD_CONFIG_MAX_MULTICAST_LISTENERS * 10) #endif +/** + * @def OPENTHREAD_POSIX_CONFIG_BACKBONE_ROUTER_MULTICAST_ROUTING_ENABLE + * + * Define as 1 to enable multicast routing support. + * + */ +#ifndef OPENTHREAD_POSIX_CONFIG_BACKBONE_ROUTER_MULTICAST_ROUTING_ENABLE +#define OPENTHREAD_POSIX_CONFIG_BACKBONE_ROUTER_MULTICAST_ROUTING_ENABLE \ + OPENTHREAD_CONFIG_BACKBONE_ROUTER_MULTICAST_ROUTING_ENABLE +#endif + +#if OPENTHREAD_POSIX_CONFIG_BACKBONE_ROUTER_MULTICAST_ROUTING_ENABLE && \ + !OPENTHREAD_CONFIG_BACKBONE_ROUTER_MULTICAST_ROUTING_ENABLE +#error \ + "OPENTHREAD_CONFIG_BACKBONE_ROUTER_MULTICAST_ROUTING_ENABLE is required for OPENTHREAD_POSIX_CONFIG_BACKBONE_ROUTER_MULTICAST_ROUTING_ENABLE" +#endif + /** * @def OPENTHREAD_POSIX_CONFIG_SECURE_SETTINGS_ENABLE *