
    ~ gq                     8    S SK r S SKJrJrJr   " S S\\5      rg)    N)PluginIndependentPlugin	PluginOptc                   J    \ rS rSrSrSrSrSr\" SS\	SS	9/r
S
 rS rS rSrg)Ebpf   z	eBPF toolebpf)systemkernelnetwork)bpftool
namespacesNz0Number of namespaces to collect, 0 for unlimited)defaultval_typedescc                     / n [         R                  " U5      n[	        U5       H!  u  pVSU;   d  M  UR                  US   5        M#     U$ ! [         a   nU R                  SU 35        Us SnA$ SnAff = f)z Collect the list of program IDs z"Couldn't parse bpftool prog list: Nidjsonloads	Exception	_log_info	enumerateappend)self	prog_jsonout	prog_dataerr_items          9/usr/lib/python3/dist-packages/sos/report/plugins/ebpf.pyget_bpftool_prog_idsEbpf.get_bpftool_prog_ids   sv    	

9-I !+GAt|

4:& , 
  	NN?uEFJ	   A 
A6A1+A61A6c                     / n [         R                  " U5      n[	        U5       H!  u  pVSU;   d  M  UR                  US   5        M#     U$ ! [         a   nU R                  SU 35        Us SnA$ SnAff = f)zCollect the list of mapIDs z"Could not parse bpftool map list: Nr   r   )r   map_jsonr   map_datar   r    r!   s          r"   get_bpftool_map_idsEbpf.get_bpftool_map_ids&   sv    	zz(+H !*GAt|

4:& + 
  	NN?uEFJ	r%   c                    U R                  S5      nU R                  US   5       H#  nS H  nU R                  SU SU 35        M     M%     U R                  S5      nU R                  US   5       H  nU R                  SU 35        M     U R                  / SQ5        S	nU R	                  S
5      nU R                  US9 H  nXh-   S-   n	U R                  U	S-   5        M      g )Nzbpftool -j prog listoutput)xlatedjitedzbpftool prog dump z id zbpftool -j map listzbpftool map dump id )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_prefixs
             r"   setup
Ebpf.setup3   s    ''(>?00xAG.##&8	'.i%1 2 / B
 &&'<=..tH~>F"6vh ?@ ? 	 
 	 &
|,44D4AI&2S8M0B BC B     )__name__
__module____qualname____firstlineno__
short_descplugin_nameprofilescommandsr   intoption_listr#   r)   r?   __static_attributes__rB   rA   r"   r   r      sA    JK.HH 	,sI	KK
DrA   r   )r   sos.report.pluginsr   r   r   r   rB   rA   r"   <module>rO      s#     C CED6$ EDrA   