Current File : //usr/lib/python3.6/site-packages/sos/report/plugins/__pycache__/networking.cpython-36.pyc
3

\��h�9�@srddlmZmZmZmZmZmZddlmZddl	m
Z
Gdd�de�ZGdd�dee�ZGdd	�d	eee�Z
d
S)�)�Plugin�RedHatPlugin�UbuntuPlugin�DebianPlugin�SoSPredicate�	PluginOpt)�UbuntuPolicy)�DebianPolicyc	s�eZdZdZdZd(ZdZeddd	e��d
�edded
d�edde	dd�edddd
�edddd
�gZ
dZdddddddgZdZ
�fd d!�Zd"d#�Zd$d%�Zd&d'�Z�ZS))�
Networkingz,Network and networking devices configurationZ
networking�network�hardware�systemzwww.example.com�
tracerouteFzcollect a traceroute to )�default�descznamespace-pattern�zFSpecific namespace names or patterns to collect, whitespace delimited.)rZval_typer�
namespacesNz0Number of namespaces to collect, 0 for unlimitedzethtool-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_diagZacdgiklmPSTcst�j�|jddd��|jdddddd	d
ddd
ddddddddg�|jddddddg�|jdddd�|jdd d d!gd�|jd"�|jd#|j�d$�d%d&�|jd'd(d)d#|j�d*�d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<g�|jd=��r�|jd>d?d@dAdBdCdDdEg�|jdF�}|dGdHk�r�|dIj	�}x�|D]��|jdJ���dK���dL���dM���g�g}|jdN����}|dGdHk�r4x4|dIj	�D]$}|j
dO��r�|j|j�dP��q�W|j�fdQdR�|D���q4WdS}t
|dTgdU�}|j||dVdW�|j�|j�dS)XNZbondZhosts)z/proc/net/bonding/bond.*z
/etc/hostsz
/etc/dnsmasq*z
/etc/host*z/etc/inetd.confz
/etc/iproute2z
/etc/network*z/etc/nsswitch.confz/etc/resolv.confz
/etc/gai.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/var/lib/lldpad/z
/etc/servicesz/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_symlinkZtagszip route show table allZip_routeZiproute_show_table_allZ
plotnetcfgznetstat z -neopa�netstat)rz
nstat -zasz
netstat -sz
netstat -s -6z -agnznetworkctl status -azip -6 route show table allzip -d route show cachezip -d -6 route show cachezip -4 rule listzip -6 rule listzip vrf showz
ip -s -d linkz
ip -d addresszifenslave -azip mroute showz
ip maddr showzip -s -s neigh showzip neigh show nud noarpzbiosdevname -dztc -s qdisc showznmstatectl showz nmstatectl show --running-configz/sys/class/devlinkzdevlink dev param showzdevlink dev infozdevlink port showzdevlink sb showzdevlink sb pool showzdevlink sb port pool showzdevlink sb tc bind showzdevlink -s -v trap showzdevlink devZstatusr�outputzdevlink dev eswitch show zdevlink sb occupancy snapshot zdevlink sb occupancy show zdevlink -v resource show zdevlink dpipe table show �name�csg|]}d��d|���qS)zdevlink dpipe table show z name �)�.0Zdname)�devlinkr!� /usr/lib/python3.6/networking.py�
<listcomp>�sz$Networking.setup.<locals>.<listcomp>zip -s macsec showZmacsec)�kmodsT)�pred�changes)�super�setupZ
add_file_tags�
add_copy_specZadd_forbidden_path�add_cmd_output�ns_wideZ
path_isdirZcollect_cmd_output�
splitlines�
startswith�append�splitr�collect_ss_ip_ethtool_info�collect_bridge_info)�selfZdevlinksZ
devlinks_listZ
dev_tablesZdpipeZtablelnZip_macsec_show_cmdZmacsec_pred)�	__class__)r#r$r*1s�





zNetworking.setupc	CsJx*|jD] }|jd|�d�d|��i�qW|jdddddd	d
d��dS)
z% Command tags for ip/ethtool/netstat z	ethtool -z .*Zethool_ZethtoolrZ
ip_neigh_showZ	ip_s_linkrZnetstat_agnZ	netstat_s)zethtool [^-].*z
ip -d addresszip -s -s neigh showz
ip -s -d linkznetstat.*-neopaz
netstat.*-agnz
netstat -sN)�ethtool_shortoptsZadd_cmd_tags)r4�optr!r!r$�add_command_tags�szNetworking.add_command_tagscCs|jddddg�dS)zf Collect information about bridges (some data already collected via
        "ip .." commands)
        zbridge -s -s -d link showzbridge -s -s -d -t fdb showzbridge -s -s -d -t mdb showzbridge -d vlan showN)r,)r4r!r!r$r3�s
zNetworking.collect_bridge_infocCs�d}t||jddid�}|j||dd�|jd�dd	�|jD�}|jd
d	�|D�dd�|jd
dddddddgdd�|jd�r�d}|jd�|j|dd�|jd�r�|jd|j��dd�|jd�d}|j|jd�|jd��}|�r�d d!d"�}d#d!d"�}|j	|t||d$�d%��r$t|d!gd&�nd'}	|j	|t||d$�d%��rNt|d!gd&�nd'}
�x>|D�]4}|j
d(|}d)|��}
||d*}|j|�d+�|�d,�|�d-�|�d.�|�d/�|�d0�|�d1�|�d2|j�d3�|�d4�|�d2|j�d5�|�d6�gd7|
d8�|j|d9g|	|
d7d:�|j|d;g|
|
d7d:�|d}|j|||
d<�|jd=��rZ|j|�d>�|�d?�|�d@�|�dA�|�dB�g|dd7|
dC��qZW|j�d'S)Dz( Collect ss, ip and ethtool cmd outputs zss -peaonmir&�all)r&ZrequiredT)r'r(zss -scSsg|]}d|���qS)z	ethtool -r!)r"r7r!r!r$r%�sz9Networking.collect_ss_ip_ethtool_info.<locals>.<listcomp>cSsg|]}|d�qS)z %(dev)sr!)r"Z_cmdr!r!r$r%�sZethernet)�deviceszethtool %(dev)sz ethtool --phy-statistics %(dev)sz!ethtool --show-priv-flags %(dev)szethtool --show-eee %(dev)szethtool --show-fec %(dev)szethtool --show-ntuple %(dev)sztc -s filter show dev %(dev)sz%tc -s filter show dev %(dev)s ingressrzethtool -e %(dev)szwWARNING: collecting an eeprom dump is known to cause certain NIC drivers (e.g. bnx2x/tg3) to interrupt device operationrz/bin/traceroute -n �d)�priorityzip netnszip netns exec znamespace-patternrziptables -VZ	nf_tables)�cmdrzip6tables -V)Zcmd_outputs)r')r&NZnamespaced_networkznamespaces/� 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 z -neopaz netstat -sz -agnz nstat -zas�2)r<�subdirz
iptables-save)r'r@r<zip6tables-save)r'r@zethtool-namespacesz ethtool %(dev)sz ethtool -i %(dev)sz ethtool -k %(dev)sz ethtool -S %(dev)sz ethtool -m %(dev)s)r:r<r@)
r�ss_kmodsr,r6Zadd_device_cmdZ
get_optionZ	_log_warn�
trace_hostZget_network_namespacesZtest_predicater:r-r8)r4Zss_cmdZss_predZ_ecmdsr=Z
cmd_prefixrZcoutZco6Ziptables_with_nftZip6tables_with_nft�	namespaceZ_devsZ_subdirZ
ns_cmd_prefixr!r!r$r2�s�






  



z%Networking.collect_ss_ip_ethtool_info)rrr
)�__name__�
__module__�__qualname__Z
short_descZplugin_nameZprofilesrBr�str�intZoption_listr-rAr6r*r8r3r2�
__classcell__r!r!)r5r$r
s,

wr
cs(eZdZdZ�fdd�Zdd�Z�ZS)�RedHatNetworkingzrhn.redhat.comcsPy,|jjjd�}t|dd�dkr*d|_Wntk
r@YnXt�j�dS)Nz	net-tools�versionr�z-T)�policyZpackage_managerZpkg_by_namerHr-�	Exceptionr)r*)r4Znetstat_pkg)r5r!r$r*4s
zRedHatNetworking.setupcCs|jddd�dS)Nz/etc/nmstatez3(\s+(mka-cak|private-key-password|psk|password):).*z	\1 ******)�do_path_regex_sub)r4r!r!r$�postprocAszRedHatNetworking.postproc)rDrErFrBr*rPrIr!r!)r5r$rJ1s
rJcs(eZdZdZ�fdd�Zdd�Z�ZS)�UbuntuNetworkingzarchive.ubuntu.comc	s�ddddddddg}t|jt�r<|jj�d	kr<|d
g|_n&t|jt�rb|jj�dkrb|dg|_t�j�|jd
dddddddg�|j	dddg�dS)NrrZ
mptcp_diagrZraw_diagrrrg
ףp=
6@r�
Z
vsock_diagz/etc/netplan/*.yamlz/etc/network/interfacesz/etc/network/interfaces.dz/etc/resolv.confz/etc/resolvconfz/lib/netplan/*.yamlz/run/netplan/*.yamlz/run/systemd/networkz/etc/netplanz/lib/netplanz/run/netplan)
�
isinstancerMrZdist_versionrAr	r)r*r+Zadd_dir_listing)r4Zcommon_ss_kmods)r5r!r$r*Ms.
zUbuntuNetworking.setupcCs|jddd�dS)Nz/etc/netplanz(\s+password:).*z	\1 ******)rO)r4r!r!r$rPoszUbuntuNetworking.postproc)rDrErFrBr*rPrIr!r!)r5r$rQJs"rQN)Zsos.report.pluginsrrrrrrZsos.policies.distros.ubunturZsos.policies.distros.debianr	r
rJrQr!r!r!r$�<module>	s $