HEX
Server: LiteSpeed
System: Linux us-phx-web1284.main-hosting.eu 4.18.0-553.109.1.lve.el8.x86_64 #1 SMP Thu Mar 5 20:23:46 UTC 2026 x86_64
User: u300739242 (300739242)
PHP: 8.2.30
Disabled: system, shell_exec, passthru, mysql_list_dbs, ini_alter, dl, symlink, link, chgrp, leak, popen, apache_child_terminate, virtual, mb_send_mail
Upload Files
File: //opt/alt/python311/lib/python3.11/site-packages/pyroute2/bsd/__pycache__/util.cpython-311.pyc
�

�;f����dZddlZddlZddlZGd�de��ZGd�de��ZGd�de��ZGd	�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�$�eZdZddgZdd�Zd�ZdS)�CMD�unamez-sNc��|�	||_dSdS�N)�cmd)�selfrs  �D/opt/alt/python311/lib/python3.11/site-packages/pyroute2/bsd/util.py�__init__zCMD.__init__s���?��D�H�H�H��?�c�.�dx}}	tj|jtj���}|���\}}n$#t
$r|���YnwxYw|���n#|���wxYw|S)z0
        Run the command and get stdout
        �)�stdout)�
subprocess�Popenr�PIPE�communicate�	Exception�kill�wait)r	r�stderr�processs    r
�runzCMD.runs�������	� �&�t�x�
��H�H�H�G�&�2�2�4�4��V�V�V���	�	�	��L�L�N�N�N�N�N�	����
�L�L�N�N�N�N��G�L�L�N�N�N�N�����
s)�<A�A<�A$�!A<�#A$�$A<�<Br)�__name__�
__module__�__qualname__rrr�rr
rrs@�������D�/�C���������rrc��eZdZddgZd�ZdS)�Route�netstatz-rnc��g}d}t|t��r|�d��}|�d��D�]�}|dkr
tj}n	|dkr�n�|���}t
|��dkr�G|ddkr6td�t|��D����}d	|vr|d
|d	<��|gd�}||d}|dkr�|�d
��}t
|��dkr|\}}	n|d}|tjkrd}	nd}	|�d��}t
|��dkr|\}}
n|d}|�dd|�	d��z
z��}t|	��|d<|d�d|g��||d}|�d��sB|�
d��dks)|d�d||dg��||d	|d<|�|�����|S)Nr�utf-8�
z	Internet:z
Internet6:��Destinationc�.�g|]}|d|df��S)�rr)�.0�xs  r
�
<listcomp>zRoute.parse.<locals>.<listcomp>:s$��A�A�A�a�a��d�A�a�D�\�A�A�Ar�Netif�Iface)�family�attrs�default�/�� ��%z.0��.�dst_lenr.�RTA_DST�Gateway�link�:�RTA_GATEWAY�ifname)�
isinstance�bytes�decode�split�socket�AF_INET�len�dict�	enumerate�count�int�append�
startswith�find)r	�data�retr-�line�sl�fmap�route�dstr7�_�gws            r
�parsezRoute.parse(s\�������d�E�"�"�	(��;�;�w�'�'�D��J�J�t�$�$�2	�2	�D��{�"�"�������%�%��������B��2�w�w��{�{���!�u�
�%�%��A�A�9�R�=�=�A�A�A�B�B���$�&�&�$(��M�D��M��%��3�3�E��T�-�(�)�C��i����i�i��n�n���s�8�8�q�=�=�#&�L�C����a�&�C����/�/�"$���"%���i�i��n�n���s�8�8�q�=�=� �F�C����a�&�C� #��T�Q����3���-?�%@�%@�A��#&�w�<�<��i� ��g��%�%�y�#�&6�7�7�7��D��O�$�B��=�=��(�(�
L��������1B�1B��g��%�%�}�b��i��6I�&J�K�K�K�!��g��/�E�(�O��J�J�u������
rN�rrrrrUrrr
rr%s-�������e�
�C�9�9�9�9�9rrc��eZdZddgZd�ZdS)�ARP�arpz-anc��g}d}d}d}t|t��r|�d��}|�d��D]�}|���}|s�|ddkrd}d}d}�,||�d	���d
��}||�d	���d
��}	|	dkr��||}
d|
dd|gd
|	ggd�}|�|����|S)Nr'r5�r"r#r�Hostr1�(�)�
incomplete�NDA_DST�
NDA_LLADDR)�ifindexr=r-r.)r>r?r@rA�striprI)r	rLrM�f_dst�f_addr�f_ifnamerNrOrR�addrr=�	neighbours            r
rUz	ARP.parsegs-�����������d�E�"�"�	(��;�;�w�'�'�D��J�J�t�$�$�	"�	"�D������B��
���!�u������������U�)�/�/�#�&�&�,�,�S�1�1�C��f�:�#�#�C�(�(�.�.�s�3�3�D��|�#�#����\�F�� ��$�c�*�\�4�,@�A�	��I�
�J�J�y�!�!�!�!��
rNrVrrr
rXrXds,�������%�.�C� � � � � rrXc�P�eZdZdejd��jiZddgZd�Zd�ZdS)�Ifconfig�NRz^\b�ifconfigz-ac��i}d}|t|��dz
kr/||dz|||<|dz
}|t|��dz
k�/|S)z�
        Dumb line parser:

        "key1 value1 key2 value2 something"
          -> {"key1": "value1", "key2": "value2"}
        rr'r1)rD)r	rNrM�cursors    r
�
parse_linezIfconfig.parse_line�sa��������D�	�	�A�
�&�&� $�V�a�Z� 0�C��V����a�K�F���D�	�	�A�
�&�&��
rc	���d}d}iid�}d}ddi}t|t��r|�d��}|�d��D�]�}|���}|�|��}	|dkr}d|vry|dsqd}
	|�d	��}
n8#t$r+	|�d
��}
n#t$rYY��wxYwYnwxYw|
�d||
dz
fd
||
dzfg|d<��|jd|���r|ddd�}d}|dz
}|gd�x|d|<}gx|d|<}|d�d|g��|dd�dkr-d}dgi}dd|fd|fgi}
|d�d|
g��	t|d�d��d�d��d��|d<n#t$rYnwxYwd|	vr0|d�dt|	d��g�����d|	vr%|d�d|	dg����
d|	vr%|d�d|	dg����6d |	vr/t|	d ��}t|	d ��|d <��id|	vr�d!|	vsd|	vrt|	�����|tj
tt|	d!d"�����d#��d$|	dggd%�}d&|	vr#|d�d'|	d&g��|�|����d(|	vr�d)|	vsd(|	vrt|	����/|tjt|	d)��d$|	d(�d*��dggd%�}d+|	vrt|	d+d"��|d,<|�|�����|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.r"r#�gre�inetz->z-->�IFLA_GRE_LOCALr'�IFLA_GRE_REMOTErk���)�indexr.rqrr�IFLA_IFNAMEr5�IFLA_INFO_KIND�IFLA_INFO_DATA�
IFLA_LINKINFO�=�<�flags�mtu�IFLA_MTU�ether�IFLA_ADDRESS�lladdrrx�netmask��1�IFA_ADDRESS)rxr-�	prefixlenr.�	broadcast�
IFA_BROADCAST�inet6r�r4�scopeid�scope)r>r?r@rArorx�
ValueError�matchrIrHr�printrBrC�binrG�AF_INET6)r	rLr=�kindrM�idx�	info_datarNrO�pl�arrowr:rr�linkinforgs               r
rUzIfconfig.parse�s��������R�(�(�����d�O�	��d�E�"�"�	(��;�;�w�'�'�D��J�J�t�$�$�W	#�W	#�D������B�����$�$�B��u�}�}��2���i��6H����!��H�H�T�N�N�E�E��!�!�!�!�!� "���������%�!�!�!� ���!������!����
�$�)�2�e�a�i�=�9�*�B�u�q�y�M�:�*�I�g�&�� �t�z�$���%�%�@
#��A��s��s������q���8;�b�.I�.I�I��G��V�$�t�/1�1��G��V�$�u��W�
�$�$�m�V�%<�=�=�=��"�1�"�:��&�&� �D�!(�"�
�I��-�t�4�-�y�9�"� �H���M�(�(�/�8�)D�E�E�E��$'��1����C�(8�(8��(;�(A�(A�#�(F�(F�q�(I�$J�$J�D��M�M�� �����D������B�;�;���M�(�(�*�c�"�U�)�n�n�)E�F�F�F���B����W�
�$�$�n�b��k�%B�C�C�C�C��R����W�
�$�$�n�b��l�%C�D�D�D�D��B����"�W�+�&�&�� #�B�w�K� 0� 0��W�
�
��2����R�'�'�V�2�-=�-=��"�I�I�I�� �$�n�!$�S��I���%;�%;�!<�!<�!B�!B�3�!G�!G�,�b��j�9�:�	����"�$�$���M�(�(�/�2�k�?�)K�L�L�L����T�"�"�"�"��B����r�)�)�w�b�/@�/@��"�I�I�I�� �$�o�!$�R��_�!5�!5�,�b��k�.?�.?��.D�.D�Q�.G�H�I�	�����?�?�$'��9�
�r�$:�$:�D��M����T�"�"�"���
sI�B&�&
C�1C�C�
C�C�C�C�C�"A
G-�-
G:�9G:N)	rrr�re�compiler�rrorUrrr
rjrj�sZ������
�:�2�:�f�%�%�+�,�E��t�
�C����o�o�o�o�orrj)	�__doc__r�rBr�objectrrrXrjrrr
�<module>r�s�����
�	�	�	�
�
�
�
����������&����,<�<�<�<�<�C�<�<�<�~#�#�#�#�#�#�#�#�#�LA�A�A�A�A�s�A�A�A�A�Ar