diff options
| author | Mohd Husaam Mehdi | 2024-01-14 14:48:32 +0000 |
|---|---|---|
| committer | John Crispin | 2024-12-11 11:42:41 +0000 |
| commit | 0b50c29101b3e8e2095c42df43eddf0181f885fb (patch) | |
| tree | 2ef9d2787ac548933066b2ed49b7ec5121cecc8f | |
| parent | fbaca4b6f530d4b2f361ee15c266aa19a708242b (diff) | |
| download | mdnsd-0b50c29101b3e8e2095c42df43eddf0181f885fb.tar.gz | |
display more srv attributes in output of ubus browse function
In the output of ubus call umdns browse, the following srv params
have been exposed with this commit:
* domain,
* ttl,
* last_update,
* priority
* weight
The new output looks as follows:
"_http._tcp": {
"Apache service": {
"iface": "br-lan",
"host": "user831.local",
"domain": "local",
"port": 80,
"ttl": 120,
"last_update": "2024-01-16T02:41:02Z",
"priority": 0,
"weight": 0,
"ipv4": "192.168.1.245",
"ipv6": "9999:1234:830::1f0",
"ipv6": "fdc5:c8b6:f412::1f0",
"ipv6": "fdc5:c8b6:f412:0:a800:aaff:fe53:101",
"ipv6": "9999:1234:830:0:a800:aaff:fe53:101"
}
}
Signed-off-by: Mohd Husaam <husaam.mehdi@iopsys.eu>
| -rw-r--r-- | cache.c | 43 |
1 files changed, 41 insertions, 2 deletions
@@ -460,8 +460,47 @@ cache_dump_records(struct blob_buf *buf, const char *name, int array, if (hostname) *hostname = (char *)r->rdata + sizeof(struct dns_srv_data); } - if (r->port) - blobmsg_add_u32(buf, "port", r->port); + + + if (r->record) { + const struct dns_srv_data *dsd; + char *domain = NULL; + + domain = strstr(r->record, "._udp."); + + if (!domain) + domain = strstr(r->record, "._tcp."); + + if (!domain) + break; + + domain = domain + strlen("._udp."); + blobmsg_add_string(buf, "domain", domain); + + if (r->port) + blobmsg_add_u32(buf, "port", r->port); + + if (r->ttl) + blobmsg_add_u32(buf, "ttl", r->ttl); + + if (r->time) { + struct tm *local_time; + char str_tm[32] = {0}; + time_t last_update = time(NULL) - (monotonic_time() - r->time); + local_time = localtime(&last_update); + strftime(str_tm, sizeof(str_tm), "%Y-%m-%dT%H:%M:%SZ", local_time); + + blobmsg_add_string(buf, "last_update", str_tm); + } + + dsd = (const struct dns_srv_data*)r->rdata; + + if (r->rdlength > sizeof(*dsd)) { + blobmsg_add_u32(buf, "priority", be16_to_cpu(dsd->priority)); + blobmsg_add_u32(buf, "weight", be16_to_cpu(dsd->weight)); + } + } + break; } |