o
    id                     @   s2   d dl mZmZmZ d dlZG dd deeZdS )    )PluginIndependentPlugin	PluginOptNc                   @   sB   e Zd ZdZdZdZeddeddgZdd	 Z	d
d Z
dd ZdS )Ebpfz	eBPF toolebpf)systemkernelnetwork
namespacesNz0Number of namespaces to collect, 0 for unlimited)defaultval_typedescc              
   C   ~   g }zt |}W n ty$ } z| d|  |W  Y d }~S d }~ww tt|D ]}d|| v r<||| d  q+|S )Nz-Could not parse bpftool prog list as JSON: %sidjsonloads	Exception	_log_inforangelenappend)self	prog_jsonout	prog_dataeitem r   9/usr/lib/python3/dist-packages/sos/report/plugins/ebpf.pyget_bpftool_prog_ids      zEbpf.get_bpftool_prog_idsc              
   C   r   )Nz,Could not parse bpftool map list as JSON: %sr   r   )r   map_jsonr   map_datar   r   r   r   r   get_bpftool_map_ids$   r!   zEbpf.get_bpftool_map_idsc           
      C   s   |  d}| |d D ]}dD ]}| d||f  qq|  d}| |d D ]	}| d|  q)| g d d}| d	}| j|d
D ]}|| d }	| |	d  qGd S )Nzbpftool -j prog listoutput)xlatedjitedzbpftool prog dump %s id %szbpftool -j map listzbpftool map dump id %s)zbpftool prog listzbpftool map listzbpftool cgroup treebpftool net listzbpftool struct_ops dumpzip netns exec r
   )ns_max r(   )collect_cmd_outputr    add_cmd_outputr$   
get_optionget_network_namespaces)
r   progsprog_iddumpcmdmapsmap_id
cmd_prefixnsps	namespacens_cmd_prefixr   r   r   setup0   s"   


z
Ebpf.setup)__name__
__module____qualname__
short_descplugin_nameprofilesr   intoption_listr    r$   r8   r   r   r   r   r      s    r   )sos.report.pluginsr   r   r   r   r   r   r   r   r   <module>   s   