Skip to content

Commit b852388

Browse files
authored
[trel] require link-local for peer discovered by mDNS (#2709)
1 parent cc5e334 commit b852388

File tree

2 files changed

+7
-26
lines changed

2 files changed

+7
-26
lines changed

.github/workflows/border_router.yml

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -73,14 +73,6 @@ jobs:
7373
otbr_mdns: "mDNSResponder"
7474
cert_scripts: ./tests/scripts/thread-cert/border_router/*.py
7575
packet_verification: 2
76-
- name: "Border Router TREL (Avahi)"
77-
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"
78-
border_routing: 1
79-
internet: 0
80-
dnssd_plat: 0
81-
otbr_mdns: "avahi"
82-
cert_scripts: ./tests/scripts/thread-cert/border_router/*.py
83-
packet_verification: 2
8476
- name: "Border Router MATN (mDNSResponder)"
8577
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"
8678
border_routing: 1
@@ -105,24 +97,16 @@ jobs:
10597
otbr_mdns: "mDNSResponder"
10698
cert_scripts: ./tests/scripts/thread-cert/backbone/*.py
10799
packet_verification: 1
108-
- name: "Border Router TREL with FEATURE_FLAG (avahi)"
109-
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_FEATURE_FLAGS=ON -DOTBR_TELEMETRY_DATA_API=ON -DOTBR_TREL=ON -DOTBR_DNS_UPSTREAM_QUERY=ON"
110-
border_routing: 1
111-
internet: 0
112-
dnssd_plat: 0
113-
otbr_mdns: "avahi"
114-
cert_scripts: ./tests/scripts/thread-cert/border_router/*.py
115-
packet_verification: 2
116100
- name: "Border Router with OT Core Advertising Proxy (avahi)"
117-
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"
101+
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"
118102
border_routing: 1
119103
internet: 0
120104
dnssd_plat: 1
121105
otbr_mdns: "avahi"
122106
cert_scripts: ./tests/scripts/thread-cert/border_router/*.py
123107
packet_verification: 1
124108
- name: "Border Router with OT Core Advertising Proxy (mDNSResponder)"
125-
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"
109+
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"
126110
border_routing: 1
127111
internet: 0
128112
dnssd_plat: 1

src/trel_dnssd/trel_dnssd.cpp

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -301,25 +301,22 @@ void TrelDnssd::OnTrelServiceInstanceAdded(const Mdns::Publisher::DiscoveredInst
301301
{
302302
otbrLogDebug("Peer address: %s", addr.ToString().c_str());
303303

304-
// Skip anycast (Refer to https://datatracker.ietf.org/doc/html/rfc2373#section-2.6.1)
305-
if (addr.m64[1] == 0)
304+
// Require link-local. Thread requires TREL peers to advertise link-local via mDNS.
305+
if (!addr.IsLinkLocal())
306306
{
307307
continue;
308308
}
309309

310-
// If there are multiple addresses, we prefer the address
311-
// which is numerically smallest. This prefers GUA over ULA
312-
// (`fc00::/7`) and then link-local (`fe80::/10`).
313-
310+
// Pick the smallest link-local to be robust to reorderings.
314311
if (selectedAddress.IsUnspecified() || (addr < selectedAddress))
315312
{
316313
selectedAddress = addr;
317314
}
318315
}
319316

320-
if (aInstanceInfo.mAddresses.empty())
317+
if (selectedAddress.IsUnspecified())
321318
{
322-
otbrLogWarning("Peer %s does not have any IPv6 address, ignored", aInstanceInfo.mName.c_str());
319+
otbrLogWarning("Peer %s does not have any IPv6 link-local address, ignored", aInstanceInfo.mName.c_str());
323320
ExitNow();
324321
}
325322

0 commit comments

Comments
 (0)