rcode.go 868 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package dns
  2. import (
  3. "context"
  4. "fmt"
  5. D "github.com/miekg/dns"
  6. )
  7. func newRCodeClient(addr string) rcodeClient {
  8. var rcode int
  9. switch addr {
  10. case "success":
  11. rcode = D.RcodeSuccess
  12. case "format_error":
  13. rcode = D.RcodeFormatError
  14. case "server_failure":
  15. rcode = D.RcodeServerFailure
  16. case "name_error":
  17. rcode = D.RcodeNameError
  18. case "not_implemented":
  19. rcode = D.RcodeNotImplemented
  20. case "refused":
  21. rcode = D.RcodeRefused
  22. default:
  23. panic(fmt.Errorf("unsupported RCode type: %s", addr))
  24. }
  25. return rcodeClient{
  26. rcode: rcode,
  27. addr: "rcode://" + addr,
  28. }
  29. }
  30. type rcodeClient struct {
  31. rcode int
  32. addr string
  33. }
  34. var _ dnsClient = rcodeClient{}
  35. func (r rcodeClient) ExchangeContext(ctx context.Context, m *D.Msg) (*D.Msg, error) {
  36. m.Response = true
  37. m.Rcode = r.rcode
  38. return m, nil
  39. }
  40. func (r rcodeClient) Address() string {
  41. return r.addr
  42. }