U v`@snddlmZddlmZddlZddlmZddlmZGdddejZd d Z d d Z d dZ ddZ dS))print_function)absolute_importN)dpkt)stpc@s8eZdZdZdZeddZddZddZd d Z d S) LLCa*802.2 Logical Link Control (LLC) data communication protocol. Attributes: __hdr__ = ( ('dsap', 'B', 0xaa), # Destination Service Access Point ('ssap', 'B', 0xaa), # Source Service Access Point ('ctl', 'B', 3) # Control Byte ) ))dsapB)ssapr r )ctlr cCs|j|jkodkSS)Nr )rr selfr`/private/var/folders/0j/yyfkg7712236ncpm167bvylc27vst9/T/pip-unpacked-wheel-y9gppv54/dpkt/llc.pyis_snapsz LLC.is_snapc Csddlm}m}m}tj|||jrtdd|j dd\|_ |_ |j dd|_ z0| |j |j |_ t ||j jj|j Wnttjfk rYnXnr|jdkr| ||j |_ |_nN|jdks|jdkr| ||j |_ |_n |jd krt|j |_ |_dS) Nr)Ethernet ETH_TYPE_IP ETH_TYPE_IPX>IHB)ethernetrrrrPacketunpackrstructdataouitypeget_typesetattr __class____name__lowerKeyErrorZ UnpackErrorripZipxrZSTP)rbufrrrrrrr!s "  z LLC.unpackcCstj|}|jrt|dd}t|dd}|spt|jtjrpddlm}z| |jj }Wnt k rnYnX|t d||dd7}|S)Nr"rr#r)rr)rrpack_hdrrgetattr isinstancer!rrZ get_type_revr&r)r pack)rr+r"_typerrrrr,6s    z LLC.pack_hdrcCs|jdt|jt|jS)Nr)Z __hdr_len__intrlenr!rrrr__len__Dsz LLC.__len__N) r' __module__ __qualname____doc____hdr__propertyrrr,r3rrrrr s  rcCsddlm}ddlm}d}t|}|j}t||js:t|j|j ksJt|j dksXtt |t |ksltt |t |ksttdd||ddd}t |t |ksttd d ||ddd}t|j|jstt |t d |ddkstdS) Nrr*)rs0E('@97=?i_#8+OPBs?ir )r rr!rs) r*rrr!r.IPAssertionErrorr#rdststrr2)r*rsZllc_pktZip_pktrrrtest_llcHs  rAcCsNddlm}ddlm}|d}|d}||}t|}t|j|jsJtdS)Nr unhexlifyrr9Z06aa03Z(45000014000000008006d47e1111111122222222) binasciirCr;r*rr.r!r<r=)rCr*buf_llcZbuf_ipr+llcrrrtest_unpack_sap_ip`s   rGcCs2ddlm}|d}t|}t|jtjr.tdS)NrrBZaaaa031111112222)rDrCrr.r!rrr=)rCrErFrrrtest_unpack_exception_handling|s   rHcCsNddlm}Gdddtj}tdddd|d}|d }t||ksJtdS) NrrBc@seZdZdZdS)z1test_pack_hdr_invalid_class..InvalidClass))testr "N)r'r4r5r7rrrr InvalidClasssrKr r i)rr r r"r!Zaaaa03111111000022)rDrCrrrbytesr=)rCrKrFcorrectrrrtest_pack_hdr_invalid_classs  rN) __future__rrr r;rrrrrArGrHrNrrrrs    <