a Me@s~ddlZddlZddlZddlZddlZddlZddlZddlZddl Zej j GdddZ ej j Gdddej j ZdS)Nc@s0eZdZdZgdZddZddZddZd S) APLItemzAn APL list item.)familynegationaddressprefixcCstjj||_tjj||_|jdkrPtjj||_tjj |dd|_ nT|jdkrtjj ||_tjj |dd|_ n$tjjj |dd|_tjj ||_ dS)Nr )Z max_length)dnsrdataRdataZ _as_uint16rZ_as_boolrZ_as_ipv4_addressr_as_intrZ_as_ipv6_addressZ _as_bytesZ _as_uint8)selfrrrrr6/usr/lib/python3.9/site-packages/dns/rdtypes/IN/APL.py__init__$s  zAPLItem.__init__cCs2|jrd|j|j|jfSd|j|j|jfSdS)Nz !%d:%s/%sz%d:%s/%s)rrrr)rrrr__str__1szAPLItem.__str__cCs|jdkrtj|j}n&|jdkr4tj|j}n t|j}d}tt |dddD]}||dkrX|d}qvqX|d|}t |}|dksJ|j r|dO}t d|j|j |}||||dS)Nrr rr !HBB)rr Zipv4Z inet_atonrZipv6binasciiZ unhexlifyrangelenrstructpackrwrite)rfilerZlastilheaderrrrto_wire7s$       zAPLItem.to_wireN)__name__ __module__ __qualname____doc__ __slots__rrr!rrrrrs  rcsVeZdZdZdgZfddZdddZedd d Zdd d Z edddZ Z S)APLz APL record.itemscs8t|||D]}t|tstdqt||_dS)Nzitem not an APLItem)superr isinstancer ValueErrortupler()rrdclassrdtyper(item __class__rrrXs   z APL.__init__NTcKsdtt|jS)N )joinmapstrr()rorigin relativizekwrrrto_text_sz APL.to_textcCsg}|D]x}|j} | ddkr8d} | dd} nd} | dd\} } t| } | dd\} }t|}t| | | |} || q ||||S)Nr!TrF:/)Z get_remainingZunescapevaluesplitintrappend)clsr-r.tokr6r7Z relativize_tor(tokenr/rrrestrrrrr from_textbs    z APL.from_textFcCs|jD]}||qdS)N)r(r!)rrcompressr6Z canonicalizer/rrr_to_wirews z APL._to_wirec Csg}|dkr|d}|d}|dkr8d}|d8}nd}||} t| } |ddkrt| d kr| d d | 7} n2|ddkr| d kr| d d | 7} n t| d } t|d|| |d} || q||||S) Nrrr r Tr Fr hex_codec)Z remainingZ get_structZ get_bytesrcodecsencoderr@) rAr-r.parserr6r(r Zafdlenrrrr/rrrfrom_wire_parser{s(        zAPL.from_wire_parser)NT)NTN)NNF)N) r"r#r$r%r&rr9 classmethodrErGrO __classcell__rrr0rr'Ps    r')rrLrZ dns.exceptionr Z dns.immutableZdns.ipv4Zdns.ipv6Z dns.rdataZ dns.tokenizerZ immutablerr rr'rrrrs1