mirror of
https://github.com/espressif/esp-protocols.git
synced 2025-07-29 18:27:31 +02:00
feat(mdns): Console test for add/remove delegated host APIs
This commit is contained in:
@ -1101,6 +1101,95 @@ static void register_mdns_lookup_service(void)
|
||||
ESP_ERROR_CHECK( esp_console_cmd_register(&cmd_lookup_service) );
|
||||
}
|
||||
|
||||
static struct {
|
||||
struct arg_str *hostname;
|
||||
struct arg_str *address;
|
||||
struct arg_end *end;
|
||||
} mdns_delegate_host_args;
|
||||
|
||||
static int cmd_mdns_delegate_host(int argc, char **argv)
|
||||
{
|
||||
int nerrors = arg_parse(argc, argv, (void **) &mdns_delegate_host_args);
|
||||
if (nerrors != 0) {
|
||||
arg_print_errors(stderr, mdns_delegate_host_args.end, argv[0]);
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (!mdns_delegate_host_args.hostname->sval[0] || !mdns_delegate_host_args.address->sval[0]) {
|
||||
printf("ERROR: Bad arguments!\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
mdns_ip_addr_t addr = { .next = NULL};
|
||||
esp_netif_str_to_ip4(mdns_delegate_host_args.address->sval[0], &addr.addr.u_addr.ip4);
|
||||
addr.addr.type = ESP_IPADDR_TYPE_V4;
|
||||
|
||||
esp_err_t err = mdns_delegate_hostname_add(mdns_delegate_host_args.hostname->sval[0], &addr);
|
||||
if (err) {
|
||||
printf("mdns_delegate_hostname_add() failed\n");
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void register_mdns_delegate_host(void)
|
||||
{
|
||||
mdns_delegate_host_args.hostname = arg_str1(NULL, NULL, "<hostname>", "Delegated hostname");
|
||||
mdns_delegate_host_args.address = arg_str1(NULL, NULL, "<address>", "Delegated hosts address");
|
||||
mdns_delegate_host_args.end = arg_end(2);
|
||||
|
||||
const esp_console_cmd_t cmd_delegate_host = {
|
||||
.command = "mdns_delegate_host",
|
||||
.help = "Add delegated hostname",
|
||||
.hint = NULL,
|
||||
.func = &cmd_mdns_delegate_host,
|
||||
.argtable = &mdns_delegate_host_args
|
||||
};
|
||||
|
||||
ESP_ERROR_CHECK( esp_console_cmd_register(&cmd_delegate_host) );
|
||||
}
|
||||
|
||||
static struct {
|
||||
struct arg_str *hostname;
|
||||
struct arg_end *end;
|
||||
} mdns_undelegate_host_args;
|
||||
|
||||
static int cmd_mdns_undelegate_host(int argc, char **argv)
|
||||
{
|
||||
int nerrors = arg_parse(argc, argv, (void **) &mdns_undelegate_host_args);
|
||||
if (nerrors != 0) {
|
||||
arg_print_errors(stderr, mdns_undelegate_host_args.end, argv[0]);
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (!mdns_undelegate_host_args.hostname->sval[0]) {
|
||||
printf("ERROR: Bad arguments!\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (mdns_delegate_hostname_remove(mdns_undelegate_host_args.hostname->sval[0]) != ESP_OK) {
|
||||
printf("mdns_delegate_hostname_remove() failed\n");
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void register_mdns_undelegate_host(void)
|
||||
{
|
||||
mdns_undelegate_host_args.hostname = arg_str1(NULL, NULL, "<hostname>", "Delegated hostname");
|
||||
mdns_undelegate_host_args.end = arg_end(2);
|
||||
|
||||
const esp_console_cmd_t cmd_undelegate_host = {
|
||||
.command = "mdns_undelegate_host",
|
||||
.help = "Remove delegated hostname",
|
||||
.hint = NULL,
|
||||
.func = &cmd_mdns_undelegate_host,
|
||||
.argtable = &mdns_undelegate_host_args
|
||||
};
|
||||
|
||||
ESP_ERROR_CHECK( esp_console_cmd_register(&cmd_undelegate_host) );
|
||||
}
|
||||
|
||||
void mdns_console_register(void)
|
||||
{
|
||||
register_mdns_init();
|
||||
@ -1117,6 +1206,8 @@ void mdns_console_register(void)
|
||||
register_mdns_service_remove_all();
|
||||
|
||||
register_mdns_lookup_service();
|
||||
register_mdns_delegate_host();
|
||||
register_mdns_undelegate_host();
|
||||
|
||||
#ifdef CONFIG_LWIP_IPV4
|
||||
register_mdns_query_a();
|
||||
|
@ -182,3 +182,16 @@ const char *esp_netif_get_ifkey(esp_netif_t *esp_netif)
|
||||
{
|
||||
return esp_netif->if_key;
|
||||
}
|
||||
|
||||
esp_err_t esp_netif_str_to_ip4(const char *src, esp_ip4_addr_t *dst)
|
||||
{
|
||||
if (src == NULL || dst == NULL) {
|
||||
return ESP_ERR_INVALID_ARG;
|
||||
}
|
||||
struct in_addr addr;
|
||||
if (inet_pton(AF_INET, src, &addr) != 1) {
|
||||
return ESP_FAIL;
|
||||
}
|
||||
dst->addr = addr.s_addr;
|
||||
return ESP_OK;
|
||||
}
|
||||
|
@ -72,5 +72,15 @@ def test_remove_service(mdns_console, dig_app):
|
||||
dig_app.check_record('_http._tcp.local', query_type='PTR', expected=False)
|
||||
|
||||
|
||||
def test_delegate_host(mdns_console, dig_app):
|
||||
mdns_console.send_input('mdns_delegate_host delegated 1.2.3.4')
|
||||
dig_app.check_record('delegated.local', query_type='A', expected=True)
|
||||
|
||||
|
||||
def test_undelegate_host(mdns_console, dig_app):
|
||||
mdns_console.send_input('mdns_undelegate_host delegated')
|
||||
dig_app.check_record('delegated.local', query_type='A', expected=False)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
pytest.main(['-s', 'test_mdns.py'])
|
||||
|
Reference in New Issue
Block a user