mirror of
https://github.com/espressif/esp-protocols.git
synced 2025-07-16 12:02:11 +02:00
mdns: Add support for registering custom netif
* Original commit: espressif/esp-idf@bec42ff85d
This commit is contained in:
committed by
suren-gabrielyan-espressif
parent
ddc58e8220
commit
30f37c0565
@ -719,6 +719,11 @@ esp_err_t mdns_query_a(const char * host_name, uint32_t timeout, esp_ip4_addr_t
|
|||||||
esp_err_t mdns_query_aaaa(const char * host_name, uint32_t timeout, esp_ip6_addr_t * addr);
|
esp_err_t mdns_query_aaaa(const char * host_name, uint32_t timeout, esp_ip6_addr_t * addr);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
esp_err_t mdns_add_custom_netif(esp_netif_t *esp_netif);
|
||||||
|
esp_err_t mdns_post_custom_action(esp_netif_t *esp_netif, mdns_event_actions_t event_action);
|
||||||
|
esp_err_t mdns_delete_custom_netif(esp_netif_t *esp_netif);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -5086,6 +5086,52 @@ esp_err_t mdns_post_custom_action(esp_netif_t *esp_netif, mdns_event_actions_t e
|
|||||||
return mdns_post_custom_action_tcpip_if(_mdns_get_if_from_esp_netif(esp_netif), event_action);
|
return mdns_post_custom_action_tcpip_if(_mdns_get_if_from_esp_netif(esp_netif), event_action);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
esp_err_t mdns_add_custom_netif(esp_netif_t *esp_netif)
|
||||||
|
{
|
||||||
|
if (!_mdns_server) {
|
||||||
|
return ESP_ERR_INVALID_STATE;
|
||||||
|
}
|
||||||
|
|
||||||
|
esp_err_t err = ESP_ERR_NO_MEM;
|
||||||
|
MDNS_SERVICE_LOCK();
|
||||||
|
for (mdns_if_t i=0; i<MDNS_MAX_INTERFACES; ++i) {
|
||||||
|
if (s_esp_netifs[i].netif == esp_netif) {
|
||||||
|
MDNS_SERVICE_UNLOCK();
|
||||||
|
return ESP_ERR_INVALID_STATE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (mdns_if_t i=0; i<MDNS_MAX_INTERFACES; ++i) {
|
||||||
|
if (!s_esp_netifs[i].predefined && s_esp_netifs[i].netif == NULL) {
|
||||||
|
s_esp_netifs[i].netif = esp_netif;
|
||||||
|
err = ESP_OK;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
MDNS_SERVICE_UNLOCK();
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
esp_err_t mdns_delete_custom_netif(esp_netif_t *esp_netif)
|
||||||
|
{
|
||||||
|
if (!_mdns_server) {
|
||||||
|
return ESP_ERR_INVALID_STATE;
|
||||||
|
}
|
||||||
|
|
||||||
|
esp_err_t err = ESP_ERR_NOT_FOUND;
|
||||||
|
MDNS_SERVICE_LOCK();
|
||||||
|
for (mdns_if_t i=0; i<MDNS_MAX_INTERFACES; ++i) {
|
||||||
|
if (!s_esp_netifs[i].predefined && s_esp_netifs[i].netif == esp_netif) {
|
||||||
|
s_esp_netifs[i].netif = NULL;
|
||||||
|
err = ESP_OK;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
MDNS_SERVICE_UNLOCK();
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
esp_err_t mdns_init(void)
|
esp_err_t mdns_init(void)
|
||||||
{
|
{
|
||||||
esp_err_t err = ESP_OK;
|
esp_err_t err = ESP_OK;
|
||||||
@ -5133,7 +5179,9 @@ esp_err_t mdns_init(void)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if CONFIG_MDNS_PREDEF_NETIF_STA || CONFIG_MDNS_PREDEF_NETIF_AP || CONFIG_MDNS_PREDEF_NETIF_ETH
|
||||||
set_default_duplicated_interfaces();
|
set_default_duplicated_interfaces();
|
||||||
|
#endif
|
||||||
|
|
||||||
uint8_t i;
|
uint8_t i;
|
||||||
#if CONFIG_LWIP_IPV6
|
#if CONFIG_LWIP_IPV6
|
||||||
@ -5166,8 +5214,10 @@ free_all_and_disable_pcbs:
|
|||||||
_mdns_disable_pcb(i, MDNS_IP_PROTOCOL_V4);
|
_mdns_disable_pcb(i, MDNS_IP_PROTOCOL_V4);
|
||||||
s_esp_netifs[i].duplicate = MDNS_MAX_INTERFACES;
|
s_esp_netifs[i].duplicate = MDNS_MAX_INTERFACES;
|
||||||
}
|
}
|
||||||
|
#if CONFIG_MDNS_PREDEF_NETIF_STA || CONFIG_MDNS_PREDEF_NETIF_AP || CONFIG_MDNS_PREDEF_NETIF_ETH
|
||||||
free_event_handlers:
|
free_event_handlers:
|
||||||
unregister_predefined_handlers();
|
unregister_predefined_handlers();
|
||||||
|
#endif
|
||||||
vQueueDelete(_mdns_server->action_queue);
|
vQueueDelete(_mdns_server->action_queue);
|
||||||
free_lock:
|
free_lock:
|
||||||
vSemaphoreDelete(_mdns_server->lock);
|
vSemaphoreDelete(_mdns_server->lock);
|
||||||
|
@ -48,4 +48,13 @@ menu "Example Configuration"
|
|||||||
help
|
help
|
||||||
Set the GPIO number used as mDNS test button
|
Set the GPIO number used as mDNS test button
|
||||||
|
|
||||||
|
config MDNS_ADD_CUSTOM_NETIF
|
||||||
|
bool "Add user netif to mdns service"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
If enabled, we try to add a custom netif to mdns service.
|
||||||
|
Note that for using with common connection example code, we have to disable
|
||||||
|
all predefined interfaces in mdns component setup (since we're adding one
|
||||||
|
of the default interfaces)
|
||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
@ -266,6 +266,14 @@ void app_main(void)
|
|||||||
*/
|
*/
|
||||||
ESP_ERROR_CHECK(example_connect());
|
ESP_ERROR_CHECK(example_connect());
|
||||||
|
|
||||||
|
#if defined(CONFIG_MDNS_ADD_CUSTOM_NETIF) && !defined(CONFIG_MDNS_PREDEF_NETIF_STA) && !defined(CONFIG_MDNS_PREDEF_NETIF_ETH)
|
||||||
|
/* Demonstration of adding a custom netif to mdns service, but we're adding the default example one,
|
||||||
|
* so we must disable all predefined interfaces (PREDEF_NETIF_STA, AP and ETH) first
|
||||||
|
*/
|
||||||
|
ESP_ERROR_CHECK(mdns_add_custom_netif(EXAMPLE_INTERFACE));
|
||||||
|
ESP_ERROR_CHECK(mdns_post_custom_action(EXAMPLE_INTERFACE, MDNS_EVENT_ENABLE_IP4));
|
||||||
|
ESP_ERROR_CHECK(mdns_post_custom_action(EXAMPLE_INTERFACE, MDNS_EVENT_ANNOUNCE_IP4));
|
||||||
|
#endif
|
||||||
initialise_button();
|
initialise_button();
|
||||||
xTaskCreate(&mdns_example_task, "mdns_example_task", 2048, NULL, 5, NULL);
|
xTaskCreate(&mdns_example_task, "mdns_example_task", 2048, NULL, 5, NULL);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user