+
    Dfj	                         R t ^ RIt^ RIt^ RIHt ^ RIHt ^ RIHt  ! R R4      t	R	t
]! ]P                  4       ! R R]P                  4      4       tR# )
z,Support for working directly with IP packetsN)implementer)protocol)rawc                   &   a  ] tR t^t o R tRtV tR# )IPHeaderc           
        \         P                  ! R VR,          4      w
  pV n        V n        V n        pV n        V n        V n        pp\        P                  ! V4      V n
        \        P                  ! V4      V n        V^,          V n        V^,          ^,	          ^,          V n        VR,          V n        VR,          ^ 8g  V n        VR,          ^ 8g  V n        R# )z!BBHHHBBH4s4s:N   Ni  i @  i    N)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__IPHeader.__init__   s     MM/495	
HLHMJ%%e,
%%e,
!D($&1,2'&0%.!3&/14    )r   r   r   r   r   r   r   r   r   r   r   r   r   N)__name__
__module____qualname____firstlineno__r   __static_attributes____classdictcell____classdict__s   @r   r   r      s     5 5r    r   c                   2   a  ] tR t^-t o R tR tR tRtV tR# )
IPProtocolc                    / V n         R # )NipProtos)r   s   &r   r   IPProtocol.__init__/   s	    r    c                   \         P                  ! V4      pV^ 8  d   \        R4      hV\        8  d   \        R4      hWP                  9  d   . V P                  V&   V P                  V,          P                  V4       R# )    z'Added protocol must be positive or zeroz"Added protocol must fit in 32 bitsN)r   IRawDatagramProtocol	TypeErrorMAX_SIZEr-   append)r   numprotos   &&&r   addProtoIPProtocol.addProto2   sg    ((/7EFF(?@AAmm#!#DMM#c!!%(r    c                   \        V4      pV P                  P                  VP                  R4       F  pVP	                  VR ,          VVP
                  VP                  VP                  VP                  VP                  VP                  VP                  VP                  VP                  VP                  VP                  VP                  R7       K  	  R# ):r   NN)r   partialsourcedestr   r   r   r   r   r   r   r   r   r   N )r   r-   getr   datagramReceivedr   r   r   r   r   r   r   r   r   r   r   )r   r   r:   r<   r;   r   headerr6   s   &&&&&&  r   r?   IPProtocol.datagramReceived<   s    $]]&&v;E""#Y||\\JJJJ".. & 6 6$22%44JJ #  <r    r,   N)	r!   r"   r#   r$   r   r7   r?   r%   r&   r'   s   @r   r*   r*   -   s     ) r    r*   l        )__doc__r   r	   zope.interfacer   twisted.internetr   twisted.pairr   r   r3   IRawPacketProtocolAbstractDatagramProtocolr*   r=   r    r   <module>rH      sV    3   & % 5 5.  S##$ 22   % r    