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/__pycache__/conntrack.cpython-37.pyc
B

��f��@sXddlZddlmZmZmZmZmZGdd�de�ZGdd�de�Z	Gdd�de�Z
dS)	�N)�IP_CT_TCP_FLAG_TO_NAME�IPSBIT_TO_NAME�TCP_CONNTRACK_TO_NAME�
NFCTAttrTuple�
NFCTSocketc@s>eZdZdZd
dd�Zdd�Zdd�Zed	d
��Zdd�Z	dS)�NFCTATcpProtoInfo)�state�wscale_orig�wscale_reply�
flags_orig�flags_replyNcCs"||_||_||_||_||_dS)N)rr	r
rr)�selfrr	r
rr�r�C/opt/alt/python37/lib/python3.7/site-packages/pyroute2/conntrack.py�__init__s
zNFCTATcpProtoInfo.__init__cCst�|jd�S)N�UNKNOWN)r�getr)r
rrr�
state_name#szNFCTATcpProtoInfo.state_namecCsH|dkrdSd}x*t��D]\}}||@r|d�|�7}qW|dd�S)N�z{},���)r�items�format)r
�flags�s�bit�namerrr�
flags_name&szNFCTATcpProtoInfo.flags_namecCs>|�d�}|�d�}|�d�\}}|�d�\}}||||d�S)NZCTA_PROTOINFO_TCPZCTA_PROTOINFO_TCP_STATEZ CTA_PROTOINFO_TCP_FLAGS_ORIGINALZCTA_PROTOINFO_TCP_FLAGS_REPLY)rrr)�get_attr)�cls�ndmsgZcta_tcprr�_rrrr�from_netlink/s


zNFCTATcpProtoInfo.from_netlinkcCs"d�|��|�|j�|�|j��S)Nz0TcpInfo(state={}, orig_flags={}, reply_flags={}))rrrrr)r
rrr�__repr__9s
zNFCTATcpProtoInfo.__repr__)NNNN)
�__name__�
__module__�__qualname__�	__slots__rrr�classmethodr!r"rrrrrs

	
rc@s(eZdZdZdd�Zdd�Zdd�ZdS)	�ConntrackEntry)�
tuple_orig�tuple_reply�status�timeout�	protoinfo�mark�id�usec

Cs`t�||�|_t�||�|_||_||_|jjtjkrDt	�|�|_
nd|_
||_||_|	|_
dS)N)rr!r)r*r+r,�proto�socket�IPPROTO_TCPrr-r.r/r0)
r
�familyr)r*Z
cta_statusZcta_timeoutZ
cta_protoinfoZcta_markZcta_idZcta_userrrrMszConntrackEntry.__init__cCs>d}x,t��D] \}}|j|@r|d�|�7}qW|dd�S)Nrz{},r)rrr+r)r
rrrrrr�status_namehs

zConntrackEntry.status_namecCs<d�|j|j|���}|jdk	r0|d�|j�7}|d7}|S)Nz"Entry(orig={}, reply={}, status={}z, protoinfo={}�))rr)r*r5r-)r
rrrrr"os
zConntrackEntry.__repr__N)r#r$r%r&rr5r"rrrrr(As
r(csdeZdZdZd�fdd�	Z�fdd�Z�fdd�Z�fd	d
�Zdd�Z�fd
d�Z	ddd�Z
�ZS)�	Conntrackz(
    High level conntrack functions
    Tcstt|�jfd|i|��dS)N�
nlm_generator)�superr7r)r
r8�kwargs)�	__class__rrr~szConntrack.__init__csNg}xDtt|���D]2}|�d|di�|d�dd�|dD��qW|S)ztReturn current statistics per CPU

        Same result than conntrack -S command but a list of dictionaries
        �cpuZres_idrcss0|](\}}|�d�r|dd���|fVqdS)Z
CTA_STATS_�
N)�
startswith�lower)�.0�k�vrrr�	<genexpr>�sz!Conntrack.stat.<locals>.<genexpr>�attrs)r9r7�stat�append�update)r
�stats�msg)r;rrrE�szConntrack.statcs$xtt|���D]}|�d�SWdS)z�Return current number of conntrack entries

        Same result than /proc/sys/net/netfilter/nf_conntrack_count file
        or conntrack -C command
        ZCTA_STATS_GLOBAL_ENTRIESN)r9r7�countr)r
r)r;rrrJ�szConntrack.countcs$xtt|���D]}|�d�SWdS)zs
        Return the max size of connection tracking table
        /proc/sys/net/netfilter/nf_conntrack_max
        ZCTA_STATS_GLOBAL_MAX_ENTRIESN)r9r7�conntrack_max_sizer)r
r)r;rrrK�szConntrack.conntrack_max_sizecCsFt|t�r|j}nt|t�r"|}nt��x|jd|d�D]}|SWdS)N�del)r))�
isinstancer(r)r�NotImplementedError�entry)r
rOr)rrrr�delete�s

zConntrack.deletecs$xtt|�j|f|�D]}|SWdS)N)r9r7rO)r
�cmdr:�res)r;rrrO�szConntrack.entryN���c
cs�x�|j||||d�D]�}|dk	r8|�|d|�d��s8q|dk	rX|�|d|�d��sXqt|d|�d�|�d�|�d�|�d�|�d�|�d	�|�d
�|�d��	VqWdS)aR
        Dump all entries from conntrack table with filters

        Filters can be only part of a conntrack tuple

        :param NFCTAttrTuple tuple_orig: filter on original tuple
        :param NFCTAttrTuple tuple_reply: filter on reply tuple

        Examples::
            # Filter only on tcp connections
            for entry in ct.dump_entries(tuple_orig=NFCTAttrTuple(
                                             proto=socket.IPPROTO_TCP)):
                print("This entry is tcp: {}".format(entry))

            # Filter only on icmp message to 8.8.8.8
            for entry in ct.dump_entries(tuple_orig=NFCTAttrTuple(
                                             proto=socket.IPPROTO_ICMP,
                                             daddr='8.8.8.8')):
                print("This entry is icmp to 8.8.8.8: {}".format(entry))
        )r.�	mark_maskr)r*NZnfgen_familyZCTA_TUPLE_ORIGZCTA_TUPLE_REPLYZ
CTA_STATUSZCTA_TIMEOUTZ
CTA_PROTOINFOZCTA_MARKZCTA_IDZCTA_USE)�dumpZnla_eqrr()r
r.rTr)r*rrrr�dump_entries�s*zConntrack.dump_entries)T)NrSNN)r#r$r%�__doc__rrErJrKrPrOrV�
__classcell__rr)r;rr7ys	
r7)r2Z%pyroute2.netlink.nfnetlink.nfctsocketrrrrr�objectrr(r7rrrr�<module>s	58