Skip to content

Commit 0345d75

Browse files
authoredDec 3, 2024··
feat: Add RD flag handling in text format directive (#893)
* feat: Add RD flag handling in text format directive * Update README.md
1 parent e73926d commit 0345d75

11 files changed

+33
-16
lines changed
 

‎README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
<p align="center">
22
<img src="https://goreportcard.com/badge/github.com/dmachard/go-dns-collector" alt="Go Report"/>
33
<img src="https://img.shields.io/badge/go%20version-min%201.21-green" alt="Go version"/>
4-
<img src="https://img.shields.io/badge/go%20tests-510-green" alt="Go tests"/>
4+
<img src="https://img.shields.io/badge/go%20tests-513-green" alt="Go tests"/>
55
<img src="https://img.shields.io/badge/go%20bench-21-green" alt="Go bench"/>
6-
<img src="https://img.shields.io/badge/go%20lines-31977-green" alt="Go lines"/>
6+
<img src="https://img.shields.io/badge/go%20lines-32126-green" alt="Go lines"/>
77
</p>
88

99
<p align="center">

‎dnsutils/dnsmessage_text.go

+6
Original file line numberDiff line numberDiff line change
@@ -462,6 +462,12 @@ func (dm *DNSMessage) ToTextLine(format []string, fieldDelimiter string, fieldBo
462462
} else {
463463
s.WriteByte('-')
464464
}
465+
case directive == "rd":
466+
if flags.RD {
467+
s.WriteString("RD")
468+
} else {
469+
s.WriteByte('-')
470+
}
465471
case directive == "ttl":
466472
if len(an) > 0 {
467473
s.WriteString(strconv.Itoa(an[0].TTL))

‎dnsutils/dnsmessage_text_test.go

+10
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,16 @@ func TestDnsMessage_TextFormat_DefaultDirectives(t *testing.T) {
192192
dm: DNSMessage{DNS: DNS{Flags: DNSFlags{TC: true, AA: true, RA: true, AD: true}}},
193193
expected: "TC AA RA AD",
194194
},
195+
{
196+
format: "rd",
197+
dm: DNSMessage{DNS: DNS{Flags: DNSFlags{RD: true}}},
198+
expected: "RD",
199+
},
200+
{
201+
format: "tc aa ra ad rd",
202+
dm: DNSMessage{DNS: DNS{Flags: DNSFlags{TC: false, AA: false, RA: false, AD: false, RD: false}}},
203+
expected: "- - - - -",
204+
},
195205
{
196206
format: "df tr",
197207
dm: DNSMessage{NetworkInfo: DNSNetInfo{IPDefragmented: true, TCPReassembled: true}},

‎docs/dnsconversions.md

+8-7
Original file line numberDiff line numberDiff line change
@@ -52,13 +52,14 @@ The text format can be customized using the following directives.
5252
- `ttl`: answer ttl, only the first one
5353
- `answer`: rdata answer, only the first one, prefer to use the JSON format if you wamt all answers
5454
- `malformed`: malformed dns packet, integer value 1/0
55-
- `qr`: query or reply flag, string value Q/R
56-
- `tc`: flag truncated response
57-
- `aa`: flag authoritative answer
58-
- `ra`: flag recursion available
59-
- `ad`: flag authenticated data
60-
- `df`: flag when ip defragmented occured
61-
- `tr`: flag when tcp reassembled occured
55+
- `qr`: Query or reply flag, indicating the type of message. Possible values: `Q` (query) or `R` (reply).
56+
- `tc`: Truncated response flag, indicates whether the response was truncated. Value is `TC` for enabled, `-` for disabled.
57+
- `aa`: Authoritative answer flag, indicates if the answer comes from an authoritative source. Value is `AA` for enabled, `-` for disabled.
58+
- `ra`: Recursion available flag, indicates if recursion is supported by the server. Value is `RA` for enabled, `-` for disabled.
59+
- `rd`: Recursion desired flag, indicates if recursion was requested. Value is `RD` for enabled, `-` for disabled.
60+
- `ad`: Authenticated data flag, indicates that the response has been verified. Value is `AD` for enabled, `-` for disabled.
61+
- `df`: Defragmentation flag, indicates that IP defragmentation occurred. Value is `DF` for enabled, `-` for disabled.
62+
- `tr`: TCP reassembly flag, indicates that TCP reassembly occurred. Value is `TR` for enabled, `-` for disabled.
6263
- `edns-csubnet`: display client subnet info
6364

6465
The default text format can be set in the global configuration or individually for each logger. Here’s the default format:

‎docs/loggers/logger_file.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ The File Logger allows you to log DNS traffic to a file in various formats, with
4343
4444
* `text-format` (string)
4545
> output text format, please refer to the default text format to see all
46-
> available directives, use this parameter if you want a specific format.
46+
> available [text directives](../dnsconversions.md#text-format-inline), use this parameter if you want a specific format.
4747
4848
* `jinja-format` (string)
4949
> jinja template, please refer [Jinja templating](../dnsconversions.md#jinja-templating) to see all available directives

‎docs/loggers/logger_kafka.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ Options:
5757
> Specifies the output format for Kafka messages. Output format: `text`, `json`, or `flat-json`.
5858
5959
* `text-format` (string)
60-
> output text format, please refer to the default text format to see all available [directives](../configuration.md#custom-text-format), use this parameter if you want a specific format
60+
> output text format, please refer to the default text format to see all available [text directives](../dnsconversions.md#text-format-inline), use this parameter if you want a specific format
6161
6262
* `buffer-size` (integer)
6363
> Specifies the size of the bulk for DNS messages before they are sent to Kafka.

‎docs/loggers/logger_loki.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ Options:
2323
> interval in second between before to retry to send batch
2424
2525
* `text-format` (string)
26-
> output text format, please refer to the default text format to see all available [directives](../configuration.md#custom-text-format), use this parameter if you want a specific format
26+
> output text format, please refer to the default text format to see all available [text directives](../dnsconversions.md#text-format-inline), use this parameter if you want a specific format
2727
2828
* `proxy-url` (string)
2929
> Proxy URL

‎docs/loggers/logger_scalyr.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ Options:
2424
> batch size for log entries in bytes
2525
2626
* `text-format` (string)
27-
> output text format, please refer to the default text format to see all available directives, use this parameter if you want a specific format
27+
> output text format, please refer to the default text format to see all available [text directives](../dnsconversions.md#text-format-inline), use this parameter if you want a specific format
2828
2929
* `proxy-url` (string)
3030
> Proxy URL

‎docs/loggers/logger_stdout.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ Options:
1212
> output format: `text`, `jinja`, `json`, `flat-json` or `pcap`
1313
1414
* `text-format` (string)
15-
> output text format, please refer to the default text format to see all available [directives](../configuration.md#custom-text-format), use this parameter if you want a specific format
15+
> output text format, please refer to the default text format to see all available [text directives](../dnsconversions.md#text-format-inline) use this parameter if you want a specific format
1616
1717
* `jinja-format` (string)
1818
> jinja template, please refer [Jinja templating](../dnsconversions.md#jinja-templating) to see all available directives

‎docs/loggers/logger_syslog.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ Options:
2626
> output format: `text`, `json`, or `flat-json`
2727
2828
* `text-format` (string)
29-
> output text format, please refer to the default text format to see all available [directives](../configuration.md#custom-text-format), use this parameter if you want a specific format
29+
> output text format, please refer to the default text format to see all available [text directives](../dnsconversions.md#text-format-inline), use this parameter if you want a specific format
3030
3131
* `tls-insecure` (boolean)
3232
> If set to true, skip verification of server certificate.

‎docs/loggers/logger_tcp.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ Options:
4747
> Output format: `text`, `json`, or `flat-json`
4848
4949
* `text-format` (string)
50-
> output text format, please refer to the default text format to see all available [directives](../configuration.md#custom-text-format), use this parameter if you want a specific format
50+
> output text format, please refer to the default text format to see all available [text directives](../dnsconversions.md#text-format-inline), use this parameter if you want a specific format
5151
5252
* `buffer-size` (integer)
5353
> how many DNS messages will be buffered before being sent

0 commit comments

Comments
 (0)
Please sign in to comment.