
                            d Z ddlZddlmZ dZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZeeeee	e
eeeeeedZej%                         D  ci c]  \  } }|| 
 c}} Z G d dej(                  j*                        Zd Zd Zd Zd Zyc c}} w )zDNS Result Codes.    N   )long                     	   
      )NOERRORFORMERRSERVFAILNXDOMAINNOTIMPREFUSEDYXDOMAINYXRRSETNXRRSETNOTAUTHNOTZONEBADVERSc                       e Zd ZdZy)UnknownRcodezA DNS rcode is unknown.N)__name__
__module____qualname____doc__     lib/third_party/dns/rcode.pyr   r   F   s    !r"   r   c                     | j                         rt        |       }|dk\  r|dk  r|S t        j                  | j	                               }|t
        |S )zConvert text into an rcode.

    *text*, a ``text``, the textual rcode or an integer in textual form.

    Raises ``dns.rcode.UnknownRcode`` if the rcode mnemonic is unknown.

    Returns an ``int``.
    r     )isdigitint_by_textgetupperr   )textvs     r#   	from_textr-   J   sL     ||~I6a4iHTZZ\"AyHr"   c                 L    | dz  |dz	  dz  z  }|dk  s|dkD  rt        d      |S )zReturn the rcode value encoded by flags and ednsflags.

    *flags*, an ``int``, the DNS flags field.

    *ednsflags*, an ``int``, the EDNS flags field.

    Raises ``ValueError`` if rcode is < 0 or > 4095

    Returns an ``int``.
            r   r%   rcode must be >= 0 and <= 4095)
ValueError)flags	ednsflagsvalues      r#   
from_flagsr7   ^   s9     V^bE 9:EqyEDL9::Lr"   c                 `    | dk  s| dkD  rt        d      | dz  }t        | dz        dz  }||fS )zReturn a (flags, ednsflags) tuple which encodes the rcode.

    *value*, an ``int``, the rcode.

    Raises ``ValueError`` if rcode is < 0 or > 4095.

    Returns an ``(int, int)`` tuple.
    r   r%   r2   r/   r1   r0   )r3   r   )r6   r,   evs      r#   to_flagsr:   p   sB     qyEDL9::A	eem		"Br7Nr"   c                 t    | dk  s| dkD  rt        d      t        j                  |       }|t        |       }|S )zConvert rcode into text.

    *value*, and ``int``, the rcode.

    Raises ``ValueError`` if rcode is < 0 or > 4095.

    Returns a ``text``.
    r   r%   r2   )r3   	_by_valuer)   str)r6   r+   s     r#   to_textr>      s>     qyEDL9::==D|5zKr"   )r    dns.exceptiondns_compatr   r   r   r   r   r   r   r   r   r   r   r   r   r(   itemsr<   	exceptionDNSExceptionr   r-   r7   r:   r>   )xys   00r#   <module>rG      s   $    
	






 & 'nn./.daQT./	"3==-- "($"} 0s   B