aboutsummaryrefslogtreecommitdiff
path: root/plugin/pkg/rcode
diff options
context:
space:
mode:
Diffstat (limited to 'plugin/pkg/rcode')
-rw-r--r--plugin/pkg/rcode/rcode.go16
-rw-r--r--plugin/pkg/rcode/rcode_test.go29
2 files changed, 45 insertions, 0 deletions
diff --git a/plugin/pkg/rcode/rcode.go b/plugin/pkg/rcode/rcode.go
new file mode 100644
index 000000000..32863f0b2
--- /dev/null
+++ b/plugin/pkg/rcode/rcode.go
@@ -0,0 +1,16 @@
+package rcode
+
+import (
+ "strconv"
+
+ "github.com/miekg/dns"
+)
+
+// ToString convert the rcode to the official DNS string, or to "RCODE"+value if the RCODE
+// value is unknown.
+func ToString(rcode int) string {
+ if str, ok := dns.RcodeToString[rcode]; ok {
+ return str
+ }
+ return "RCODE" + strconv.Itoa(rcode)
+}
diff --git a/plugin/pkg/rcode/rcode_test.go b/plugin/pkg/rcode/rcode_test.go
new file mode 100644
index 000000000..bfca32f1d
--- /dev/null
+++ b/plugin/pkg/rcode/rcode_test.go
@@ -0,0 +1,29 @@
+package rcode
+
+import (
+ "testing"
+
+ "github.com/miekg/dns"
+)
+
+func TestToString(t *testing.T) {
+ tests := []struct {
+ in int
+ expected string
+ }{
+ {
+ dns.RcodeSuccess,
+ "NOERROR",
+ },
+ {
+ 28,
+ "RCODE28",
+ },
+ }
+ for i, test := range tests {
+ got := ToString(test.in)
+ if got != test.expected {
+ t.Errorf("Test %d, expected %s, got %s", i, test.expected, got)
+ }
+ }
+}