Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[avahi] Fix usage of searched address type #11377

Merged

Conversation

Damian-Nordic
Copy link
Contributor

Problem

The Avahi-based service resolver mixes two things up:

  • searched address type (A or AAAA record)
  • IP protocol version for doing the query (IPv4 or IPv6)

The service browse callback uses the latter as the former. Consequently, if an IPv6 commissionable service is published
only via IPv4 mDNS server, it can't be properly discovered.

Change overview

Don't pass the same value to protocol (transport type) and aprotocol (searched address type) arguments of the avahi_service_resolver_new function. For the latter use the original value requested by a user when calling the browse method.

Testing

Tested manually using Python CHIPController built with chip_mdns="platform", and running discover -all command.

The Avahi-based service resolver mixes two things up:
- searched address type (A or AAAA record)
- IP protocol version to be used for doing the query.

The service browse callbacks uses the latter as the former.
Consequently, if an IPv6 commissionable service is published
only via IPv4 mDNS server, it can't be properly discovered.
@github-actions
Copy link

github-actions bot commented Nov 3, 2021

PR #11377: Size comparison from 1093d25 to 7ead1b7

Increases (13 builds for efr32, k32w, nrfconnect, qpg)
platform target config section 1093d25 7ead1b7 change % change
efr32 lighting-app BRD4161A+rpc (read only) 726428 726444 16 0.0
.text 726420 726436 16 0.0
k32w shell k32w061+debug (read/write) 424916 424932 16 0.0
.text 359248 359264 16 0.0
nrfconnect lighting-app nrf52840dk_nrf52840 (read/write) 861395 861411 16 0.0
text 577692 577700 8 0.0
nrf52840dk_nrf52840+rpc (read/write) 823771 823787 16 0.0
text 551876 551884 8 0.0
nrf5340dk_nrf5340_cpuapp text 507152 507156 4 0.0
lock-app nrf52840dk_nrf52840 (read/write) 838099 838115 16 0.0
text 559168 559176 8 0.0
nrf5340dk_nrf5340_cpuapp text 488720 488724 4 0.0
pump-app nrf52840dk_nrf52840 (read/write) 844211 844227 16 0.0
text 563348 563356 8 0.0
pump-controller-app nrf52840dk_nrf52840 (read/write) 837955 837971 16 0.0
text 558904 558912 8 0.0
shell nrf52840dk_nrf52840 (read/write) 775991 776007 16 0.0
text 519884 519892 8 0.0
nrf5340dk_nrf5340_cpuapp text 440480 440484 4 0.0
qpg lighting-app qpg6100+debug (read only) 490784 490792 8 0.0
.text 485464 485472 8 0.0
lock-app qpg6100+debug (read only) 467120 467128 8 0.0
.text 461800 461808 8 0.0
Full report (38 builds for efr32, esp32, k32w, linux, mbed, nrfconnect, p6, qpg, telink)
platform target config section 1093d25 7ead1b7 change % change
efr32 lighting-app BRD4161A (read only) 737248 737248 0 0.0
(read/write) 114620 114620 0 0.0
.bss 112860 112860 0 0.0
.data 1756 1756 0 0.0
.text 737240 737240 0 0.0
BRD4161A+rpc (read only) 726428 726444 16 0.0
(read/write) 131236 131236 0 0.0
.bss 129364 129364 0 0.0
.data 1872 1872 0 0.0
.text 726420 726436 16 0.0
lock-app BRD4161A (read only) 716528 716528 0 0.0
(read/write) 112436 112436 0 0.0
.bss 110716 110716 0 0.0
.data 1716 1716 0 0.0
.text 716520 716520 0 0.0
window-app BRD4161A (read only) 717428 717428 0 0.0
(read/write) 112756 112756 0 0.0
.bss 111036 111036 0 0.0
.data 1720 1720 0 0.0
.text 717420 717420 0 0.0
esp32 all-clusters-app c3devkit (read only) 880742 880742 0 0.0
(read/write) 1308096 1308096 0 0.0
.dram0.bss 58616 58616 0 0.0
.dram0.data 16464 16464 0 0.0
.flash.rodata 199776 199776 0 0.0
.flash.text 880742 880742 0 0.0
.iram0.text 57554 57554 0 0.0
m5stack (read only) 911907 911907 0 0.0
(read/write) 427860 427860 0 0.0
.dram0.bss 61120 61120 0 0.0
.dram0.data 32100 32100 0 0.0
.flash.rodata 208476 208476 0 0.0
.flash.text 911907 911907 0 0.0
.iram0.text 125115 125115 0 0.0
k32w lighting-app k32w061+se05x+release (read/write) 699528 699528 0 0.0
.bss 77856 77856 0 0.0
.data 1904 1904 0 0.0
.text 613968 613968 0 0.0
lock-app k32w061+debug (read/write) 591836 591836 0 0.0
.bss 68372 68372 0 0.0
.data 1868 1868 0 0.0
.text 515796 515796 0 0.0
shell k32w061+debug (read/write) 424916 424932 16 0.0
.bss 63296 63296 0 0.0
.data 668 668 0 0.0
.text 359248 359264 16 0.0
linux all-clusters-app debug (read only) 1691105 1691105 0 0.0
(read/write) 119760 119760 0 0.0
.bss 51184 51184 0 0.0
.data 1042 1042 0 0.0
.data.rel.ro 62272 62272 0 0.0
.dynamic 592 592 0 0.0
.got 4088 4088 0 0.0
.init 27 27 0 0.0
.init_array 536 536 0 0.0
.rodata 139925 139925 0 0.0
.text 1417762 1417762 0 0.0
bridge-app debug+rpc (read only) 1287325 1287325 0 0.0
(read/write) 69384 69384 0 0.0
.bss 35088 35088 0 0.0
.data 1568 1568 0 0.0
.data.rel.ro 27768 27768 0 0.0
.dynamic 592 592 0 0.0
.got 3952 3952 0 0.0
.init 27 27 0 0.0
.init_array 400 400 0 0.0
.rodata 111460 111460 0 0.0
.text 1079973 1079973 0 0.0
chip-tool debug (read only) 4351269 4351269 0 0.0
(read/write) 124896 124896 0 0.0
.bss 18224 18224 0 0.0
.data 2224 2224 0 0.0
.data.rel.ro 99040 99040 0 0.0
.dynamic 592 592 0 0.0
.got 4368 4368 0 0.0
.init 27 27 0 0.0
.init_array 424 424 0 0.0
.rodata 219560 219560 0 0.0
.text 3865669 3865669 0 0.0
lighting-app debug+rpc (read only) 1548449 1548449 0 0.0
(read/write) 102352 102352 0 0.0
.bss 40728 40728 0 0.0
.data 1170 1170 0 0.0
.data.rel.ro 55168 55168 0 0.0
.dynamic 608 608 0 0.0
.got 4112 4112 0 0.0
.init 27 27 0 0.0
.init_array 528 528 0 0.0
.rodata 130225 130225 0 0.0
.text 1284642 1284642 0 0.0
ota-provider-app debug (read only) 1243841 1243841 0 0.0
(read/write) 67552 67552 0 0.0
.bss 37152 37152 0 0.0
.data 752 752 0 0.0
.data.rel.ro 24568 24568 0 0.0
.dynamic 592 592 0 0.0
.got 4016 4016 0 0.0
.init 27 27 0 0.0
.init_array 440 440 0 0.0
.rodata 112456 112456 0 0.0
.text 1035282 1035282 0 0.0
ota-requestor-app debug (read only) 1311201 1311201 0 0.0
(read/write) 76872 76872 0 0.0
.bss 45408 45408 0 0.0
.data 816 816 0 0.0
.data.rel.ro 25512 25512 0 0.0
.dynamic 592 592 0 0.0
.got 3984 3984 0 0.0
.init 27 27 0 0.0
.init_array 512 512 0 0.0
.rodata 123424 123424 0 0.0
.text 1089986 1089986 0 0.0
shell debug (read only) 786593 786593 0 0.0
(read/write) 57664 57664 0 0.0
.bss 16104 16104 0 0.0
.data 242 242 0 0.0
.data.rel.ro 36816 36816 0 0.0
.dynamic 592 592 0 0.0
.got 3528 3528 0 0.0
.init 27 27 0 0.0
.init_array 336 336 0 0.0
.rodata 77839 77839 0 0.0
.text 607266 607266 0 0.0
tv-app debug (read only) 1810697 1810697 0 0.0
(read/write) 289976 289976 0 0.0
.bss 222800 222800 0 0.0
.data 2704 2704 0 0.0
.data.rel.ro 58824 58824 0 0.0
.dynamic 592 592 0 0.0
.got 4408 4408 0 0.0
.init 27 27 0 0.0
.init_array 608 608 0 0.0
.rodata 155736 155736 0 0.0
.text 1512674 1512674 0 0.0
mbed all-clusters-app CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 2293224 2293224 0 0.0
.bss 179972 179972 0 0.0
.data 5216 5216 0 0.0
.heap 851256 851256 0 0.0
.text 1255824 1255824 0 0.0
lighting-app CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 2272792 2272792 0 0.0
.bss 172012 172012 0 0.0
.data 5568 5568 0 0.0
.heap 858864 858864 0 0.0
.text 1235392 1235392 0 0.0
lock-app CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 2250512 2250512 0 0.0
.bss 170908 170908 0 0.0
.data 5560 5560 0 0.0
.heap 859976 859976 0 0.0
.text 1213112 1213112 0 0.0
pigweed-app CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 1139744 1139744 0 0.0
.bss 11752 11752 0 0.0
.data 4368 4368 0 0.0
.heap 1020328 1020328 0 0.0
.text 103128 103128 0 0.0
shell CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 2048496 2048496 0 0.0
.bss 156256 156256 0 0.0
.data 4960 4960 0 0.0
.heap 875232 875232 0 0.0
.text 1011096 1011096 0 0.0
nrfconnect lighting-app nrf52840dk_nrf52840 (read/write) 861395 861411 16 0.0
bss 111320 111320 0 0.0
rodata 96772 96772 0 0.0
text 577692 577700 8 0.0
nrf52840dk_nrf52840+rpc (read/write) 823771 823787 16 0.0
bss 107672 107672 0 0.0
rodata 87948 87948 0 0.0
text 551876 551884 8 0.0
nrf5340dk_nrf5340_cpuapp (read/write) 786434 786434 0 0.0
bss 112696 112696 0 0.0
rodata 92028 92028 0 0.0
text 507152 507156 4 0.0
lock-app nrf52840dk_nrf52840 (read/write) 838099 838115 16 0.0
bss 110356 110356 0 0.0
rodata 93140 93140 0 0.0
text 559168 559176 8 0.0
nrf5340dk_nrf5340_cpuapp (read/write) 763398 763398 0 0.0
bss 111764 111764 0 0.0
rodata 88448 88448 0 0.0
text 488720 488724 4 0.0
pigweed-app nrf52840dk_nrf52840 (read/write) 497323 497323 0 0.0
bss 51824 51824 0 0.0
rodata 45776 45776 0 0.0
text 339436 339436 0 0.0
pump-app nrf52840dk_nrf52840 (read/write) 844211 844227 16 0.0
bss 110492 110492 0 0.0
rodata 94852 94852 0 0.0
text 563348 563356 8 0.0
pump-controller-app nrf52840dk_nrf52840 (read/write) 837955 837971 16 0.0
bss 110392 110392 0 0.0
rodata 93140 93140 0 0.0
text 558904 558912 8 0.0
shell nrf52840dk_nrf52840 (read/write) 775991 776007 16 0.0
bss 109112 109112 0 0.0
rodata 72412 72412 0 0.0
text 519884 519892 8 0.0
nrf5340dk_nrf5340_cpuapp (read/write) 691026 691026 0 0.0
bss 110092 110092 0 0.0
rodata 67052 67052 0 0.0
text 440480 440484 4 0.0
p6 all-clusters-app default (read/write) 2300752 2300752 0 0.0
.bss 107912 107912 0 0.0
.data 2520 2520 0 0.0
.heap 922912 922912 0 0.0
.text 1259016 1259016 0 0.0
lock-app default (read/write) 2213744 2213744 0 0.0
.bss 95712 95712 0 0.0
.data 2392 2392 0 0.0
.heap 935240 935240 0 0.0
.text 1172008 1172008 0 0.0
qpg lighting-app qpg6100+debug (read only) 490784 490792 8 0.0
(read/write) 114140 114140 0 0.0
.bss 50416 50416 0 0.0
.data 1004 1004 0 0.0
.text 485464 485472 8 0.0
lock-app qpg6100+debug (read only) 467120 467128 8 0.0
(read/write) 114144 114144 0 0.0
.bss 49360 49360 0 0.0
.data 960 960 0 0.0
.text 461800 461808 8 0.0
persistent-storage-app qpg6100+debug (read only) 153212 153212 0 0.0
(read/write) 114140 114140 0 0.0
.bss 18336 18336 0 0.0
.data 356 356 0 0.0
.text 147892 147892 0 0.0
telink lighting-app tlsr9518adk80d (read/write) 662894 662894 0 0.0
bss 69132 69132 0 0.0
noinit 33216 33216 0 0.0
text 458028 458028 0 0.0

@bzbarsky-apple bzbarsky-apple merged commit 38fe11e into project-chip:master Nov 3, 2021
PSONALl pushed a commit to PSONALl/connectedhomeip that referenced this pull request Dec 3, 2021
The Avahi-based service resolver mixes two things up:
- searched address type (A or AAAA record)
- IP protocol version to be used for doing the query.

The service browse callbacks uses the latter as the former.
Consequently, if an IPv6 commissionable service is published
only via IPv4 mDNS server, it can't be properly discovered.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants