Skip to content

Commit 2b32541

Browse files
committed
[Don't review] [dnssd-plat] integrate DnssdPlatform into Application
Also add a workflow for testing this configuration.
1 parent 06a33ac commit 2b32541

File tree

8 files changed

+67
-3
lines changed

8 files changed

+67
-3
lines changed

.github/workflows/border_router.yml

+11-1
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ jobs:
4848
strategy:
4949
fail-fast: false
5050
matrix:
51+
dnssd_plat: [0]
5152
include:
5253
- name: "Border Router (mDNSResponder)"
5354
otbr_options: "-DOT_DUA=ON -DOT_ECDSA=ON -DOT_MLR=ON -DOT_SERVICE=ON -DOT_SRP_SERVER=ON -DOTBR_COVERAGE=ON -DOTBR_DUA_ROUTING=ON -DOTBR_TREL=OFF -DOTBR_DNS_UPSTREAM_QUERY=ON"
@@ -105,7 +106,14 @@ jobs:
105106
otbr_mdns: "avahi"
106107
cert_scripts: ./tests/scripts/thread-cert/border_router/*.py
107108
packet_verification: 2
108-
109+
- name: "Border Router with OT Core Advertising Proxy"
110+
otbr_options: "-DOT_DUA=ON -DOT_ECDSA=ON -DOT_MLR=ON -DOT_SERVICE=ON -DOT_SRP_SERVER=ON -DOTBR_COVERAGE=ON -DOTBR_DUA_ROUTING=ON -DOTBR_TREL=ON -DOTBR_DNS_UPSTREAM_QUERY=ON"
111+
border_routing: 1
112+
internet: 0
113+
otbr_mdns: "avahi"
114+
dnssd_plat: 1
115+
cert_scripts: ./tests/scripts/thread-cert/border_router/*.py
116+
packet_verification: 1
109117

110118
name: ${{ matrix.name }}
111119
env:
@@ -120,6 +128,7 @@ jobs:
120128
INTER_OP_BBR: 0
121129
BORDER_ROUTING: ${{ matrix.border_routing }}
122130
NAT64: ${{ matrix.internet }}
131+
DNSSD_PLAT: ${{ matrix.dnssd_plat }}
123132
MAX_JOBS: 3
124133
steps:
125134
- uses: actions/checkout@v4
@@ -153,6 +162,7 @@ jobs:
153162
--build-arg NAT64_SERVICE=openthread \
154163
--build-arg DNS64="${{ matrix.internet }}" \
155164
--build-arg MDNS="${{ matrix.otbr_mdns }}" \
165+
--build_arg DNSSD_PLAT="${{ matrix.dnssd_plat }}" \
156166
--build-arg OTBR_OPTIONS="${otbr_options} -DCMAKE_CXX_FLAGS='-DOPENTHREAD_CONFIG_DNSSD_SERVER_BIND_UNSPECIFIED_NETIF=1'"
157167
- name: Bootstrap OpenThread Test
158168
if: ${{ success() && steps.check_cache_result.outputs.cache-hit != 'true' }}

etc/cmake/options.cmake

+7
Original file line numberDiff line numberDiff line change
@@ -171,3 +171,10 @@ if (OTBR_POWER_CALIBRATION)
171171
else()
172172
target_compile_definitions(otbr-config INTERFACE OTBR_ENABLE_POWER_CALIBRATION=0)
173173
endif()
174+
175+
option(OTBR_DNSSD_PLAT "Enable OTBR DNS-SD platform implementation" OFF)
176+
if (OTBR_DNSSD_PLAT)
177+
target_compile_definitions(otbr-config INTERFACE OTBR_ENABLE_DNSSD_PLAT=1)
178+
else()
179+
target_compile_definitions(otbr-config INTERFACE OTBR_ENABLE_DNSSD_PLAT=0)
180+
endif()

etc/docker/Dockerfile

+2
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ ARG REST_API
4343
ARG WEB_GUI
4444
ARG MDNS
4545
ARG FIREWALL
46+
ARG DNSSD_PLAT
4647

4748
ENV INFRA_IF_NAME=${INFRA_IF_NAME:-eth0}
4849
ENV BORDER_ROUTING=${BORDER_ROUTING:-1}
@@ -61,6 +62,7 @@ ENV DNS64=${DNS64:-0}
6162
ENV WEB_GUI=${WEB_GUI:-1}
6263
ENV REST_API=${REST_API:-1}
6364
ENV FIREWALL=${FIREWALL:-1}
65+
ENV DNSSD_PLAT=${DNSSD_PLAT:-0}
6466
ENV DOCKER 1
6567

6668
RUN env

script/_otbr

+10-1
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@ otbr_install()
7272
"-DCMAKE_INSTALL_PREFIX=/usr"
7373
"-DOTBR_DBUS=ON"
7474
"-DOTBR_DNSSD_DISCOVERY_PROXY=ON"
75-
"-DOTBR_SRP_ADVERTISING_PROXY=ON"
7675
"-DOTBR_INFRA_IF_NAME=${INFRA_IF_NAME}"
7776
"-DOTBR_MDNS=${OTBR_MDNS:=mDNSResponder}"
7877
# Force re-evaluation of version strings
@@ -81,6 +80,16 @@ otbr_install()
8180
"${otbr_options[@]}"
8281
)
8382

83+
if with DNSSD_PLAT; then
84+
otbr_options+=(
85+
"-DOTBR_DNSSD_PLAT=ON"
86+
)
87+
else
88+
otbr_options+=(
89+
"-DOTBR_SRP_ADVERTISING_PROXY=ON"
90+
)
91+
fi
92+
8493
if with WEB_GUI; then
8594
otbr_options+=("-DOTBR_WEB=ON")
8695
fi

src/agent/application.cpp

+20
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
#include "agent/application.hpp"
4141
#include "common/code_utils.hpp"
4242
#include "common/mainloop_manager.hpp"
43+
#include "host/posix/dnssd.hpp"
4344
#include "utils/infra_link_selector.hpp"
4445

4546
namespace otbr {
@@ -63,6 +64,9 @@ Application::Application(Host::ThreadHost &aHost,
6364
, mPublisher(
6465
Mdns::Publisher::Create([this](Mdns::Publisher::State aState) { mMdnsStateSubject.UpdateState(aState); }))
6566
#endif
67+
#if OTBR_ENABLE_DNSSD_PLAT
68+
, mDnssdPlatform(*mPublisher)
69+
#endif
6670
#if OTBR_ENABLE_DBUS_SERVER && OTBR_ENABLE_BORDER_AGENT
6771
, mDBusAgent(MakeUnique<DBus::DBusAgent>(mHost, *mPublisher))
6872
#endif
@@ -221,6 +225,9 @@ void Application::CreateRcpMode(const std::string &aRestListenAddress, int aRest
221225

222226
void Application::InitRcpMode(void)
223227
{
228+
Host::RcpHost &rcpHost = static_cast<otbr::Host::RcpHost &>(mHost);
229+
OTBR_UNUSED_VARIABLE(rcpHost);
230+
224231
#if OTBR_ENABLE_BORDER_AGENT
225232
mMdnsStateSubject.AddObserver(*mBorderAgent);
226233
#endif
@@ -233,6 +240,13 @@ void Application::InitRcpMode(void)
233240
#if OTBR_ENABLE_TREL
234241
mMdnsStateSubject.AddObserver(*mTrelDnssd);
235242
#endif
243+
#if OTBR_ENABLE_DNSSD_PLAT
244+
mMdnsStateSubject.AddObserver(mDnssdPlatform);
245+
mDnssdPlatform.SetDnssdStateChangedCallback(([&rcpHost](otPlatDnssdState aState) {
246+
OTBR_UNUSED_VARIABLE(aState);
247+
otPlatDnssdStateHandleStateChange(rcpHost.GetInstance());
248+
}));
249+
#endif
236250

237251
#if OTBR_ENABLE_MDNS
238252
mPublisher->Start();
@@ -267,10 +281,16 @@ void Application::InitRcpMode(void)
267281
#if OTBR_ENABLE_VENDOR_SERVER
268282
mVendorServer->Init();
269283
#endif
284+
#if OTBR_ENABLE_DNSSD_PLAT
285+
mDnssdPlatform.Start();
286+
#endif
270287
}
271288

272289
void Application::DeinitRcpMode(void)
273290
{
291+
#if OTBR_ENABLE_DNSSD_PLAT
292+
mDnssdPlatform.Stop();
293+
#endif
274294
#if OTBR_ENABLE_SRP_ADVERTISING_PROXY
275295
mAdvertisingProxy->SetEnabled(false);
276296
#endif

src/agent/application.hpp

+6
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,9 @@
6161
#if OTBR_ENABLE_VENDOR_SERVER
6262
#include "agent/vendor.hpp"
6363
#endif
64+
#if OTBR_ENABLE_DNSSD_PLAT
65+
#include "host/posix/dnssd.hpp"
66+
#endif
6467
#include "utils/infra_link_selector.hpp"
6568

6669
namespace otbr {
@@ -268,6 +271,9 @@ class Application : private NonCopyable
268271
Mdns::StateSubject mMdnsStateSubject;
269272
std::unique_ptr<Mdns::Publisher> mPublisher;
270273
#endif
274+
#if OTBR_ENABLE_DNSSD_PLAT
275+
DnssdPlatform mDnssdPlatform;
276+
#endif
271277
#if OTBR_ENABLE_BORDER_AGENT
272278
std::unique_ptr<BorderAgent> mBorderAgent;
273279
#endif

src/sdp_proxy/advertising_proxy.cpp

+4
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,10 @@
3737

3838
#if OTBR_ENABLE_SRP_ADVERTISING_PROXY
3939

40+
#if OPENTHREAD_CONFIG_SRP_SERVER_ADVERTISING_PROXY_ENABLE
41+
#error "The Advertising Proxy is already enabled in OpenThread"
42+
#endif
43+
4044
#if !OTBR_ENABLE_MDNS_AVAHI && !OTBR_ENABLE_MDNS_MDNSSD && !OTBR_ENABLE_MDNS_MOJO
4145
#error "The Advertising Proxy requires OTBR_ENABLE_MDNS_AVAHI, OTBR_ENABLE_MDNS_MDNSSD or OTBR_ENABLE_MDNS_MOJO"
4246
#endif

third_party/openthread/CMakeLists.txt

+7-1
Original file line numberDiff line numberDiff line change
@@ -62,22 +62,28 @@ set(OT_NAT64_TRANSLATOR ${OTBR_NAT64} CACHE STRING "enable NAT64 translator" FOR
6262
set(OT_NETDATA_PUBLISHER ON CACHE STRING "enable netdata publisher" FORCE)
6363
set(OT_NETDIAG_CLIENT ON CACHE STRING "enable Network Diagnostic client" FORCE)
6464
set(OT_PLATFORM "posix" CACHE STRING "use posix platform" FORCE)
65+
set(OT_PLATFORM_DNSSD ${OTBR_DNSSD_PLAT} CACHE STRING "enable platform DNSSD" FORCE)
6566
set(OT_PLATFORM_NETIF ON CACHE STRING "enable platform netif" FORCE)
6667
set(OT_PLATFORM_UDP ON CACHE STRING "enable platform UDP" FORCE)
6768
set(OT_SERVICE ON CACHE STRING "enable service" FORCE)
6869
set(OT_SLAAC ON CACHE STRING "enable SLAAC" FORCE)
6970
set(OT_SRP_CLIENT ON CACHE STRING "enable SRP client" FORCE)
71+
set(OT_SRP_ADV_PROXY ${OTBR_DNSSD_PLAT} CACHE STRING "enable SRP Advertising Proxy" FORCE)
7072
set(OT_TARGET_OPENWRT ${OTBR_OPENWRT} CACHE STRING "target on OpenWRT" FORCE)
7173
set(OT_TCP OFF CACHE STRING "disable TCP")
7274
set(OT_TREL ${OTBR_TREL} CACHE STRING "enable TREL" FORCE)
7375
set(OT_UDP_FORWARD OFF CACHE STRING "disable udp forward" FORCE)
7476
set(OT_UPTIME ON CACHE STRING "enable uptime" FORCE)
7577

76-
if (OTBR_SRP_ADVERTISING_PROXY)
78+
if (OTBR_DNSSD_PLAT OR OTBR_SRP_ADVERTISING_PROXY)
7779
set(OT_SRP_SERVER ON CACHE STRING "enable SRP server" FORCE)
7880
set(OT_EXTERNAL_HEAP ON CACHE STRING "enable external heap" FORCE)
7981
endif()
8082

83+
if (OT_SRP_ADV_PROXY AND OTBR_SRP_ADVERTISING_PROXY)
84+
message(FATAL_ERROR "Only one Advertising Proxy can be enabled. ${OTBR_DNSSD_PLAT} ")
85+
endif()
86+
8187
if (NOT OT_THREAD_VERSION STREQUAL "1.1")
8288
if (OT_REFERENCE_DEVICE)
8389
set(OT_DUA ON CACHE STRING "Enable Thread 1.2 DUA for reference devices")

0 commit comments

Comments
 (0)