o b @sjdZddlZddlZddlmZddlmZddlmZGdddZ dZ eej Gd d d ej Z dS) z,Support for working directly with IP packetsN) implementer)protocol)rawc@seZdZddZdS)IPHeaderc Cstd|dd\ }|_|_|_}|_|_|_}}t ||_ t ||_ |d@|_ |d@d?d>|_ |d@|_|d@d k|_|d @d k|_dS) Nz !BBHHHBBH4s4sii@ri )structunpacktostot_len fragment_idttlrchecksocket inet_ntoasaddrdaddrversionihlfragment_offset dont_fragmentmore_fragments)selfdata ihlversionfrag_offrrr1/usr/lib/python3/dist-packages/twisted/pair/ip.py__init__s&     zIPHeader.__init__N)__name__ __module__ __qualname__r!rrrr rs rlc@s$eZdZddZddZddZdS) IPProtocolcCs i|_dS)N)ipProtos)rrrr r!0s zIPProtocol.__init__cCsRt|}|dkr td|tkrtd||jvrg|j|<|j||dS)Nrz'Added protocol must be positive or zeroz"Added protocol must fit in 32 bits)rIRawDatagramProtocol TypeErrorMAX_SIZEr&append)rnumprotorrr addProto3s   zIPProtocol.addProtocCsht|}|j|jdD]%}|j|dd||j|j|j|j|j|j |j |j |j |j |j|jdq dS)Nrr)rpartialsourcedestrrrr rrrrrr)rr&getrdatagramReceivedrrrrr rrrrrr)rrr.r0r/rheaderr,rrr r2=s& zIPProtocol.datagramReceivedN)r"r#r$r!r-r2rrrr r%.s r%)__doc__rr zope.interfacertwisted.internetr twisted.pairrrr)IRawPacketProtocolAbstractDatagramProtocolr%rrrr s