File: //lib/python3/dist-packages/sos/report/plugins/__pycache__/ebpf.cpython-38.pyc
U
i��d� � @ s2 d dl mZmZmZ d dlZG dd� dee�ZdS )� )�Plugin�IndependentPlugin� PluginOptNc @ sB e Zd ZdZdZdZeddedd�gZdd � Z d
d� Z
dd
� ZdS )�Ebpfz eBPF toolZebpf)�systemZkernelZnetwork�
namespacesNz0Number of namespaces to collect, 0 for unlimited)�defaultZval_typeZdescc
C s� g }zt �|�}W n8 tk
rJ } z| �d| � | W Y �S d }~X Y nX tt|��D ]"}d|| krX|�|| d � qX|S )Nz-Could not parse bpftool prog list as JSON: %s�id��json�loads� ExceptionZ _log_info�range�len�append)�selfZ prog_json�outZ prog_data�e�item� r �9/usr/lib/python3/dist-packages/sos/report/plugins/ebpf.py�get_bpftool_prog_ids s zEbpf.get_bpftool_prog_idsc
C s� g }zt �|�}W n8 tk
rJ } z| �d| � | W Y �S d }~X Y nX tt|��D ]"}d|| krX|�|| d � qX|S )Nz,Could not parse bpftool map list as JSON: %sr r
)r Zmap_jsonr Zmap_datar r r r r �get_bpftool_map_ids$ s zEbpf.get_bpftool_map_idsc
C s� | � d�}| �|d �D ] }dD ]}| �d||f � q q| � d�}| �|d �D ]}| �d| � qR| �ddd d
dg� d}| �d
�}| j|d�D ]}|| d } | �| d
� q�d S )Nzbpftool -j prog list�output)ZxlatedZjitedzbpftool prog dump %s id %szbpftool -j map listzbpftool map dump id %szbpftool prog listzbpftool map listzbpftool cgroup treezbpftool net listzbpftool struct_ops dumpzip netns exec r )Zns_max� )Zcollect_cmd_outputr Zadd_cmd_outputr Z
get_optionZget_network_namespaces)
r ZprogsZprog_idZdumpcmd�mapsZmap_idZ
cmd_prefixZnsps� namespaceZ
ns_cmd_prefixr r r �setup0 s*
�
�
z
Ebpf.setup)�__name__�
__module__�__qualname__Z
short_descZplugin_nameZprofilesr �intZoption_listr r r r r r r r
s ��r )Zsos.report.pluginsr r r r r r r r r �<module> s