mirror of
https://github.com/espressif/esp-protocols.git
synced 2025-07-23 15:27:28 +02:00
mdns: fix mdns probe/reply behavior
* send correct hostnames when probing. * add test for mdns host delegation. * Original commit: espressif/esp-idf@d2a5d25984
This commit is contained in:
committed by
suren-gabrielyan-espressif
parent
4049b3b5ed
commit
418fb60dd9
@ -34,6 +34,9 @@ static void query_mdns_host_with_getaddrinfo(char * host);
|
||||
static void initialise_mdns(void)
|
||||
{
|
||||
char *hostname = generate_hostname();
|
||||
char delegated_hostname[64];
|
||||
|
||||
snprintf(delegated_hostname, sizeof(delegated_hostname), "%s-delegated", hostname);
|
||||
//initialize mDNS
|
||||
ESP_ERROR_CHECK( mdns_init() );
|
||||
//set mDNS hostname (required if you want to advertise services)
|
||||
@ -51,19 +54,23 @@ static void initialise_mdns(void)
|
||||
|
||||
//initialize service
|
||||
ESP_ERROR_CHECK( mdns_service_add("ESP32-WebServer", "_http", "_tcp", 80, serviceTxtData, 3) );
|
||||
|
||||
#if CONFIG_MDNS_PUBLISH_DELEGATE_HOST
|
||||
mdns_ip_addr_t addr4, addr6;
|
||||
ip4_addr_t ip4_addr;
|
||||
ip6_addr_t ip6_addr;
|
||||
ip4addr_aton("10.0.0.1", &ip4_addr);
|
||||
ip4addr_aton("10.0.0.1", &ip4_addr); // mock address
|
||||
addr4.addr.u_addr.ip4.addr = ip4_addr.addr;
|
||||
addr4.addr.type = ESP_IPADDR_TYPE_V4;
|
||||
addr4.next = &addr6;
|
||||
ip6addr_aton("fd11:22::1", &ip6_addr);
|
||||
ip6addr_aton("fd11:22::1", &ip6_addr); // mock address
|
||||
memcpy(addr6.addr.u_addr.ip6.addr, ip6_addr.addr, sizeof(ip6_addr.addr));
|
||||
addr6.addr.type = ESP_IPADDR_TYPE_V6;
|
||||
addr6.next = NULL;
|
||||
ESP_ERROR_CHECK( mdns_delegate_hostname_add("test-device", &addr4) );
|
||||
ESP_ERROR_CHECK( mdns_service_add_for_host("test0", "_http", "_tcp", "test-device", 1234, serviceTxtData, 3) );
|
||||
ESP_ERROR_CHECK( mdns_delegate_hostname_add(delegated_hostname, &addr4) );
|
||||
ESP_ERROR_CHECK( mdns_service_add_for_host("test0", "_http", "_tcp", delegated_hostname, 1234, serviceTxtData, 3) );
|
||||
#endif // CONFIG_MDNS_PUBLISH_DELEGATE_HOST
|
||||
|
||||
//add another TXT item
|
||||
ESP_ERROR_CHECK( mdns_service_txt_item_set("_http", "_tcp", "path", "/foobar") );
|
||||
//change TXT item value
|
||||
@ -186,16 +193,10 @@ static void mdns_example_task(void *pvParameters)
|
||||
query_mdns_host_with_gethostbyname("tinytester-lwip.local");
|
||||
query_mdns_host_with_getaddrinfo("tinytester-lwip.local");
|
||||
#endif
|
||||
bool removed = false;
|
||||
|
||||
while (1) {
|
||||
check_button();
|
||||
vTaskDelay(50 / portTICK_PERIOD_MS);
|
||||
if (pdTICKS_TO_MS(xTaskGetTickCount()) >= 15 * 1000 && ! removed) {
|
||||
ESP_LOGI(TAG, "Remove delegate device\n");
|
||||
ESP_ERROR_CHECK(mdns_delegate_hostname_remove("test-device"));
|
||||
removed = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user