a >h9@srddlmZmZmZmZmZmZddlmZddl m Z GdddeZ Gddde eZ Gdd d e eeZ d S) )Plugin RedHatPlugin UbuntuPlugin DebianPlugin SoSPredicate PluginOpt) UbuntuPolicy) DebianPolicyc seZdZdZdZdZdZedddeded d ed d ed de dd eddddeddddgZ dZ gdZ dZ fddZddZddZddZZS) Networkingz,Network and networking devices configurationZ networking)networkZhardwaresystemzwww.example.com tracerouteFzcollect a traceroute to )defaultdescnamespace-patternzFSpecific namespace names or patterns to collect, whitespace delimited.)rZval_typer namespacesNz0Number of namespaces to collect, 0 for unlimitedethtool-namespacesTz;Toggle if ethtool commands should be run for each namespace eepromdumpz*Toggle collection of 'ethtool -e' for NICsz-W)tcp_diagudp_diag inet_diag unix_diag netlink_diagaf_packet_diagxsk_diagZ acdgiklmPSTcst|ddd|gd|gd|jdddd|jd d d d gd|d |jd |jddd|dddd |jddddddddddddd d!d"d#d$d%d&g|d'r|gd(|d)}|d*d+kr|d, }|D]|d-d.d/d0gg}|d1}|d*d+kr|d, D]$}| d2rX| | d3qX|fd4d5|Dqd6}t |d7gd8}|j||d9d:||dS);NZbondhosts)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/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/services)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 addrip_addr) root_symlinktagszip route show table allZip_routeZiproute_show_table_allZ plotnetcfgznetstat  -neopanetstat)rz nstat -zas netstat -sz netstat -s -6 -agnznetworkctl status -azip -6 route show table allzip -d route show cachezip -d -6 route show cachezip -4 rule listzip -6 rule listz ip vrf show ip -s -d link ip -d addressz ifenslave -azip mroute showz ip maddr showip -s -s neigh showzip neigh show nud noarpzbiosdevname -dztc -s qdisc showznmstatectl showz nmstatectl show --running-configz/sys/class/devlink)zdevlink dev param showzdevlink dev infozdevlink port showzdevlink sb showzdevlink sb pool showzdevlink sb port pool showzdevlink sb tc bind showzdevlink -s -v trap showz devlink devstatusroutputzdevlink dev eswitch show zdevlink sb occupancy snapshot zdevlink sb occupancy show zdevlink -v resource show devlink dpipe table show namecsg|]}dd|qS)r*z name ).0ZdnameZdevlinkr-A/usr/lib/python3.9/site-packages/sos/report/plugins/networking.py sz$Networking.setup..zip -s macsec showZmacseckmodsTpredZchanges)supersetupZ add_file_tags add_copy_specZadd_forbidden_pathadd_cmd_outputns_wideZ path_isdirZcollect_cmd_output splitlines startswithappendsplitrcollect_ss_ip_ethtool_infocollect_bridge_info)selfZdevlinksZ devlinks_listZ dev_tablesZdpipeZtablelnZip_macsec_show_cmdZ macsec_pred __class__r/r0r71s          zNetworking.setupc CsF|jD] }|d|dd|iq|dddddd d d d S) z% Command tags for ip/ethtool/netstat ethtool -z .*Zethool_ZethtoolrZ ip_neigh_showZ ip_s_linkr"Z netstat_agnZ netstat_s)zethtool [^-].*r&r'r%znetstat.*-neopaz netstat.*-agnr#N)ethtool_shortoptsZ add_cmd_tags)rAoptr-r-r0add_command_tagss zNetworking.add_command_tagscCs|gddS)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)r9rAr-r-r0r@szNetworking.collect_bridge_infocCsd}t||jddid}|j||dd|ddd |jD}|jd d |Dd d |jgd d d |drd}|d|j|d d |dr|jd|jdd|dd}||d|d}|rddd}ddd}|j |t||ddrt|dgdnd } |j |t||ddrBt|dgdnd } |D]4} |j d!| } d"| } || d#}|j|d$|d%|d&|d'|d(|d)|d*|d+|j d,|d-|d+|j d.|d/g d0| d1|j|d2g| | d0d3|j|d4g| | d0d3|d}|j||| d5|d6rJ|j|d7|d8|d9|d:|d;g| d d0| d<qJ| d S)=z( Collect ss, ip and ethtool cmd outputs z ss -peaonmir3all)r3requiredTr4zss -scSsg|]}d|qS)rDr-)r.rFr-r-r0r1z9Networking.collect_ss_ip_ethtool_info..cSsg|] }|dqS)z %(dev)sr-)r.Z_cmdr-r-r0r1sZethernet)devices)zethtool %(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 operationr z/bin/traceroute -n d)priorityzip netnszip netns exec rrz iptables -VZ nf_tables)cmdr)z ip6tables -V)Z cmd_outputs)r5r2NZnamespaced_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)rNsubdirz iptables-save)r5rRrNzip6tables-save)r5rRrz ethtool %(dev)sz ethtool -i %(dev)sz ethtool -k %(dev)sz ethtool -S %(dev)sz ethtool -m %(dev)s)rLrNrR) rss_kmodsr9rEZadd_device_cmdZ get_optionZ _log_warn trace_hostZget_network_namespacesZtest_predicaterLr:rG)rAZss_cmdZss_predZ_ecmdsrOZ cmd_prefixrZcoutZco6Ziptables_with_nftZip6tables_with_nft namespaceZ_devsZ_subdirZ ns_cmd_prefixr-r-r0r?s                   z%Networking.collect_ss_ip_ethtool_info)__name__ __module__ __qualname__Z short_descZ plugin_nameZprofilesrTrstrintZ option_listr:rSrEr7rGr@r? __classcell__r-r-rBr0r s6 w r cs(eZdZdZfddZddZZS)RedHatNetworkingzrhn.redhat.comcsNz,|jjd}t|dddkr*d|_Wnty>Yn0tdS)Nz net-toolsversionrz-T)policyZpackage_managerZ pkg_by_namerZr: Exceptionr6r7)rAZ netstat_pkgrBr-r0r74s  zRedHatNetworking.setupcCs|ddddS)Nz /etc/nmstatez3(\s+(mka-cak|private-key-password|psk|password):).* \1 ******Zdo_path_regex_subrHr-r-r0postprocAs zRedHatNetworking.postprocrVrWrXrTr7rcr[r-r-rBr0r\1s r\cs(eZdZdZfddZddZZS)UbuntuNetworkingzarchive.ubuntu.comcsgd}t|jtr0|jdkr0|dg|_n&t|jtrV|jdkrV|dg|_t|gd| gddS)N)rrZ mptcp_diagrZraw_diagrrrg ףp= 6@r Z vsock_diag)z/etc/netplan/*.yamlz/etc/network/interfacesz/etc/network/interfaces.drz/etc/resolvconfz/lib/netplan/*.yamlz/run/netplan/*.yamlz/run/systemd/network) /etc/netplanz /lib/netplanz /run/netplan) isinstancer_rZ dist_versionrSr r6r7r8Zadd_dir_listing)rAZcommon_ss_kmodsrBr-r0r7Ms       zUbuntuNetworking.setupcCs|ddddS)Nrgz(\s+password:).*rarbrHr-r-r0rcos zUbuntuNetworking.postprocrdr-r-rBr0reJs "reN)Zsos.report.pluginsrrrrrrZsos.policies.distros.ubunturZsos.policies.distros.debianr r r\rer-r-r-r0 s   $