Ë
    oj‘  ã                   ó¢   — d Z ddlZddlmZmZ ddlmZ ddlmZ  G d„ de«      Z	 G d„ d	«      Z
 ee	«       G d
„ dej                  «      «       Zy)z1Support for working directly with ethernet framesé    N)Ú	InterfaceÚimplementer)Úprotocol)Úrawc                   ó   — e Zd ZdZd„ Zd„ Zy)ÚIEthernetProtocolz6An interface for protocols that handle Ethernet framesc                  ó   — y)z"Add an IRawPacketProtocol protocolN© )ÚnumÚprotos     ú7/usr/lib/python3/dist-packages/twisted/pair/ethernet.pyÚaddProtozIEthernetProtocol.addProto   ó   � ó    c                  ó   — y)z#An Ethernet frame has been receivedNr
   )ÚdataÚpartials     r   ÚdatagramReceivedz"IEthernetProtocol.datagramReceived   r   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r
   r   r   r   r      s   „ Ù@ò1ó2r   r   c                   ó   — e Zd Zd„ Zy)ÚEthernetHeaderc                 ó\   — t        j                  d|d d «      \  | _        | _        | _        y )Nz!6s6sHé   )ÚstructÚunpackÚdestÚsourcer   )Úselfr   s     r   Ú__init__zEthernetHeader.__init__   s)   € Ü/5¯}©}Ø�d˜;˜YÐ'ó0
Ñ,ˆŒ�D”K ¥r   N)r   r   r   r"   r
   r   r   r   r      s   „ ó
r   r   c                   ó    — e Zd Zd„ Zd„ Zdd„Zy)ÚEthernetProtocolc                 ó   — i | _         y )N)ÚetherProtos)r!   s    r   r"   zEthernetProtocol.__init__%   s
   € ØˆÕr   c                 óä   — t        j                  |«      }|dk  rt        d«      ‚|dk\  rt        d«      ‚|| j                  vrg | j                  |<   | j                  |   j	                  |«       y )Nr   z'Added protocol must be positive or zeroi   z"Added protocol must fit in 16 bits)r   ÚIRawPacketProtocolÚ	TypeErrorr&   Úappend)r!   r   r   s      r   r   zEthernetProtocol.addProto(   so   € Ü×&Ñ& uÓ-ˆØ�Š7ÜÐEÓFÐFØ�%Š<ÜÐ@ÓAÐAØ�d×&Ñ&Ñ&Ø$&ˆD×Ñ˜SÑ!Ø×Ñ˜Ñ×$Ñ$ UÕ+r   c                 óä   — t        |d d «      }| j                  j                  |j                  d«      D ]9  }|j	                  |dd  ||j
                  |j                  |j                  ¬«       Œ; y )Nr   r
   )r   r   r   r    r   )r   r&   Úgetr   r   r   r    )r!   r   r   Úheaderr   s        r   r   z!EthernetProtocol.datagramReceived2   sl   € Ü  S b 	Ó*ˆØ×%Ñ%×)Ñ)¨&¯,©,¸Ó;ò 	ˆEØ×"Ñ"Ø˜"˜#�YØØ—[‘[Ø—}‘}ØŸ™ð #õ ñ	r   N)r   )r   r   r   r"   r   r   r
   r   r   r$   r$   #   s   „ òò,ô	r   r$   )r   r   Úzope.interfacer   r   Útwisted.internetr   Útwisted.pairr   r   r   ÚAbstractDatagramProtocolr$   r
   r   r   ú<module>r2      sS   ðñ 8ã ç 1å %Ý ô2˜	ô 2÷
ñ 
ñ ÐÓô�x×8Ñ8ó ó  ñr   