reverse.go raw

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