a
    kÄ#d|  ã                L   @   sª  d Z ddlmZ ddlmZmZ ddlmZmZm	Z	m
Z
mZmZmZmZmZ ddlmZmZ dddd	d
dddœZG dd„ deƒZddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[œKZG d\d]„ d]eƒZG d^d_„ d_eƒZG d`da„ daeƒZG dbdc„ dceƒZG ddde„ deeƒZG dfdg„ dgeƒZG dhdi„ dieƒZeeedjdkiƒ eeeƒ dlS )mz
RSVP layer
é    )Úchb)ÚPacketÚbind_layers)	ÚBitFieldÚByteEnumFieldÚ	ByteFieldÚFieldLenFieldÚIPFieldÚ
ShortFieldÚStrLenFieldÚ
XByteFieldÚXShortField)ÚIPÚchecksumÚPathzReservation requestz
Path errorzReservation request errorzPath teardownzReservation teardownz"Reservation request acknowledgment)é   é   é   é   é   é   é   c                	   @   sZ   e Zd Zd Zedddƒedddƒeddeƒeddƒeddƒe	d	d
ƒe
ddƒgZdd„ ZdS )ÚRSVPÚVersionr   r   ÚFlagsÚClassÚchksumNZTTLZdataofsr   ÚLengthc                 C   s˜   ||7 }| j d u rRt|ƒ}|d d… t|d? d@ ƒ t|d@ ƒ }||dd …  }| jd u r”t|ƒ}|d d… t|d? ƒ t|d@ ƒ |dd …  }|S )Nr   é   éÿ   r   r   )r   Úlenr   r   r   )ÚselfÚpZpayZtmp_lenZtmp_pZck© r#   úI/var/www/html/gsl.tools/lib/python3.9/site-packages/scapy/contrib/rsvp.pyÚ
post_build&   s    
(
0zRSVP.post_build)Ú__name__Ú
__module__Ú__qualname__Únamer   r   Úrsvpmsgtypesr   r   r   r
   Úfields_descr%   r#   r#   r#   r$   r      s   


úr   ÚSessionÚHOPZ	INTEGRITYZTIME_VALUESZ
ERROR_SPECZSCOPEZSTYLEZFLOWSPECZFILTER_SPECZSENDER_TEMPLATEZSENDER_TSPECZADSPECZPOLICY_DATAZRESV_CONFIRMZ
RSVP_LABELZ	HOP_COUNTZSTRICT_SOURCE_ROUTEZLABEL_REQUESTZEXPLICIT_ROUTEZROUTE_RECORDZHELLOZ
MESSAGE_IDZMESSAGE_ID_ACKZMESSAGE_ID_LISTZ
DIAGNOSTICZROUTEZDIAG_RESPONSEZDIAG_SELECTZRECOVERY_LABELZUPSTREAM_LABELZ	LABEL_SETZ
PROTECTIONzPRIMARY PATH ROUTEzDSBM IP ADDRESSZSBM_PRIORITYzDSBM TIMER INTERVALSZSBM_INFOZS2L_SUB_LSPZDETOURZ	CHALLENGEz	DIFF-SERVZ	CLASSTYPEZLSP_REQUIRED_ATTRIBUTESZ	NODE_CHARZSUGGESTED_LABELZACCEPTABLE_LABEL_SETZ
RESTART_CAzSESSION-OF-INTERESTZLINK_CAPABILITYzCapability ObjectZRSVP_HOP_L2ZLAN_NHOP_L2ZLAN_NHOP_L3ZLAN_LOOPBACKZTCLASSZTUNNELZLSP_TUNNEL_INTERFACE_IDZUSER_ERROR_SPECZNOTIFY_REQUESTzADMIN-STATUSZLSP_ATTRIBUTESZ
ALARM_SPECZASSOCIATIONZSECONDARY_EXPLICIT_ROUTEZSECONDARY_RECORD_ROUTEZFAST_REROUTEZSESSION_ATTRIBUTEZDCLASSzPACKETCABLE EXTENSIONSZATM_SERVICECLASSzCALL_OPS (ASON)ZGENERALIZED_UNIZCALL_IDZ3GPP2_ObjectZEXCLUDE_ROUTE)Kr   r   r   r   r   r   r   é	   é
   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é    é!   é"   é#   é$   é%   é&   é*   é+   é,   é-   é2   é?   é@   éA   éB   éC   é€   é�   é‚   éƒ   é„   é…   é†   é¡   é¢   é£   é¤   é¥   éÀ   éÁ   éÂ   éÃ   éÄ   éÅ   éÆ   éÇ   éÈ   éÉ   éÍ   éÏ   éá   éâ   éã   éä   éå   éæ   éç   éè   c                   @   s6   e Zd Zd ZeddƒeddeƒeddƒgZdd„ Z	dS )	ÚRSVP_Objectr   r   r   r   ZC_Typec                 C   sN   | j dkrtS | j dkrtS | j dkr*tS | j dkr8tS | j dkrFtS tS d S )Nr   r   r1   r8   ri   )r   ÚRSVP_HOPÚ	RSVP_TimeÚRSVP_SenderTSPECÚRSVP_LabelReqÚRSVP_SessionAttrbÚ	RSVP_Data©r!   Úpayloadr#   r#   r$   Úguess_payload_class†   s    




zRSVP_Object.guess_payload_classN)
r&   r'   r(   r)   r
   r   Ú	rsvptypesr   r+   r{   r#   r#   r#   r$   rr   €   s   
þrr   c                   @   s8   e Zd ZdZeddiiZedddd„ d�gZdd	„ Zd
S )rx   ZDatar   r   Ú c                 C   s   | j jd S )Nr   ©Z
underlayerr   ©Zpktr#   r#   r$   Ú<lambda>˜   ó    zRSVP_Data.<lambda>©Zlength_fromc                 C   s   t S ©N©rr   ry   r#   r#   r$   Údefault_payload_classš   s    zRSVP_Data.default_payload_classN)	r&   r'   r(   r)   rr   Úoverload_fieldsr   r+   r…   r#   r#   r#   r$   rx   •   s   rx   c                   @   s:   e Zd ZdZeddiiZeddƒedddƒgZd	d
„ Z	dS )rs   r-   r   r   Zneighborz0.0.0.0Zinfacer   rA   c                 C   s   t S rƒ   r„   ry   r#   r#   r$   r…   ¤   s    zRSVP_HOP.default_payload_classN)
r&   r'   r(   r)   rr   r†   r	   r   r+   r…   r#   r#   r#   r$   rs   ž   s   
ÿrs   c                   @   s2   e Zd ZdZeddiiZedddƒgZdd„ Zd	S )
rt   zTime Valr   r   Úrefreshr   rA   c                 C   s   t S rƒ   r„   ry   r#   r#   r$   r…   ­   s    zRSVP_Time.default_payload_classN)	r&   r'   r(   r)   rr   r†   r   r+   r…   r#   r#   r#   r$   rt   ¨   s   rt   c                   @   sh   e Zd ZdZeddiiZeddƒeddƒeddƒed	d
ƒeddƒeddƒedddd„ d�gZ	dd„ Z
dS )ru   ZSender_TSPECr   r1   Z
Msg_Formatr   ÚreserveZData_Lengthr   ZSrv_hdrr   Zreserve2Z
Srv_LengthZTokensr}   c                 C   s   | j jd S )Nr1   r~   r   r#   r#   r$   r€   º   r�   zRSVP_SenderTSPEC.<lambda>r‚   c                 C   s   t S rƒ   r„   ry   r#   r#   r$   r…   ¼   s    z&RSVP_SenderTSPEC.default_payload_classN)r&   r'   r(   r)   rr   r†   r   r
   r   r+   r…   r#   r#   r#   r$   ru   ±   s   úru   c                   @   s8   e Zd ZdZeddiiZeddƒeddƒgZdd„ Zd	S )
rv   z	Label Reqr   r8   rˆ   r   ZL3PIDc                 C   s   t S rƒ   r„   ry   r#   r#   r$   r…   Æ   s    z#RSVP_LabelReq.default_payload_classN)	r&   r'   r(   r)   rr   r†   r
   r+   r…   r#   r#   r#   r$   rv   À   s   ÿrv   c                	   @   s\   e Zd ZdZeddiiZeddƒeddƒeddƒedd	d
d�ed
ddd„ d�gZ	dd„ Z
d	S )rw   ZSession_Attributer   ri   ZSetup_priorityr   ZHold_priorityÚflagsÚName_lengthNÚName)Z	length_ofr}   c                 C   s   | j S rƒ   )rŠ   r   r#   r#   r$   r€   Ñ   r�   zRSVP_SessionAttrb.<lambda>r‚   c                 C   s   t S rƒ   r„   ry   r#   r#   r$   r…   Ô   s    z'RSVP_SessionAttrb.default_payload_class)r&   r'   r(   r)   rr   r†   r   r   r   r+   r…   r#   r#   r#   r$   rw   Ê   s   ürw   Úprotoé.   N)Ú__doc__Zscapy.compatr   Zscapy.packetr   r   Zscapy.fieldsr   r   r   r   r	   r
   r   r   r   Zscapy.layers.inetr   r   r*   r   r|   rr   rx   rs   rt   ru   rv   rw   r#   r#   r#   r$   Ú<module>   sÄ   ,ú
¶N	
	
