HEX
Server: LiteSpeed
System: Linux srv146.niagahoster.com 4.18.0-553.30.1.lve.el8.x86_64 #1 SMP Tue Dec 3 01:21:19 UTC 2024 x86_64
User: kodi1989 (1633)
PHP: 8.1.34
Disabled: symlink,shell_exec,exec,popen,system,dl,passthru,escapeshellarg,escapeshellcmd,show_source,pcntl_exec
Upload Files
File: //opt/alt/python37/lib/python3.7/site-packages/pyroute2/bsd/__pycache__/util.cpython-37.pyc
B

��f��@s`dZddlZddlZddlZGdd�de�ZGdd�de�ZGdd�de�ZGd	d
�d
e�ZdS)z�
Utility to parse ifconfig, netstat etc.

PF_ROUTE may be effectively used only to get notifications. To fetch
info from the system we have to use ioctl or external utilities.

Maybe some day it will be ioctl. For now it's ifconfig and netstat.
�Nc@s&eZdZddgZddd�Zdd�ZdS)	�CMD�unamez-sNcCs|dk	r||_dS)N)�cmd)�selfr�r�B/opt/alt/python37/lib/python3.7/site-packages/pyroute2/bsd/util.py�__init__szCMD.__init__cCs\d}}zDy"tj|jtjd�}|��\}}Wntk
rH|��YnXWd|��X|S)z0
        Run the command and get stdout
        �)�stdoutN)�
subprocess�Popenr�PIPE�communicate�	Exception�kill�wait)rr
�stderr�processrrr�runs
zCMD.run)N)�__name__�
__module__�__qualname__rrrrrrrrs
rc@seZdZddgZdd�ZdS)�Route�netstatz-rncCs�g}d}t|t�r|�d�}�x�|�d�D�]�}|dkr@tj}n
|dkrJP|��}t|�dkr`q*|ddkr�tdd	�t|�D��}d
|kr*|d|d
<q*|gd�}||d}|d
k�rV|�d�}t|�dkr�|\}}	n|d}|tjkr�d}	nd}	|�d�}t|�dk�r|\}}
n|d}d|dd|�	d�f}t
|	�|d<|d�d|g�||d}|�d��s�|�
d�dk�s�|d�d||dg�||d
|d<|�|�q*W|S)Nrzutf-8�
z	Internet:z
Internet6:�ZDestinationcSsg|]}|d|df�qS)�rr)�.0�xrrr�
<listcomp>:szRoute.parse.<locals>.<listcomp>ZNetifZIface)�family�attrs�default�/�� ��%z%s%sz.0��.�dst_lenr!ZRTA_DSTZGateway�link�:ZRTA_GATEWAY�ifname)�
isinstance�bytes�decode�split�socket�AF_INET�len�dict�	enumerate�count�int�append�
startswith�find)r�data�retr �line�slZfmapZroute�dstr*�_Zgwrrr�parse(sP








zRoute.parseN)rrrrrBrrrrr%src@seZdZddgZdd�ZdS)�ARP�arpz-ancCs�g}d}d}d}t|t�r$|�d�}x�|�d�D]�}|��}|sBq0|ddkr\d}d}d}q0||�d	��d
�}||�d	��d
�}	|	dkr�q0||}
d|
dd|gd
|	ggd�}|�|�q0W|S)Nrr(�zutf-8rr�Hostr$�(�)�
incompleteZNDA_DSTZ
NDA_LLADDR)Zifindexr-r r!)r.r/r0r1�stripr9)rr<r=Zf_dstZf_addrZf_ifnamer>r?r@�addrr-Z	neighbourrrrrBgs4

z	ARP.parseN)rrrrrBrrrrrCdsrCc@s4eZdZde�d�jiZddgZdd�Zdd�Zd	S)
�Ifconfig�NRz^\b�ifconfigz-acCs>i}d}x0|t|�dkr8||d|||<|d7}q
W|S)z�
        Dumb line parser:

        "key1 value1 key2 value2 something"
          -> {"key1": "value1", "key2": "value2"}
        rrr$)r4)rr>r=�cursorrrr�
parse_line�szIfconfig.parse_linecCshd}d}iid�}d}ddi}t|t�r2|�d�}�x.|�d�D�]}|��}|�|�}	|dkr�d|kr�|ds�d}
y|�d	�}
Wn:tk
r�y|�d
�}
Wntk
r�w@YnXYnX|
dk	r@d||
dfd
||
dfg|d<q@|jd|��r�|ddd�}d}|d7}|gd�|d|<}g|d|<}|d�d|g�|dd�dk�r�d}dgi}dd|fd|fgi}
|d�d|
g�y(t	|d�d�d�d�d�|d<Wnt
k
�r�YnXd|	k�r`|d�dt	|	d�g�q@d|	k�r|d�d|	dg�q@d|	k�r>|d�d|	dg�q@d |	k�rft	|	d �}t	|	d �|d <q@d|	k�r�d!|	k�s�d|	k�r�t|	�q@|tj
tt	|	d!d"���d#�d$|	dggd%�}d&|	k�r�|d�d'|	d&g�|�|�q@d(|	kr@d)|	k�sd(|	k�rt|	�q@|tjt	|	d)�d$|	d(�d*�dggd%�}d+|	k�rVt	|	d+d"�|d,<|�|�q@W|S)-a�
        Parse ifconfig output into netlink-compatible dicts::

            from pyroute2.netlink.rtnl.ifinfmsg import ifinfmsg
            from pyroute2.bsd.util import Ifconfig

            def links()
                ifc = Ifconfig()
                data = ifc.run()
                for name, spec in ifc.parse(data)["links"].items():
                    yield ifinfmsg().load(spec)
        N)�links�addrsrr!zutf-8rZgreZinetz->z-->ZIFLA_GRE_LOCALrZIFLA_GRE_REMOTErM���)�indexr!rQrRZIFLA_IFNAMEr(ZIFLA_INFO_KINDZIFLA_INFO_DATAZ
IFLA_LINKINFO�=�<�flagsZmtuZIFLA_MTUZetherZIFLA_ADDRESSZlladdrrT�netmask��1ZIFA_ADDRESS)rTr �	prefixlenr!�	broadcastZ
IFA_BROADCASTZinet6r[r'ZscopeidZscope)r.r/r0r1rPrT�
ValueError�matchr9r8r�printr2r3�binr7�AF_INET6)rr<r-�kindr=�idxZ	info_datar>r?�plZarrowr+rRZlinkinforKrrrrB�s�




(







zIfconfig.parseN)	rrr�re�compiler^rrPrBrrrrrL�srL)	�__doc__rer2r�objectrrrCrLrrrr�<module>s?&