schneuwlym created an issue (kamailio/kamailio#4174)
### Description
A NAPTR record in dns cache may be skipped if all IPs are unreachable. The
NAPTR record contains the internal parameter `skip_record`. From outside, it is
not possible to view the state of a certain NAPTR record.
Extend the return value of `dns_cache_print_entry` with the parameter
`skip_record`.
### Expected behavior
The answer of `kamcmd dns.view` shows `yes` or `no` depending on the internal
state of `skip_record`.
```
{
name: skipped.example.com
type: NAPTR
size_bytes: 208
reference_counter: 2
permanent: no
expires: 268
last_used: 29
negative_entry: no
records: {
{
rr_idx: 0
rr_order: 10
rr_preference: 10
-> rr_skip_record: yes
rr_flags: S
rr_service: SIPS+D2T
rr_regexp:
rr_regexp: _sips._tcp.skipped.example.com
rr_permanent: no
rr_expires: 268
}
}
}
{
name: valid.example.com
type: NAPTR
size_bytes: 328
reference_counter: 1
permanent: no
expires: 294
last_used: 5
negative_entry: no
records: {
{
rr_idx: 0
rr_order: 20
rr_preference: 20
-> rr_skip_record: no
rr_flags: S
rr_service: SIP+D2U
rr_regexp:
rr_regexp: _sip._udp.valid.example.com
rr_permanent: no
rr_expires: 294
}
{
rr_idx: 1
rr_order: 10
rr_preference: 10
-> rr_skip_record: no
rr_flags: S
rr_service: SIPS+D2T
rr_regexp:
rr_regexp: _sips._tcp.valid.example.com
rr_permanent: no
rr_expires: 294
}
}
}
```
#### Actual observed behavior
At the moment it is not visible why a NAPTR record is not used.
### Possible Solutions
The following patch extends the output of `dns_cache_print_entry` with the
parameter `rr_skip_record`.
The patch has been tested locally.
```patch
>From c4d559f12892fb5a2c3b572f9660b637299fcafb Mon Sep 17 00:00:00 2001
From: Mathias Schneuwly <mathias.schneu...@ruag.ch>
Date: Tue, 11 Mar 2025 12:38:44 +0000
Subject: [PATCH] Print parameter skip_record in dns_cache_print_entry
---
src/core/dns_cache.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/src/core/dns_cache.c b/src/core/dns_cache.c
index 1507e89015..1bb95a2d41 100644
--- a/src/core/dns_cache.c
+++ b/src/core/dns_cache.c
@@ -3898,6 +3898,13 @@ int dns_cache_print_entry(rpc_t *rpc, void *ctx, struct
dns_hash_entry *e)
rpc->fault(ctx, 500, "Internal error
adding naptr order");
return -1;
}
+ if(rpc->struct_add(sh, "s", "rr_skip_record",
+ ((struct naptr_rdata
*)(rr->rdata))->skip_record ? "yes" : "no")
+ < 0) {
+ rpc->fault(
+ ctx, 500, "Internal error
adding naptr rr_skip_record");
+ return -1;
+ }
s.s = ((struct naptr_rdata
*)(rr->rdata))->flags;
s.len = ((struct naptr_rdata
*)(rr->rdata))->flags_len;
if(rpc->struct_add(sh, "S", "rr_flags", &s) <
0) {
--
2.44.1
```
### Additional Information
* **Kamailio Version** - output of `kamailio -v`
```
version: kamailio 5.8.4 (x86_64/linux) f1d83d
flags: USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS, USE_RAW_SOCKS, DISABLE_NAGLE,
USE_MCAST, DNS_IP_HACK, SHM_MMAP, PKG_MALLOC, MEM_JOIN_FREE, Q_MALLOC,
F_MALLOC, TLSF_MALLOC, DBG_SR_MEMORY, USE_FUTEX, FAST_LOCK-ADAPTIVE_WAIT,
USE_DNS_CACHE, USE_DNS_FAILOVER, USE_NAPTR, USE_DST_BLOCKLIST, HAVE_RESOLV_RES
ADAPTIVE_WAIT_LOOPS 1024, MAX_RECV_BUFFER_SIZE 262144, MAX_SEND_BUFFER_SIZE
262144, MAX_URI_SIZE 1024, BUF_SIZE 65535, DEFAULT PKG_SIZE 8MB
poll method support: poll, epoll_lt, epoll_et, sigio_rt, select.
id: f1d83d
```
--
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/issues/4174
You are receiving this because you are subscribed to this thread.
Message ID: <kamailio/kamailio/issues/4...@github.com>
_______________________________________________
Kamailio - Development Mailing List -- sr-dev@lists.kamailio.org
To unsubscribe send an email to sr-dev-le...@lists.kamailio.org
Important: keep the mailing list in the recipients, do not reply only to the
sender!