Complete Phase 12 dual-stack networking

Add IPv6-aware Wi-Fi state, HTTPS/SSH listeners, mDNS service
reconciliation, and browser Wi-Fi administration.

Include a guarded build-local fix for mDNS 1.12.0 membership handling,
focused regression suites, and Phase 12 acceptance documentation.
This commit is contained in:
2026-09-20 22:35:34 +02:00
parent ece4ba77e3
commit 8902b25d78
52 changed files with 3042 additions and 163 deletions
+44
View File
@@ -0,0 +1,44 @@
# Only the lwIP backend needs this fix. Keep the managed component immutable.
function(project_mdns_membership_overlay)
if(CONFIG_MDNS_NETWORKING_SOCKET)
return()
endif()
idf_component_get_property(mdns_dir espressif__mdns COMPONENT_DIR)
idf_component_get_property(mdns_lib espressif__mdns COMPONENT_LIB)
idf_component_get_property(mdns_version espressif__mdns COMPONENT_VERSION)
if(NOT mdns_version STREQUAL "1.12.0")
message(FATAL_ERROR "mDNS membership overlay requires component version 1.12.0; review upstream")
endif()
idf_build_get_property(python PYTHON)
set(helper "${CMAKE_CURRENT_LIST_DIR}/mdns_membership.py")
set(original "${mdns_dir}/mdns_networking_lwip.c")
set(overlay "${CMAKE_BINARY_DIR}/mdns_membership/mdns_networking_lwip.c")
set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS
"${helper}" "${original}" "${mdns_dir}/idf_component.yml" "${overlay}")
execute_process(COMMAND "${python}" "${helper}" "${mdns_dir}" "${overlay}"
RESULT_VARIABLE result OUTPUT_VARIABLE output ERROR_VARIABLE error)
if(NOT result EQUAL 0)
message(FATAL_ERROR "mDNS membership overlay failed: ${output}${error}")
endif()
get_target_property(sources ${mdns_lib} SOURCES)
get_target_property(source_dir ${mdns_lib} SOURCE_DIR)
set(replaced 0)
set(updated_sources)
foreach(source IN LISTS sources)
get_filename_component(absolute "${source}" ABSOLUTE BASE_DIR "${source_dir}")
if(absolute STREQUAL original)
list(APPEND updated_sources "${overlay}")
math(EXPR replaced "${replaced} + 1")
else()
list(APPEND updated_sources "${source}")
endif()
endforeach()
if(NOT replaced EQUAL 1)
message(FATAL_ERROR "Expected exactly one mDNS lwIP target source, found ${replaced}; review upstream CMake")
endif()
set_property(TARGET ${mdns_lib} PROPERTY SOURCES "${updated_sources}")
message(STATUS "mDNS 1.12.0: using guarded build-local multicast membership fix")
endfunction()
project_mdns_membership_overlay()