summaryrefslogtreecommitdiff
path: root/project2/proj2_s4498062/dns/rcodes.py
blob: d1b8c1518f861085bcec6f2a7f005bf984ee012b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#!/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):
        return RCode.by_value[rcode]

    @staticmethod
    def from_string(string):
        return RCode.by_string[string]