mirror of
https://github.com/espressif/esp-protocols.git
synced 2025-07-16 03:52:13 +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
@ -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);
|
||||
}
|
||||
|
||||
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 err = ESP_OK;
|
||||
@ -5133,7 +5179,9 @@ esp_err_t mdns_init(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
#if CONFIG_MDNS_PREDEF_NETIF_STA || CONFIG_MDNS_PREDEF_NETIF_AP || CONFIG_MDNS_PREDEF_NETIF_ETH
|
||||
set_default_duplicated_interfaces();
|
||||
#endif
|
||||
|
||||
uint8_t i;
|
||||
#if CONFIG_LWIP_IPV6
|
||||
@ -5166,8 +5214,10 @@ free_all_and_disable_pcbs:
|
||||
_mdns_disable_pcb(i, MDNS_IP_PROTOCOL_V4);
|
||||
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:
|
||||
unregister_predefined_handlers();
|
||||
#endif
|
||||
vQueueDelete(_mdns_server->action_queue);
|
||||
free_lock:
|
||||
vSemaphoreDelete(_mdns_server->lock);
|
||||
|
Reference in New Issue
Block a user