net: shell: dns: Add list command to show service records
Add "net dns list" command that will show DNS SD records defined in the system. Signed-off-by: Jukka Rissanen <jukka.rissanen@nordicsemi.no>
This commit is contained in:
parent
ff805ae376
commit
d394b74a41
1 changed files with 51 additions and 0 deletions
|
@ -10,6 +10,8 @@ LOG_MODULE_DECLARE(net_shell);
|
||||||
|
|
||||||
#include <zephyr/net/socket.h>
|
#include <zephyr/net/socket.h>
|
||||||
#include <zephyr/net/dns_resolve.h>
|
#include <zephyr/net/dns_resolve.h>
|
||||||
|
#include <zephyr/net/dns_sd.h>
|
||||||
|
#include "dns/dns_sd.h"
|
||||||
|
|
||||||
#include "net_shell_private.h"
|
#include "net_shell_private.h"
|
||||||
|
|
||||||
|
@ -256,6 +258,52 @@ static int cmd_net_dns(const struct shell *sh, size_t argc, char *argv[])
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int cmd_net_dns_list(const struct shell *sh, size_t argc, char *argv[])
|
||||||
|
{
|
||||||
|
#if defined(CONFIG_DNS_SD)
|
||||||
|
#define MAX_PORT_LEN 6
|
||||||
|
char buf[MAX_PORT_LEN];
|
||||||
|
int n_records = 0;
|
||||||
|
|
||||||
|
DNS_SD_FOREACH(record) {
|
||||||
|
if (!dns_sd_rec_is_valid(record)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (n_records == 0) {
|
||||||
|
PR(" DNS service records\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
++n_records;
|
||||||
|
|
||||||
|
if (record->port != NULL) {
|
||||||
|
snprintk(buf, sizeof(buf), "%u", ntohs(*record->port));
|
||||||
|
}
|
||||||
|
|
||||||
|
PR("[%2d] %s.%s%s%s%s%s%s%s\n",
|
||||||
|
n_records,
|
||||||
|
record->instance != NULL ? record->instance : "",
|
||||||
|
record->service != NULL ? record->service : "",
|
||||||
|
record->proto != NULL ? "." : "",
|
||||||
|
record->proto != NULL ? record->proto : "",
|
||||||
|
record->domain != NULL ? "." : "",
|
||||||
|
record->domain != NULL ? record->domain : "",
|
||||||
|
record->port != NULL ? ":" : "",
|
||||||
|
record->port != NULL ? buf : "");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (n_records == 0) {
|
||||||
|
PR("No DNS service records found.\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
PR_INFO("DNS service discovery not supported. Set CONFIG_DNS_SD to "
|
||||||
|
"enable it.\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
SHELL_STATIC_SUBCMD_SET_CREATE(net_cmd_dns,
|
SHELL_STATIC_SUBCMD_SET_CREATE(net_cmd_dns,
|
||||||
SHELL_CMD(cancel, NULL, "Cancel all pending requests.",
|
SHELL_CMD(cancel, NULL, "Cancel all pending requests.",
|
||||||
cmd_net_dns_cancel),
|
cmd_net_dns_cancel),
|
||||||
|
@ -263,6 +311,9 @@ SHELL_STATIC_SUBCMD_SET_CREATE(net_cmd_dns,
|
||||||
"'net dns <hostname> [A or AAAA]' queries IPv4 address "
|
"'net dns <hostname> [A or AAAA]' queries IPv4 address "
|
||||||
"(default) or IPv6 address for a host name.",
|
"(default) or IPv6 address for a host name.",
|
||||||
cmd_net_dns_query),
|
cmd_net_dns_query),
|
||||||
|
SHELL_CMD(list, NULL,
|
||||||
|
"List local DNS service records.",
|
||||||
|
cmd_net_dns_list),
|
||||||
SHELL_SUBCMD_SET_END
|
SHELL_SUBCMD_SET_END
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue