ϪfdZddlZddlmZddlmZddlmZGddZeejGdd ejZ y) z1 Implementation of raw packet interfaces for UDP N) implementer)protocol)rawceZdZdZy) UDPHeaderchtjd|dd\|_|_|_|_y)Nz!HHHH)structunpacksourcedestlencheck)selfdatas 5/usr/lib/python3/dist-packages/twisted/pair/rawudp.py__init__zUDPHeader.__init__s,9? T"1X: 6di4:N)__name__ __module__ __qualname__rrrrrs rrceZdZdZdZdZy)RawUDPProtocolci|_y)N) udpProtos)rs rrzRawUDPProtocol.__init__s rct|tjs td|dkr td|dk\r td||jvrg|j|<|j|j |y)Nz6Added protocol must be an instance of DatagramProtocolrz'Added protocol must be positive or zeroiz"Added protocol must fit in 16 bits) isinstancerDatagramProtocol TypeErrorrappend)rnumprotos raddProtozRawUDPProtocol.addProtosu%!:!:;TU U 7EF F %<@A A dnn $"$DNN3  s""5)rct|}|jj|jdD]#}|j |dd||j f%y)Nrr )rrgetr datagramReceivedr )rrpartialr r rversionihltostot_len fragment_idfragment_offset dont_fragmentmore_fragmentsttlheaderr#s rr'zRawUDPProtocol.datagramReceived(sR"4^^'' R8 FE  " "48ffmm-D E FrN)rrrrr$r'rrrrrs *Frr) __doc__r zope.interfacertwisted.internetr twisted.pairrrIRawDatagramProtocolAbstractDatagramProtocolrrrrr9sQ &%   S % %&"FX66"F'"Fr