diff options
Diffstat (limited to 'plugin/pkg/rcode')
-rw-r--r-- | plugin/pkg/rcode/rcode.go | 16 | ||||
-rw-r--r-- | plugin/pkg/rcode/rcode_test.go | 29 |
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) + } + } +} |