reverse.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package dns
  2. // StringToType is the reverse of TypeToString, needed for string parsing.
  3. var StringToType = reverseInt16(TypeToString)
  4. // StringToClass is the reverse of ClassToString, needed for string parsing.
  5. var StringToClass = reverseInt16(ClassToString)
  6. // StringToOpcode is a map of opcodes to strings.
  7. var StringToOpcode = reverseInt(OpcodeToString)
  8. // StringToRcode is a map of rcodes to strings.
  9. var StringToRcode = reverseInt(RcodeToString)
  10. func init() {
  11. // Preserve previous NOTIMP typo, see github.com/miekg/dns/issues/733.
  12. StringToRcode["NOTIMPL"] = RcodeNotImplemented
  13. }
  14. // StringToAlgorithm is the reverse of AlgorithmToString.
  15. var StringToAlgorithm = reverseInt8(AlgorithmToString)
  16. // StringToHash is a map of names to hash IDs.
  17. var StringToHash = reverseInt8(HashToString)
  18. // StringToCertType is the reverseof CertTypeToString.
  19. var StringToCertType = reverseInt16(CertTypeToString)
  20. // Reverse a map
  21. func reverseInt8(m map[uint8]string) map[string]uint8 {
  22. n := make(map[string]uint8, len(m))
  23. for u, s := range m {
  24. n[s] = u
  25. }
  26. return n
  27. }
  28. func reverseInt16(m map[uint16]string) map[string]uint16 {
  29. n := make(map[string]uint16, len(m))
  30. for u, s := range m {
  31. n[s] = u
  32. }
  33. return n
  34. }
  35. func reverseInt(m map[int]string) map[string]int {
  36. n := make(map[string]int, len(m))
  37. for u, s := range m {
  38. n[s] = u
  39. }
  40. return n
  41. }