File: //usr/lib/python3.6/site-packages/sos/report/plugins/__pycache__/ebpf.cpython-36.pyc
3
3��d� � @ s2 d dl mZmZmZ d dlZG dd� dee�ZdS )� )�Plugin�IndependentPlugin� PluginOptNc @ sB e Zd ZdZdZdZeddedd �gZd
d� Z dd
� Z
dd� ZdS )�Ebpfz eBPF toolZebpf�system�kernel�network�
namespacesNz0Number of namespaces to collect, 0 for unlimited)�defaultZval_typeZdescc C sz g }yt j|�}W n. tk
r@ } z| jd| � |S d }~X nX x2tt|��D ]"}d|| krP|j|| d � qPW |S )Nz-Could not parse bpftool prog list as JSON: %s�id)�json�loads� Exception� _log_info�range�len�append)�selfZ prog_json�outZ prog_data�e�item� r �/usr/lib/python3.6/ebpf.py�get_bpftool_prog_ids s zEbpf.get_bpftool_prog_idsc C sz g }yt j|�}W n. tk
r@ } z| jd| � |S d }~X nX x2tt|��D ]"}d|| krP|j|| d � qPW |S )Nz,Could not parse bpftool map list as JSON: %sr )r r
r r r r r )r Zmap_jsonr Zmap_datar r r r r �get_bpftool_map_ids$ s zEbpf.get_bpftool_map_idsc
C s� | j d�}x6| j|d �D ]$}xdD ]}| jd||f � q$W qW | j d�}x$| j|d �D ]}| jd| � q\W | jdd d
ddg� d
}| jd�}x.| j|d�D ]}|| d } | j| d � q�W d S )Nzbpftool -j prog list�output�xlated�jitedzbpftool 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� )r r )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&