a
    kÄ#d³  ã                   @   s€   d Z ddlmZmZ ddlmZmZ ddlmZm	Z	m
Z
 G dd„ deƒZeeedd� ee	edd� ee
edd� eeeƒ d	S )
a2  
IEEE 802.1aq - Shorest Path Bridging Mac-in-mac (SPBM):

Ethernet based link state protocol that enables
- Layer 2 Unicast
- Layer 2 Multicast
- Layer 3 Unicast
- Layer 3 Multicast virtualized services

https://en.wikipedia.org/wiki/IEEE_802.1aq
Modeled after the scapy VXLAN contribution

Example SPB Frame Creation
__________________________

Note the outer Dot1Q Ethertype marking (0x88e7)

::
    backboneEther     = Ether(dst='00:bb:00:00:90:00', src='00:bb:00:00:40:00', type=0x8100)  # noqa: E501
    backboneDot1Q     = Dot1Q(vlan=4051,type=0x88e7)
    backboneServiceID = SPBM(prio=1,isid=20011)
    customerEther     = Ether(dst='00:1b:4f:5e:ca:00',src='00:00:00:00:00:01',type=0x8100)  # noqa: E501
    customerDot1Q     = Dot1Q(prio=1,vlan=11,type=0x0800)
    customerIP        = IP(src='10.100.11.10',dst='10.100.12.10',id=0x0629,len=106)  # noqa: E501
    customerUDP       = UDP(sport=1024,dport=1025,chksum=0,len=86)

    spb_example = backboneEther/backboneDot1Q/backboneServiceID/customerEther/customerDot1Q/customerIP/customerUDP/"Payload"  # noqa: E501
é    )ÚPacketÚbind_layers)ÚBitFieldÚThreeBytesField)ÚEtherÚDot1QÚDot1ADc                   @   sV   e Zd Zd Zedddƒedddƒedddƒedddƒeddd	ƒed
dƒgZdd„ ZdS )ÚSPBMÚprior   é   Zdeié   ZncaZres1Zres2é   Zisidc                 C   s
   |   d¡S )NzSPBM (isid=%SPBM.isid%)Zsprintf)Úself© r   úI/var/www/html/gsl.tools/lib/python3.9/site-packages/scapy/contrib/spbm.pyÚ	mysummary3   s    zSPBM.mysummaryN)Ú__name__Ú
__module__Ú__qualname__Únamer   r   Zfields_descr   r   r   r   r   r	   *   s   




ûr	   içˆ  )ÚtypeN)Ú__doc__Zscapy.packetr   r   Zscapy.fieldsr   r   Zscapy.layers.l2r   r   r   r	   r   r   r   r   Ú<module>   s   