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/nftables/__pycache__/main.cpython-311.pyc
�

�;f�1����dZddlmZddlmZmZmZmZmZm	Z	m
Z
mZmZm
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZGd�d��ZGd�d��ZGd�d	e��Zd
S)�
�)�	nfgen_msg)�DATA_TYPE_ID_TO_NAME�DATA_TYPE_NAME_TO_INFO�NFT_MSG_DELCHAIN�NFT_MSG_DELRULE�NFT_MSG_DELSET�NFT_MSG_DELSETELEM�NFT_MSG_DELTABLE�NFT_MSG_GETCHAIN�NFT_MSG_GETRULE�NFT_MSG_GETSET�NFT_MSG_GETSETELEM�NFT_MSG_GETTABLE�NFT_MSG_NEWCHAIN�NFT_MSG_NEWRULE�NFT_MSG_NEWSET�NFT_MSG_NEWSETELEM�NFT_MSG_NEWTABLE�	NFTSocket�
nft_chain_msg�nft_rule_msg�nft_set_elem_list_msg�nft_set_msg�
nft_table_msgc�V�eZdZdZd�Zd�Zed���Zed���Zd�Z	d�Z
dS)	�NFTSet��table�name�key_type�timeout�counter�commentc��||_||_|jD]3}||vrt||||���|dvrt||d���4dS)N�rr )rr �	__slots__�setattr)�selfrr �kwargs�attrnames     �I/opt/alt/python311/lib/python3.11/site-packages/pyroute2/nftables/main.py�__init__zNFTSet.__init__#so����
���	���	.�	.�H��6�!�!���h��x�(8�9�9�9�9��!2�2�2���h��-�-�-��		.�	.�c�F�|j|jd�}t��}|j�'t	j|j��\}}}||d<||d<|j�|�d��|j|d<|jdurddgi|d	<|j	�
d
|j	fg|d<d|d
<||d<|S)N)�NFTA_SET_TABLE�
NFTA_SET_NAME�NFTA_SET_KEY_TYPE�NFTA_SET_KEY_LEN�NFT_SET_TIMEOUT�NFTA_SET_TIMEOUTT�attrs)�NFTA_EXPR_NAMEr#�
NFTA_SET_EXPR�NFTNL_UDATA_SET_COMMENT�NFTA_SET_USERDATA��NFTA_SET_ID�NFTA_SET_FLAGS)
rr �setr!r�getr"�addr#r$)r)r6�	set_flagsr!�key_len�_s      r,�
as_netlinkzNFTSet.as_netlink-s���#'�:��	�J�J���E�E�	��=�$�#9�#=�d�m�#L�#L� �H�g�q�)1�E�%�&�(/�E�$�%��<�#��M�M�+�,�,�,�(,��E�$�%��<�4���&-�0M�/N�%O�E�/�"��<�#�*�D�L�9�*�E�%�&�
 !��m��"+�����r.c���tj|�d��|�d����}d}|�d��}|r|�d��}|rd|vrd}d}|�d��}|r|D]\}}|dkr|}n�||�d	��|�d
��||�d��||���S)
Nr2Fr8r7r#Tr:r9r0r1r5r)rr?�get_attr�	get_attrs)	�cls�msg�data_type_namer#�exprr$�udata�key�values	         r,�from_netlinkzNFTSet.from_netlinkGs��-�1��L�L�,�-�-��L�L�,�-�-�
�
��
���|�|�O�,�,���	��>�>�"2�3�3�D��
�	�T�)�)��������0�1�1���	�#�
�
�
��U��3�3�3�#�G��E�4��s��,�,�/�0�0����o�.�.�#��L�L�!3�4�4���

�
�
�	
r.c�P���di�fd�|���D����S)Nc�.��i|]\}}|�jv�||��S��r'��.0r rNrHs   �r,�
<dictcomp>z$NFTSet.from_dict.<locals>.<dictcomp>i�6�������D�%��3�=�(�(��e�(�(�(r.rR��items�rH�ds` r,�	from_dictzNFTSet.from_dictf�O����s�
�
�����#$�7�7�9�9����
�
�	
r.c�*���fd��jD��S)Nc�2��i|]}|t�|����SrR��getattr�rUr r)s  �r,rVz"NFTSet.as_dict.<locals>.<dictcomp>q�%���E�E�E�d��g�d�D�)�)�E�E�Er.rS�r)s`r,�as_dictzNFTSet.as_dictp����E�E�E�E�d�n�E�E�E�Er.c�D�t|�����S�N��strrerds r,�__repr__zNFTSet.__repr__s����4�<�<�>�>�"�"�"r.N)�__name__�
__module__�__qualname__r'r-rD�classmethodrOr\rerkrRr.r,rr s�������N�I�.�.�.����4�
�
��[�
�<�
�
��[�
�F�F�F�#�#�#�#�#r.rc�V�eZdZdZd�Zed���Zd�Zed���Zd�Z	d�Z
dS)	�
NFTSetElem)rNr"�
expiration�
counter_bytes�counter_packetsr$c��||_|jD]5}||vrt||||���|dkrt||d���6dS)NrN)rNr'r()r)rNr*r s    r,r-zNFTSetElem.__init__�sb����
��N�	*�	*�D��v�~�~���d�F�4�L�1�1�1�1�������d�D�)�)�)��		*�	*r.c��|�d���d��}|�>||_dt|j��z|_|���|j}|�d��|�d��d�}|�d��}|rl|�d��d	krS|�d
��}|�|�d��|�d��d
���|�d��}|r|D]\}}|dkr||d<�|dd|i|��S)N�NFTA_SET_ELEM_KEY�NFTA_DATA_VALUE��NFTA_SET_ELEM_EXPIRATION�NFTA_SET_ELEM_TIMEOUT)rsr"�NFTA_SET_ELEM_EXPRr7r#�NFTA_EXPR_DATA�NFTA_COUNTER_BYTES�NFTA_COUNTER_PACKETS)rtru�NFTA_SET_ELEM_USERDATA�NFTNL_UDATA_SET_ELEM_COMMENTr$rNrR)rF�data�len�length�decoderN�update)	rHrI�modifierrN�kwarg�	elem_exprrL�	type_namer�s	         r,rOzNFTSetElem.from_netlink�s������0�1�1�:�:�;L�M�M����!�H�M��#�h�m�"4�"4�4�H�O��O�O�����N�E��,�,�'A�B�B��|�|�$;�<�<�
�
��
�L�L�!5�6�6�	��	��!�!�"2�3�3�y�@�@�%�.�.�/?�@�@�	����)2�);�);�0�*�*�,5�+=�+=�2�,�,�	��	�	�	����5�6�6���	,�#(�
,�
,��	�4�� >�>�>�'+�E�)�$���s�(�(��(�%�(�(�(r.c�Z�|�)|j|_|���|d}n|j}ddd|fgigg}|j�|�d|jg��|j�|�d|jg��|j�|�dd|jfgg��d|iS)	NrNrxr6ryr|r{r�r�)rN�encoder"�appendrsr$)r)r�rNr6s    r,rDzNFTSetElem.as_netlink�s�����!�Z�H�N��O�O�����W�%�E�E��J�E�!�7�.?��-G�,H�"I�J�
���<�#��L�L�1�4�<�@�A�A�A��?�&��L�L�4�d�o�F�G�G�G��<�#��L�L�,�4�d�l�C�D��
�
�
����r.c�P���di�fd�|���D����S)Nc�.��i|]\}}|�jv�||��SrRrSrTs   �r,rVz(NFTSetElem.from_dict.<locals>.<dictcomp>�rWr.rRrXrZs` r,r\zNFTSetElem.from_dict�r]r.c�*���fd��jD��S)Nc�2��i|]}|t�|����SrRr`rbs  �r,rVz&NFTSetElem.as_dict.<locals>.<dictcomp>�rcr.rSrds`r,rezNFTSetElem.as_dict�rfr.c�D�t|�����Srhrirds r,rkzNFTSetElem.__repr__�rlr.N)rmrnror'r-rprOrDr\rerkrRr.r,rrrrws��������I�*�*�*��#)�#)��[�#)�J � � �8�
�
��[�
�F�F�F�#�#�#�#�#r.rrc�D�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
S)�NFTablesc�P�|�t��t��Srh)�request_getrrrds r,�
get_tableszNFTables.get_tables�������	���-=�>�>�>r.c�P�|�t��t��Srh)r�rrrds r,�
get_chainszNFTables.get_chains�r�r.c�P�|�t��t��Srh)r�rr
rds r,�	get_ruleszNFTables.get_rules�s�����	���_�=�=�=r.c�P�|�t��t��Srh)r�rrrds r,�get_setszNFTables.get_sets�s�����	���^�<�<�<r.c�r�ttttd�}|�t|||��S)zG
        Example::

            nft.table('add', name='test0')
        �r@�create�delr?)rrr�_commandr)r)�cmdr��commandss    r,rzNFTables.table�s6��$�&�#�#�	
�
���}�}�]�H�c�5�A�A�Ar.c��ttttd�}dddddd�}d|vr-d	d
||dgd|�dd��ggi|d<d
|vrd|d
<|�t
|||��S)a;
        Example::

            #
            # default policy 'drop' for input
            #
            nft.chain('add',
                      table='test0',
                      name='test_chain0',
                      hook='input',
                      type='filter',
                      policy=0)
        r�rr;��rz)�
prerouting�input�forward�output�postrouting�hookr6�NFTA_HOOK_HOOKNUM�NFTA_HOOK_PRIORITY�priority�type�filter)rrr�popr�r)r)r�r�r��hookss     r,�chainzNFTables.chains���$�&�#�#�	
�
�������
�
���U�?�?��(�%��f�
�*>�?�)�5�9�9�Z��+C�+C�D���E�&�M�����$�E�&�M��}�}�]�H�c�5�A�A�Ar.c���ttttttd�}d|vr'g}|dD]}|�|���||d<|�t
|||��S)a�
        Example::

            from pyroute2.nftables.expressions import ipv4addr, verdict
            #
            # allow all traffic from 192.168.0.0/24
            #
            nft.rule('add',
                     table='test0',
                     chain='test_chain0',
                     expressions=(ipv4addr(src='192.168.0.0/24'),
                                  verdict(code=1)))
        )r@r��insert�replacer�r?�expressions)rrr
�extendr�r)r)r�r�r�r��exps      r,�rulez
NFTables.rule(s���#�%�%�&�"�"�

�
���E�!�!��K��]�+�
(�
(���"�"�3�'�'�'�'�#.�E�-� ��}�}�\�8�S�%�@�@�@r.c��tttd�}d|vr|�d��}nt	di|��}|���}|�t|||��}|dkrt�|��S|S)a�
        Example::
            nft.sets("add", table="filter", name="test0", key_type="ipv4_addr",
                     timeout=10000, counter=True,
                     comment="my comment max 252 bytes")
            nft.sets("get", table="filter", name="test0")
            nft.sets("del", table="filter", name="test0")
            my_set = nft.sets("add", set=NFTSet(table="filter", name="test1",
                              key_type="ipv4_addr")
            nft.sets("del", set=my_set)
        �r@r?r�r>r?rR)	rrr	r�rrDr�rrO)r)r�r�r��nft_setrIs      r,�setsz
NFTables.setsFs���"�!�!�
�
���E�>�>��i�i��&�&�G�G��o�o�u�o�o�G��"�"�$�$���m�m�K��3��>�>���%�<�<��&�&�s�+�+�+��r.c��tttd�}t|dt��r*|�d��}|j|d<|j|d<n$|�d|d|d���}tj
|j��}|r|\}}}|��}d|_nd}|dkr�t��}d|dgd|dgg|d	<|�|t��d
}t��}	|�d��D]0}
|	�t$�|
|�����1|	Sg}	|�d��D]}
t|
t(��rt$�|
��}
n%t|
t$��st%|
�
��}
|	�|
�|������|	|d<|�t|||��S)a�
        Example::
            nft.set_elems("add", table="filter", set="test0",
                          elements={"10.2.3.4", "10.4.3.2"})
            nft.set_elems("add", set=NFTSet(table="filter", name="test0"),
                          elements=[{"value": "10.2.3.4", "timeout": 10000}])
            nft.set_elems("add", table="filter", set="test0",
                          elements=[NFTSetElem(value="10.2.3.4",
                                               timeout=10000,
                                               comment="hello world")])
            nft.set_elems("get", table="filter", set="test0")
            nft.set_elems("del", table="filter", set="test0",
                          elements=["10.2.3.4"])
        r�r>rr?r&N�NFTA_SET_ELEM_LIST_TABLE�NFTA_SET_ELEM_LIST_SETr6r�NFTA_SET_ELEM_LIST_ELEMENTS�elements)rN)rrr
�
isinstancerr�rr r�rr?r!�headerrr�r>rFr@rrrO�dictr\r�rDr�)r)r�r�r�r��foundrCr�rIr��elems           r,�	set_elemszNFTables.set_elemsbs�� &�%�%�
�
��
�e�E�l�F�+�+�	P��i�i��&�&�G�$�]�E�'�N�"�<�E�%�L�L��i�i��U�7�^�%��,�i�O�O�G�&�*�7�+;�<�<���	�"�N�A�q�(��x�z�z�H�"�H�O�O��H��%�<�<�'�)�)�C�+�U�7�^�<�)�5��<�8��C��L��"�"�3�(:�;�;�A�>�C��u�u�H����%B�C�C�
F�
F�����Z�4�4�T�8�D�D�E�E�E�E��O����I�I�j�)�)�	7�	7�D��$��%�%�
.�!�+�+�D�1�1�����j�1�1�
.�!��-�-�-���O�O�D�O�O�H�5�5�6�6�6�6�$��j���}�}�2�H�c�5�I�I�Ir.N)rmrnror�r�r�r�rr�r�r�r�rRr.r,r�r��s�������
?�?�?�?�?�?�>�>�>�=�=�=�B�B�B�%B�%B�%B�NA�A�A�<���87J�7J�7J�7J�7Jr.r�N)�__doc__�pyroute2.netlink.nfnetlinkr�$pyroute2.netlink.nfnetlink.nftsocketrrrrr	r
rrr
rrrrrrrrrrrrrrrrrr�rRr.r,�<module>r�s�����1�0�0�0�0�0���������������������������������������������������6T#�T#�T#�T#�T#�T#�T#�T#�nb#�b#�b#�b#�b#�b#�b#�b#�J}J�}J�}J�}J�}J�y�}J�}J�}J�}J�}Jr.