a
    kÄ#dú  ã                   @   sŠ   d Z ddlZddlmZ ddlmZmZmZ ddlm	Z	 ddl
mZ ddlmZ ddlmZ ddlZdd	lmZmZ g d
¢Zddd„ZdS )z-
Functions common to different architectures
é    N)Úconf)ÚMTUÚARPHDR_ETHERÚARPHRD_TO_DLT)ÚScapy_Exception)Únetwork_name)Úbpf_program)Údecode_locale_str)ÚOptionalÚUnion)ZUPZ	BROADCASTÚDEBUGZLOOPBACKZPOINTTOPOINTÚ
NOTRAILERSÚRUNNINGZNOARPZPROMISCr   ZALLMULTIZMASTERZSLAVEZ	MULTICASTZPORTSELZ	AUTOMEDIAZDYNAMICZLOWER_UPZDORMANTÚECHOFc                 C   sn  z ddl m}m}m}m}m} W n ty:   tdƒ‚Y n0 ddlm	}	 t
ƒ }
|	|  d¡ƒ}|sÀ|sxtjsrtdƒ‚tj}ddlm} z||ƒd }t |¡}W n ty°   Y n0 |sÀtjrÀt}|durâ|t|t |
¡|d	d
ƒ}nn|�rP|	|ƒ}|	t|ƒ d¡ƒ}||t|d|ƒ}tt|ƒ d¡ƒ}|�r2t|ƒ‚||t |
¡|d	d
ƒ}||ƒ |d
k�rjtd| |f ƒ‚|
S )zËAsks libpcap to parse the filter, then build the matching
    BPF bytecode.

    :param iface: if provided, use the interface to compile
    :param linktype: if provided, use the linktype to compile
    r   )ÚPCAP_ERRBUF_SIZEÚpcap_open_liveÚpcap_compileÚpcap_compile_nopcapÚ
pcap_closez1libpcap is not available. Cannot compile filter !)Úcreate_string_bufferÚutf8z(Please provide an interface or linktype!)Úget_if_raw_hwaddrNé   éÿÿÿÿó    z+Failed to compile filter expression %s (%s))Zscapy.libs.winpcapyr   r   r   r   r   ÚOSErrorÚImportErrorÚctypesr   r   Úencoder   Úifacer   Z
scapy.archr   r   ÚgetÚ	ExceptionZuse_bpfr   r   Zbyrefr   r	   Ú	bytearrayÚstrip)Z
filter_expr   ÚlinktypeZpromiscr   r   r   r   r   r   ZbpfZ
bpf_filterr   ZarphdÚretÚerrZiface_bZpcapÚerror© r(   úH/var/www/html/gsl.tools/lib/python3.9/site-packages/scapy/arch/common.pyÚcompile_filter5   s\     ÿ
ÿ
ÿ
ÿÿ

ÿr*   )NNF)Ú__doc__r   Zscapy.configr   Z
scapy.datar   r   r   Zscapy.errorr   Zscapy.interfacesr   Zscapy.libs.structuresr   Zscapy.utilsr	   ZscapyZscapy.compatr
   r   Z
_iff_flagsr*   r(   r(   r(   r)   Ú<module>   s      ý