
    -_g6                     l    d dl mZmZmZmZmZmZ  G d de      Z G d dee      Z G d deee      Z	y)	    )PluginRedHatPluginUbuntuPluginDebianPluginSoSPredicate	PluginOptc            	            e Zd ZdZdZdZdZ eddde        ed	d
ed       edde	d       eddd       eddd      gZ
dZg dZdZ fdZd Zd Zd Z xZS )
Networkingz,Network and networking devices configuration
networking)networkhardwaresystemzwww.example.com
tracerouteFzcollect a traceroute to )defaultdescnamespace-pattern zFSpecific namespace names or patterns to collect, whitespace delimited.)r   val_typer   
namespacesNz0Number of namespaces to collect, 0 for unlimitedethtool-namespacesTz;Toggle if ethtool commands should be run for each namespace
eepromdumpz*Toggle collection of 'ethtool -e' for NICsz-W)tcp_diagudp_diag	inet_diag	unix_diagnetlink_diagaf_packet_diagxsk_diagacdgiklmPSTc                 X   t         
|           | j                  ddd       | j                  g d       | j	                  g d       | j                  ddd       | j                  d	d
d
dg       | j                  d       | j                  d| j                   dd       | j                  ddd| j                   dddddddddddddd d!d"d#d$d%g       | j                  d&      r| j                  g d'       | j                  d(      }|d)   d*k(  r|d+   j                         }|D ]  }| j                  d,| d-| d.| d/| g       g }| j                  d0|       }|d)   d*k(  sC|d+   j                         D ]6  }|j                  d1      s|j                  |j                         d2          8 | j                  |D cg c]
  }d0| d3|  c}        d4}t        | d5g6      }	| j                  ||	d78       | j                          | j                          y c c}w )9Nbondhosts)z/proc/net/bonding/bond.*z
/etc/hosts)z/etc/dnsmasq*z
/etc/host*z/etc/inetd.confz/etc/iproute2z/etc/network*z/etc/nsswitch.conf/etc/resolv.confz/etc/xinetd.confz/etc/xinetd.dz/etc/yp.confz
/proc/net/z!/sys/class/net/*/device/numa_nodez/sys/class/net/*/flagsz/sys/class/net/*/statistics/z/etc/nmstate/)z/proc/net/rpc/use-gss-proxyz/proc/net/rpc/*/channelz/proc/net/rpc/*/flushz/proc/net/cdpz/sys/net/cdpz/proc/net/eiconz
ip -o addrip_addr)root_symlinktagszip route show table allip_routeiproute_show_table_all
plotnetcfgznetstat  -neopanetstat)r%   z
nstat -zas
netstat -s -agnznetworkctl status -azip -6 route show table allzip -d route show cachezip -d -6 route show cachezip -4 rule listzip -6 rule listzip vrf showip -s -d linkip -d addresszifenslave -azip mroute showzip maddr showip -s -s neigh showzip neigh show nud noarpzbiosdevname -dztc -s qdisc showznmstatectl showz nmstatectl show --running-configz/sys/class/devlink)zdevlink dev param showzdevlink dev infozdevlink port showzdevlink sb showzdevlink sb pool showzdevlink sb port pool showzdevlink sb tc bind showzdevlink -s -v trap showzdevlink devstatusr   outputzdevlink dev eswitch show zdevlink sb occupancy snapshot zdevlink sb occupancy show zdevlink -v resource show zdevlink dpipe table show name   z name zip -s macsec showmacseckmodsTpredchanges)supersetupadd_file_tagsadd_copy_specadd_forbidden_pathadd_cmd_outputns_wide
path_isdircollect_cmd_output
splitlines
startswithappendsplitr   collect_ss_ip_ethtool_infocollect_bridge_info)selfdevlinksdevlinks_listdevlink
dev_tablesdpipetablelndnameip_macsec_show_cmdmacsec_pred	__class__s             ?/usr/lib/python3/dist-packages/sos/report/plugins/networking.pyr<   zNetworking.setup/   s   (.!
 	
 	 
 	$ 	 	!
 		 	Ly!* 	 	,5J",.F!G 	 	IL)ht||nG<)2 	 	4 	t||nE*"($'!%.+
 	0 ??/0 	! 	 ..}=H!Q& ( 2 = = ?, G''3G9=8	B4WI>3G9=	)  "$J 333G9=E X!+',X'A'A'C FG&11&9 * 1 1'--/!2D EF ++)3- % 8yugN- . 1"4z:.[$O'')  "-s   
H'
c           
          | j                   D ]  }| j                  d| dd| i        | j                  dddddd	d
d       y)z% Command tags for ip/ethtool/netstat 	ethtool -z .*ethool_ethtoolr$   ip_neigh_show	ip_s_linkr+   netstat_agn	netstat_s)zethtool [^-].*r/   r0   r.   znetstat.*-neopaznetstat.*-agnr,   N)ethtool_shortoptsadd_cmd_tags)rJ   opts     rU   add_command_tagszNetworking.add_command_tags   sh    )) 	CC5$uo 	
 	'&#2((*%
 	    c                 *    | j                  g d       y)zf Collect information about bridges (some data already collected via
        "ip .." commands)
        )zbridge -s -s -d link showzbridge -s -s -d -t fdb showzbridge -s -s -d -t mdb showzbridge -d vlan showN)r@   rJ   s    rU   rI   zNetworking.collect_bridge_info   s     	 
 	rb   c                    d}t        | | j                  ddi      }| j                  ||d       | j                  D cg c]  }d| 	 }}| j	                  |D cg c]  }|dz   	 c}d	
       | j	                  g dd	
       | j                  d      r&d}| j                  d       | j	                  |d	
       | j                  d      r | j                  d| j                   d       | j                  d       d}| j                  | j                  d      | j                  d            }|rqddd}	ddd}
| j                  | t        | |	            rt        | dg      nd}| j                  | t        | |
            rt        | dg      nd}|D ]  }| j                  d   |   }d | }||z   d!z   }| j                  | d"| d#| d$| d%| d&| d'| d(| d)| j                   d*| d+| d)| j                   d,| d-gd.|/       | j                  |d0z   g||d.1       | j                  |d2z   g||d.1       |dz   }| j                  |||3       | j                  d4      s| j	                  | d5| d6| d7| d8| d9g|d	   d.|:        | j                          yc c}w c c}w );z( Collect ss, ip and ethtool cmd outputs zss -peaonmir7   all)r7   requiredTr8   rW   z %(dev)sethernet)devices)zethtool %(dev)sz ethtool --phy-statistics %(dev)sz!ethtool --show-priv-flags %(dev)szethtool --show-eee %(dev)sztc -s filter show dev %(dev)sz%tc -s filter show dev %(dev)s ingressr   zethtool -e %(dev)szwWARNING: collecting an eeprom dump is known to cause certain NIC drivers (e.g. bnx2x/tg3) to interrupt device operationr   z/bin/traceroute -n d   )priorityzip netnszip netns exec r   r   ziptables -V	nf_tables)cmdr2   zip6tables -V)cmd_outputs)r9   r6   Nnamespaced_networkznamespaces/ z ip -d address showz ip route show table allz ip -s -s neigh showz ip -4 rule listz ip -6 rule listz ip vrf showz
 sysctl -az	 netstat r*   z netstat -sr-   z nstat -zas2   )rk   subdirziptables-save)r9   rr   rk   zip6tables-save)r9   rr   r   z ethtool %(dev)sz ethtool -i %(dev)sz ethtool -k %(dev)sz ethtool -S %(dev)sz ethtool -m %(dev)s)ri   rk   rr   )r   ss_kmodsr@   r^   add_device_cmd
get_option	_log_warn
trace_hostget_network_namespacestest_predicateri   rA   ra   )rJ   ss_cmdss_predr`   _ecmds_cmdrm   
cmd_prefixr   coutco6iptables_with_nftip6tables_with_nft	namespace_devs_subdirns_cmd_prefixs                    rU   rH   z%Networking.collect_ss_ip_ethtool_info   s   t4==)0%(8:F$? 04/E/EFIcU#FF*0
"&D:
 	 	 	 
  	 	 ??<(&CNN 8 9 Z8??<("5doo5F G),   .
 	J'%
00 34-/
  )K@D(K@C$($7$7&24T&J %8 %L ".d;-!H '+ 
 &*%8%8'3Dc'J &9 &L #/tK="I (, 
 ( +O	%9:9E'	{3 *Y 6 <##$o%89$o%=>$o%9:$o%56$o%56$o\2$oZ0$oYt||nGD$o[1$oYt||nEB$o[1% w $ 0 ##]_%D$E):+2-/ $ 1 ##]5E%E$F);+2-/ $ 1
 '6 ##F#I ??#78 ''(/)9:(/)<=(/)<=(/)<=(/)<=)  %Z02g ( OK+OZ 	} G
s   J6J;)__name__
__module____qualname__
short_descplugin_nameprofilesrw   r   strintoption_listrA   rs   r^   r<   ra   rI   rH   __classcell__rT   s   @rU   r
   r
      s    ?JK0H"J 	,1*>	@%rC0	2 	,sI	K&$	& 	,C	EK  G>H
 &q#f"	g rb   r
   c                   (     e Zd ZdZ fdZd Z xZS )RedHatNetworkingzrhn.redhat.comc                     	 | j                   j                  j                  d      }t        |d   d         dk  rd| _        t        |           y # t
        $ r Y w xY w)Nz	net-toolsversionr      z-T)policypackage_managerpkg_by_namer   rA   	Exceptionr;   r<   )rJ   netstat_pkgrT   s     rU   r<   zRedHatNetworking.setup+  s_    	++55AA+NK;y)!,-1#
 		  		s   A A 	AAc                 *    | j                  ddd       y )Nz/etc/nmstatez3(\s+(mka-cak|private-key-password|psk|password):).*	\1 ******do_path_regex_subrd   s    rU   postproczRedHatNetworking.postproc8  s    B	
rb   r   r   r   rw   r<   r   r   r   s   @rU   r   r   (  s    !J
rb   r   c                   (     e Zd ZdZ fdZd Z xZS )UbuntuNetworkingzarchive.ubuntu.comc                     g d}| j                   j                         dk\  r|| _        t        |           | j                  g d       y )N)	r   r   r   r   r   r   r   
mptcp_diagraw_diagg
ףp=
6@)z/etc/netplan/*.yamlz/etc/network/interfacesz/etc/network/interfaces.dr#   z/etc/resolvconfz/lib/netplan/*.yamlz/run/netplan/*.yamlz/run/systemd/network)r   dist_versionrs   r;   r<   r>   )rJ   ubuntu_jammy_and_after_ss_kmodsrT   s     rU   r<   zUbuntuNetworking.setupD  sE    +7' ;;##%.;DM 	
 		rb   c                 *    | j                  ddd       y )Nz/etc/netplanz(\s+password:).*r   r   rd   s    rU   r   zUbuntuNetworking.postproc\  s    	
rb   r   r   s   @rU   r   r   A  s    %J0
rb   r   N)
sos.report.pluginsr   r   r   r   r   r   r
   r   r    rb   rU   <module>r      s>   G GX  X v
z< 
2!
z< !
rb   