Ë
    oj	  ã                   ó¨   — d Z ddlZddlZddlmZ ddlmZ ddlmZ  G d„ d«      Z	dZ
 eej                  «       G d	„ d
ej                  «      «       Zy)z,Support for working directly with IP packetsé    N)Úimplementer)Úprotocol)Úrawc                   ó   — e Zd Zd„ Zy)ÚIPHeaderc           
      ól  — t        j                  d|d d «      \
  }| _        | _        | _        }| _        | _        | _        }}t        j                  |«      | _
        t        j                  |«      | _        |dz  | _        |dz  dz	  dz  | _        |dz  | _        |dz  d	k7  | _        |d
z  d	k7  | _        y )Nz!BBHHHBBH4s4sé   é   éð   é   é   iÿ  i @  r   i    )ÚstructÚunpackÚtosÚtot_lenÚfragment_idÚttlr   ÚcheckÚsocketÚ	inet_ntoaÚsaddrÚdaddrÚversionÚihlÚfragment_offsetÚdont_fragmentÚmore_fragments)ÚselfÚdataÚ
ihlversionÚfrag_offr   r   s         ú1/usr/lib/python3/dist-packages/twisted/pair/ip.pyÚ__init__zIPHeader.__init__   s¿   € ô �M‰M˜/¨4°°¨9Ó5ñ	
ØØŒHØŒLØÔØØŒHØŒMØŒJØØä×%Ñ% eÓ,ˆŒ
Ü×%Ñ% eÓ,ˆŒ
Ø! DÑ(ˆŒØ $Ñ&¨1Ñ,°Ñ2ˆŒØ'¨&Ñ0ˆÔØ%¨Ñ.°!Ñ3ˆÔØ&¨Ñ/°1Ñ4ˆÕó    N)Ú__name__Ú
__module__Ú__qualname__r#   © r$   r"   r   r      s   „ ó5r$   r   l        c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)Ú
IPProtocolc                 ó   — i | _         y )N)ÚipProtos)r   s    r"   r#   zIPProtocol.__init__/   s	   € Øˆ�r$   c                 óì   — t        j                  |«      }|dk  rt        d«      ‚|t        k\  rt        d«      ‚|| j                  vrg | j                  |<   | j                  |   j                  |«       y )Nr   z'Added protocol must be positive or zeroz"Added protocol must fit in 32 bits)r   ÚIRawDatagramProtocolÚ	TypeErrorÚMAX_SIZEr,   Úappend)r   ÚnumÚprotos      r"   ÚaddProtozIPProtocol.addProto2   si   € Ü×(Ñ(¨Ó/ˆØ�Š7ÜÐEÓFÐFØ”(Š?ÜÐ@ÓAÐAØ�d—m‘mÑ#Ø!#ˆD�M‰M˜#ÑØ�‰�cÑ×!Ñ! %Õ(r$   c                 ó¤  — t        |«      }| j                  j                  |j                  d«      D ]œ  }|j	                  |dd  ||j
                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  ¬«       Œž y )Nr(   r	   )r   ÚpartialÚsourceÚdestr   r   r   r   r   r   r   r   r   r   )r   r,   Úgetr   ÚdatagramReceivedr   r   r   r   r   r   r   r   r   r   r   )r   r   r6   r8   r7   r   Úheaderr3   s           r"   r:   zIPProtocol.datagramReceived<   sª   € Ü˜$“ˆØ—]‘]×&Ñ& v§¡¸Ó;ò 	ˆEØ×"Ñ"Ø˜"˜#�YØØ—|‘|Ø—\‘\ØŸ™ØŸ™Ø—J‘JØ—J‘JØŸ™Ø"×.Ñ.Ø &× 6Ñ 6Ø$×2Ñ2Ø%×4Ñ4Ø—J‘Jð #õ ñ	r$   N)r%   r&   r'   r#   r4   r:   r(   r$   r"   r*   r*   -   s   „ òò)ór$   r*   )Ú__doc__r   r   Úzope.interfacer   Útwisted.internetr   Útwisted.pairr   r   r0   ÚIRawPacketProtocolÚAbstractDatagramProtocolr*   r(   r$   r"   ú<module>rB      sV   ðñ 3ã Û å &å %Ý ÷5ñ 5ð. €ñ ˆS×#Ñ#Ó$ô �×2Ñ2ó  ó %ñ r$   