net-dnsserver/dns/rcodes.py

82 lines
1.7 KiB
Python

#!/usr/bin/env python2
""" DNS RCODE values
This module contains an Enum of RCODE values. See section 4.1.4 of RFC 1035 for
more info.
"""
class RCode(object):
""" Enum of RCODE values
Usage:
>>> NoError
0
>>> NXDomain
3
"""
NoError = 0
FormErr = 1
ServFail = 2
NXDomain = 3
NotImp = 4
Refused = 5
YXDomain = 6
YXRRSet = 7
NXRRSet = 8
NotAuth = 9
NotZone = 10
BADVERS = 16
BADSIG = 16
BADKEY = 17
BADTIME = 18
BADMODE = 19
BADNAME = 20
BADALG = 21
BADTRUNC = 22
by_string = {
"NoError": NoError,
"FormErr": FormErr,
"ServFail": ServFail,
"NXDomain": NXDomain,
"NotImp": NotImp,
"Refused": Refused,
"YXDomain": YXDomain,
"YXRRSet": YXRRSet,
"NXRRSet": NXRRSet,
"NotAuth": NotAuth,
"NotZone": NotZone,
"BADVERS": BADVERS,
"BADSIG": BADSIG,
"BADKEY": BADKEY,
"BADTIME": BADTIME,
"BADMODE": BADMODE,
"BADNAME": BADNAME,
"BADALG": BADALG,
"BADTRUNC": BADTRUNC
}
by_value = dict([(y, x) for x, y in by_string.items()])
@staticmethod
def to_string(rcode):
""" Convert an RCode to a string
Usage:
>>> RCode.to_string(RCode.NoError)
'NoError'
"""
return RCode.by_value[rcode]
@staticmethod
def from_string(string):
""" Convert a string to an RCode
Usage:
>>> RCode.from_string('NoError')
0
"""
return RCode.by_string[string]