+
    Dfj                         R t ^ RIt^ RIHt ^ RIHt ^ RIHt  ! R R4      t]! ]P                  4       ! R R]P                  4      4       tR# )	z1
Implementation of raw packet interfaces for UDP
N)implementer)protocol)rawc                   &   a  ] tR t^t o R tRtV tR# )	UDPHeaderc                t    \         P                  ! R VR,          4      w  V n        V n        V n        V n        R# )z!HHHH:N   NN)structunpacksourcedestlencheck)selfdatas   &&5/usr/lib/python3/dist-packages/twisted/pair/rawudp.py__init__UDPHeader.__init__   s*    9?T"X:
6di4:    )r   r   r   r   N)__name__
__module____qualname____firstlineno__r   __static_attributes____classdictcell____classdict__s   @r   r   r      s     
 
r   r   c                   2   a  ] tR t^t o R tR tR tRtV tR# )RawUDPProtocolc                    / V n         R # )N	udpProtos)r   s   &r   r   RawUDPProtocol.__init__   s	    r   c                &   \        V\        P                  4      '       g   \        R 4      hV^ 8  d   \        R4      hVR8  d   \        R4      hWP                  9  d   . V P                  V&   V P                  V,          P                  V4       R# )z6Added protocol must be an instance of DatagramProtocolz'Added protocol must be positive or zeroz"Added protocol must fit in 16 bitsNi   )
isinstancer   DatagramProtocol	TypeErrorr!   append)r   numprotos   &&&r   addProtoRawUDPProtocol.addProto   sv    %!:!:;;TUU7EFF%<@AAnn$"$DNN3s""5)r   c                    \        V4      pV P                  P                  VP                  R4       F'  pVP	                  VR ,          W?P
                  34       K)  	  R# ):r   NNN )r   r!   getr   datagramReceivedr   )r   r   partialr   r   r   versionihltostot_lenfragment_idfragment_offsetdont_fragmentmore_fragmentsttlheaderr)   s   &&&&&&&&&&&&&&&  r   r/   RawUDPProtocol.datagramReceived(   sG    " 4^^''R8E""48fmm-DE 9r   r    N)	r   r   r   r   r   r*   r/   r   r   r   s   @r   r   r      s     	*F Fr   r   )__doc__r	   zope.interfacer   twisted.internetr   twisted.pairr   r   IRawDatagramProtocolAbstractDatagramProtocolr   r-   r   r   <module>rB      sQ   
  & % 
 
 S%%&"FX66 "F '"Fr   