From d4ff81a5e454bdbe0346beb9d09f9055dd2f07ed Mon Sep 17 00:00:00 2001 From: Shulhan Date: Mon, 26 Jan 2026 16:33:55 +0700 Subject: lib/dns: add method to set TTL on Message The SetTTL method set all RRs answer time to live. --- CHANGELOG.adoc | 4 ++++ lib/dns/message.go | 16 ++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc index 6d647edf..41141827 100644 --- a/CHANGELOG.adoc +++ b/CHANGELOG.adoc @@ -38,6 +38,10 @@ Legend, [#v0_61_0] == pakakeh.go v0.61.0 (2026-xx-xx) +**🌼 lib/dns: add method to set TTL on Message** + +The SetTTL method set all RRs answer time to live. + **lib/dns: print the answer TTL in DebugLevelCache** The log level cache changed to the following format, diff --git a/lib/dns/message.go b/lib/dns/message.go index abef69cd..8a5e2f05 100644 --- a/lib/dns/message.go +++ b/lib/dns/message.go @@ -996,6 +996,22 @@ func (msg *Message) SetResponseCode(code ResponseCode) { } } +// SetTTL set all RRs answer and authority time-to-live (TTL) to `n`. +func (msg *Message) SetTTL(n uint32) { + for x := range len(msg.Answer) { + msg.Answer[x].TTL = n + binary.BigEndian.PutUint32( + msg.packet[msg.Answer[x].idxTTL:], + msg.Answer[x].TTL) + } + for x := range len(msg.Authority) { + msg.Authority[x].TTL = n + binary.BigEndian.PutUint32( + msg.packet[msg.Authority[x].idxTTL:], + msg.Authority[x].TTL) + } +} + // SubTTL subtract TTL in each resource records and in packet by n seconds. // If TTL is less than n, it will set to 0. func (msg *Message) SubTTL(n uint32) { -- cgit v1.3