diff --git a/components/mdns/include/mdns.h b/components/mdns/include/mdns.h index 8c58687b5..ff0d76b09 100644 --- a/components/mdns/include/mdns.h +++ b/components/mdns/include/mdns.h @@ -269,6 +269,7 @@ esp_err_t mdns_service_remove(const char * service_type, const char * proto); /** * @brief Remove service from mDNS server with hostname * + * @param instance instance name * @param service_type service type (_http, _ftp, etc) * @param proto service protocol (_tcp, _udp) * @param hostname service hostname. If NULL, local hostname will be used. @@ -279,7 +280,7 @@ esp_err_t mdns_service_remove(const char * service_type, const char * proto); * - ESP_ERR_NOT_FOUND Service not found * - ESP_ERR_NO_MEM memory error */ -esp_err_t mdns_service_remove_for_host(const char * service_type, const char * proto, const char *hostname); +esp_err_t mdns_service_remove_for_host(const char *instance, const char * service_type, const char * proto, const char *hostname); /** * @brief Set instance name for service @@ -299,6 +300,7 @@ esp_err_t mdns_service_instance_name_set(const char * service_type, const char * /** * @brief Set instance name for service with hostname * + * @param instance_old original instance name * @param service_type service type (_http, _ftp, etc) * @param proto service protocol (_tcp, _udp) * @param hostname service hostname. If NULL, local hostname will be used. @@ -310,7 +312,7 @@ esp_err_t mdns_service_instance_name_set(const char * service_type, const char * * - ESP_ERR_NOT_FOUND Service not found * - ESP_ERR_NO_MEM memory error */ -esp_err_t mdns_service_instance_name_set_for_host(const char * service_type, const char * proto, const char * hostname, +esp_err_t mdns_service_instance_name_set_for_host(const char * instance_old, const char * service_type, const char * proto, const char * hostname, const char * instance_name); /** @@ -332,6 +334,7 @@ esp_err_t mdns_service_port_set(const char * service_type, const char * proto, u /** * @brief Set service port with hostname * + * @param instance instance name * @param service_type service type (_http, _ftp, etc) * @param proto service protocol (_tcp, _udp) * @param hostname service hostname. If NULL, local hostname will be used. @@ -343,7 +346,7 @@ esp_err_t mdns_service_port_set(const char * service_type, const char * proto, u * - ESP_ERR_NOT_FOUND Service not found * - ESP_ERR_NO_MEM memory error */ -esp_err_t mdns_service_port_set_for_host(const char * service_type, const char * proto, const char * hostname, +esp_err_t mdns_service_port_set_for_host(const char * instance, const char * service_type, const char * proto, const char * hostname, uint16_t port); /** @@ -369,6 +372,7 @@ esp_err_t mdns_service_txt_set(const char * service_type, const char * proto, md * * @note The value length of txt items will be automatically decided by strlen * + * @param instance instance name * @param service_type service type (_http, _ftp, etc) * @param proto service protocol (_tcp, _udp) * @param hostname service hostname. If NULL, local hostname will be used. @@ -381,7 +385,7 @@ esp_err_t mdns_service_txt_set(const char * service_type, const char * proto, md * - ESP_ERR_NOT_FOUND Service not found * - ESP_ERR_NO_MEM memory error */ -esp_err_t mdns_service_txt_set_for_host(const char * service_type, const char * proto, const char * hostname, +esp_err_t mdns_service_txt_set_for_host(const char * instance, const char * service_type, const char * proto, const char * hostname, mdns_txt_item_t txt[], uint8_t num_items); /** @@ -425,6 +429,7 @@ esp_err_t mdns_service_txt_item_set_with_explicit_value_len(const char *service_ * * @note The value length will be automatically decided by strlen * + * @param instance instance name * @param service_type service type (_http, _ftp, etc) * @param proto service protocol (_tcp, _udp) * @param hostname service hostname. If NULL, local hostname will be used. @@ -437,12 +442,13 @@ esp_err_t mdns_service_txt_item_set_with_explicit_value_len(const char *service_ * - ESP_ERR_NOT_FOUND Service not found * - ESP_ERR_NO_MEM memory error */ -esp_err_t mdns_service_txt_item_set_for_host(const char * service_type, const char * proto, const char * hostname, +esp_err_t mdns_service_txt_item_set_for_host(const char * instance, const char * service_type, const char * proto, const char * hostname, const char * key, const char * value); /** * @brief Set/Add TXT item for service TXT record with hostname and txt value length * + * @param instance instance name * @param service_type service type (_http, _ftp, etc) * @param proto service protocol (_tcp, _udp) * @param hostname service hostname. If NULL, local hostname will be used. @@ -456,7 +462,7 @@ esp_err_t mdns_service_txt_item_set_for_host(const char * service_type, const ch * - ESP_ERR_NOT_FOUND Service not found * - ESP_ERR_NO_MEM memory error */ -esp_err_t mdns_service_txt_item_set_for_host_with_explicit_value_len(const char *service_type, const char *proto, +esp_err_t mdns_service_txt_item_set_for_host_with_explicit_value_len(const char * instance, const char *service_type, const char *proto, const char *hostname, const char *key, const char *value, uint8_t value_len); @@ -478,6 +484,7 @@ esp_err_t mdns_service_txt_item_remove(const char * service_type, const char * p /** * @brief Remove TXT item for service TXT record with hostname * + * @param instance instance name * @param service_type service type (_http, _ftp, etc) * @param proto service protocol (_tcp, _udp) * @param hostname service hostname. If NULL, local hostname will be used. @@ -489,7 +496,7 @@ esp_err_t mdns_service_txt_item_remove(const char * service_type, const char * p * - ESP_ERR_NOT_FOUND Service not found * - ESP_ERR_NO_MEM memory error */ -esp_err_t mdns_service_txt_item_remove_for_host(const char * service_type, const char * proto, const char * hostname, +esp_err_t mdns_service_txt_item_remove_for_host(const char * instance, const char * service_type, const char * proto, const char * hostname, const char * key); /** diff --git a/components/mdns/mdns.c b/components/mdns/mdns.c index 351b5c169..988a15fc4 100644 --- a/components/mdns/mdns.c +++ b/components/mdns/mdns.c @@ -5131,11 +5131,7 @@ esp_err_t mdns_service_add_for_host(const char * instance, const char * service, return ESP_ERR_NO_MEM; } -#if CONFIG_MDNS_MULTIPLE_INSTANCE mdns_srv_item_t * item = _mdns_get_service_item_instance(instance, service, proto, hostname); -#else - mdns_srv_item_t * item = _mdns_get_service_item(service, proto, hostname); -#endif // CONFIG_MDNS_MULTIPLE_INSTANCE if (item) { return ESP_ERR_INVALID_ARG; } @@ -5173,7 +5169,7 @@ esp_err_t mdns_service_add_for_host(const char * instance, const char * service, size_t start = xTaskGetTickCount(); size_t timeout_ticks = pdMS_TO_TICKS(MDNS_SERVICE_ADD_TIMEOUT_MS); - while (_mdns_get_service_item(service, proto, hostname) == NULL) { + while (_mdns_get_service_item_instance(instance, service, proto, hostname) == NULL) { uint32_t expired = xTaskGetTickCount() - start; if (expired >= timeout_ticks) { return ESP_FAIL; // Timeout @@ -5204,12 +5200,12 @@ bool mdns_service_exists_with_instance(const char *instance, const char *service return _mdns_get_service_item_instance(instance, service_type, proto, hostname) != NULL; } -esp_err_t mdns_service_port_set_for_host(const char * service, const char * proto, const char * hostname, uint16_t port) +esp_err_t mdns_service_port_set_for_host(const char *instance, const char * service, const char * proto, const char * hostname, uint16_t port) { if (!_mdns_server || !_mdns_server->services || _str_null_or_empty(service) || _str_null_or_empty(proto) || !port) { return ESP_ERR_INVALID_ARG; } - mdns_srv_item_t * s = _mdns_get_service_item(service, proto, hostname); + mdns_srv_item_t * s = _mdns_get_service_item_instance(instance, service, proto, hostname); if (!s) { return ESP_ERR_NOT_FOUND; } @@ -5234,16 +5230,16 @@ esp_err_t mdns_service_port_set(const char * service, const char * proto, uint16 if (!_mdns_server) { return ESP_ERR_INVALID_STATE; } - return mdns_service_port_set_for_host(service, proto, _mdns_server->hostname, port); + return mdns_service_port_set_for_host(NULL, service, proto, _mdns_server->hostname, port); } -esp_err_t mdns_service_txt_set_for_host(const char * service, const char * proto, const char * hostname, +esp_err_t mdns_service_txt_set_for_host(const char * instance, const char * service, const char * proto, const char * hostname, mdns_txt_item_t txt[], uint8_t num_items) { if (!_mdns_server || !_mdns_server->services || _str_null_or_empty(service) || _str_null_or_empty(proto) || (num_items && txt == NULL)) { return ESP_ERR_INVALID_ARG; } - mdns_srv_item_t * s = _mdns_get_service_item(service, proto, hostname); + mdns_srv_item_t * s = _mdns_get_service_item_instance(instance, service, proto, hostname); if (!s) { return ESP_ERR_NOT_FOUND; } @@ -5279,10 +5275,10 @@ esp_err_t mdns_service_txt_set(const char * service, const char * proto, mdns_tx if (!_mdns_server) { return ESP_ERR_INVALID_STATE; } - return mdns_service_txt_set_for_host(service, proto, _mdns_server->hostname, txt, num_items); + return mdns_service_txt_set_for_host(NULL, service, proto, _mdns_server->hostname, txt, num_items); } -esp_err_t mdns_service_txt_item_set_for_host_with_explicit_value_len(const char *service, const char *proto, +esp_err_t mdns_service_txt_item_set_for_host_with_explicit_value_len(const char * instance, const char *service, const char *proto, const char *hostname, const char *key, const char *value, uint8_t value_len) { @@ -5290,7 +5286,7 @@ esp_err_t mdns_service_txt_item_set_for_host_with_explicit_value_len(const char _str_null_or_empty(key) || !value) { return ESP_ERR_INVALID_ARG; } - mdns_srv_item_t *s = _mdns_get_service_item(service, proto, hostname); + mdns_srv_item_t *s = _mdns_get_service_item_instance(instance, service, proto, hostname); if (!s) { return ESP_ERR_NOT_FOUND; } @@ -5324,10 +5320,10 @@ esp_err_t mdns_service_txt_item_set_for_host_with_explicit_value_len(const char return ESP_OK; } -esp_err_t mdns_service_txt_item_set_for_host(const char *service, const char *proto, const char *hostname, +esp_err_t mdns_service_txt_item_set_for_host(const char * instance, const char *service, const char *proto, const char *hostname, const char *key, const char *value) { - return mdns_service_txt_item_set_for_host_with_explicit_value_len(service, proto, hostname, key, value, + return mdns_service_txt_item_set_for_host_with_explicit_value_len(instance, service, proto, hostname, key, value, strlen(value)); } @@ -5337,7 +5333,7 @@ esp_err_t mdns_service_txt_item_set(const char *service, const char *proto, cons if (!_mdns_server) { return ESP_ERR_INVALID_STATE; } - return mdns_service_txt_item_set_for_host_with_explicit_value_len(service, proto, _mdns_server->hostname, key, + return mdns_service_txt_item_set_for_host_with_explicit_value_len(NULL, service, proto, _mdns_server->hostname, key, value, strlen(value)); } @@ -5347,17 +5343,17 @@ esp_err_t mdns_service_txt_item_set_with_explicit_value_len(const char *service, if (!_mdns_server) { return ESP_ERR_INVALID_STATE; } - return mdns_service_txt_item_set_for_host_with_explicit_value_len(service, proto, _mdns_server->hostname, key, + return mdns_service_txt_item_set_for_host_with_explicit_value_len(NULL, service, proto, _mdns_server->hostname, key, value, value_len); } -esp_err_t mdns_service_txt_item_remove_for_host(const char * service, const char * proto, const char * hostname, +esp_err_t mdns_service_txt_item_remove_for_host(const char * instance, const char * service, const char * proto, const char * hostname, const char * key) { if (!_mdns_server || !_mdns_server->services || _str_null_or_empty(service) || _str_null_or_empty(proto) || _str_null_or_empty(key)) { return ESP_ERR_INVALID_ARG; } - mdns_srv_item_t * s = _mdns_get_service_item(service, proto, hostname); + mdns_srv_item_t * s = _mdns_get_service_item_instance(instance, service, proto, hostname); if (!s) { return ESP_ERR_NOT_FOUND; } @@ -5387,7 +5383,7 @@ esp_err_t mdns_service_txt_item_remove(const char * service, const char * proto, if (!_mdns_server) { return ESP_ERR_INVALID_STATE; } - return mdns_service_txt_item_remove_for_host(service, proto, _mdns_server->hostname, key); + return mdns_service_txt_item_remove_for_host(NULL, service, proto, _mdns_server->hostname, key); } esp_err_t mdns_service_subtype_add_for_host(const char *instance_name, const char *service, const char *proto, @@ -5398,7 +5394,6 @@ esp_err_t mdns_service_subtype_add_for_host(const char *instance_name, const cha return ESP_ERR_INVALID_ARG; } mdns_srv_item_t * s = _mdns_get_service_item_instance(instance_name, service, proto, hostname); - if (!s) { return ESP_ERR_NOT_FOUND; } @@ -5424,7 +5419,7 @@ esp_err_t mdns_service_subtype_add_for_host(const char *instance_name, const cha return ESP_OK; } -esp_err_t mdns_service_instance_name_set_for_host(const char * service, const char * proto, const char * hostname, +esp_err_t mdns_service_instance_name_set_for_host(const char * instance_old, const char * service, const char * proto, const char * hostname, const char * instance) { if (!_mdns_server || !_mdns_server->services || _str_null_or_empty(service) || _str_null_or_empty(proto)) { @@ -5433,7 +5428,7 @@ esp_err_t mdns_service_instance_name_set_for_host(const char * service, const ch if (_str_null_or_empty(instance) || strlen(instance) > (MDNS_NAME_BUF_LEN - 1)) { return ESP_ERR_INVALID_ARG; } - mdns_srv_item_t * s = _mdns_get_service_item(service, proto, hostname); + mdns_srv_item_t * s = _mdns_get_service_item_instance(instance_old, service, proto, hostname); if (!s) { return ESP_ERR_NOT_FOUND; } @@ -5464,15 +5459,15 @@ esp_err_t mdns_service_instance_name_set(const char * service, const char * prot if (!_mdns_server) { return ESP_ERR_INVALID_STATE; } - return mdns_service_instance_name_set_for_host(service, proto, _mdns_server->hostname, instance); + return mdns_service_instance_name_set_for_host(NULL, service, proto, _mdns_server->hostname, instance); } -esp_err_t mdns_service_remove_for_host(const char * service, const char * proto, const char * hostname) +esp_err_t mdns_service_remove_for_host(const char * instance, const char * service, const char * proto, const char * hostname) { if (!_mdns_server || !_mdns_server->services || _str_null_or_empty(service) || _str_null_or_empty(proto)) { return ESP_ERR_INVALID_ARG; } - mdns_srv_item_t * s = _mdns_get_service_item(service, proto, hostname); + mdns_srv_item_t * s = _mdns_get_service_item_instance(instance, service, proto, hostname); if (!s) { return ESP_ERR_NOT_FOUND; } @@ -5496,7 +5491,7 @@ esp_err_t mdns_service_remove(const char * service_type, const char * proto) if (!_mdns_server) { return ESP_ERR_INVALID_STATE; } - return mdns_service_remove_for_host(service_type, proto, _mdns_server->hostname); + return mdns_service_remove_for_host(NULL, service_type, proto, _mdns_server->hostname); } esp_err_t mdns_service_remove_all(void)