3 YdF@sHdgZddlZddlTddlZejjZGdddZddZ ie _ dS)ethcardN)*c@s~eZdZddgddgddgddgdd gd d Zd Zd dZddZddZddZddZ ddZ ddZ ddZ ddZ dS) Nettool rii?) dii i'autoFcCsb||_|jtjd||j|j|j|jftjd||j|j ftjd||j |j fdS)Nz1%s: speed %s, full duplex %s, autoneg %s, link %sz"%s: supports: autoneg %s, modes %sz$%s: advertises: autoneg %s, modes %s) _interfaceupdatelogdebugspeed full_duplexautoneglinksupported_autonegsupported_modesadvertised_autonegadvertised_modes)self interfacer/usr/lib/python3.6/nettool.py__init__s  zNettool.__init__cCs4d|_d|_d|_d|_g|_d|_g|_d|_dS)NrF)rrrrrrrr)rrrr _clean_status"szNettool._clean_statuscCs8d}x.|D]&}||j|d|dr(dnd7}q W|S)Nrr)_advertise_values)rZmodesmodemrrr_calculate_mode.s &zNettool._calculate_modecCs<|j|krdS|jsdSdtdd|jd|r.dndgdd kS) NTFrethtoolz-sronZoff) close_fds)rrcallr)renablerrr_set_autonegotiation5s  zNettool._set_autonegotiationcCs.|jdsdSdtdd|jdd|gddkS) NTFrr%z-sZ advertisez0x%03x)r')r*r(r)rvaluerrr_set_advertise>s zNettool._set_advertisecCs<d}x"|jD]}|d|kr |d}q W|dkr4|SdSdS)Nri)r)rmaxr"rrr get_max_speedDs  zNettool.get_max_speedcCs6|js|j rdS|j|jdr.|jdSdSdS)NFrT) _disabledrr,r!r)rrrr set_max_speedNs zNettool.set_max_speedcCs|js|j rdSd}xD|jD]:}|dkr,q||kr||j|d7}||j|d7}qW||j|j@}tjd|j||f|j|r|j dSdSdS)NFrrrz)%s: set_speed(%d) - effective_mode 0x%03xT) r/rr!r$rrrrr,r)rrr"ZamZeffective_moderrr set_speedYs  zNettool.set_speedc Cs"|jr dStd|jgttddd}tddg|jtddd}|jd}|jd}|d krtjd |jtjd |j|j d d f|j d|_dS|j t j d}t j d}d}xb|j d D]R}|jdrj|dd)} | dkrd}nt| dkrd}nd| dkrd}nT| dkr"d}nD| dkr2d}n4| dkrBd}n$| dkrRd}n| d krbd!}nd}~ q|dkry|j|jd|_Wnd"|_YnXd}q|dkr|d#k|_d}q|dkr|d$kp|d%k|_d}q|dkr|d$k|_d}q|dkrnyLx@|j D]4} |j| jdd&\} } |jjt| | d#kfqW~ ~ ~ Wn|jjd*YnXq|dkr|d'k|_d}q|dkryV|d(krx@|j D]4} |j| jdd&\} } |jjt| | d#kfqW~ ~ ~ Wn|jjd+YnXq|d!kr|d'k|_d}qWdS),Nr%T)stdoutstderrr'universal_newlinesZsedzs/^\s*//;s/:\s*/:\n/g)stdinr2r4r'rrz*%s: some errors were reported by 'ethtool'z%s: %s z\nz(\d+)z(\d+)baseT/(Half|Full)wait:ZSpeedrZDuplexZduplexzAuto-negotiationrz Link detectedrzSupported link modesrzSupports auto-negotiationrzAdvertised link modesrzAdvertised auto-negotiationrZFullyesr&rZYesz Not reported)r:T)r:T)r/PopenrPIPEr2Z communicaterZwarningrreplacer recompilesplitendswithmatchgrouprrrrrappendintrrr) rZ p_ethtoolZp_filteroutputerrorsZre_speedZre_modestatelineZsectionr#sdrrrrns                             zNettool.updateN)__name__ __module__ __qualname__r!r/rr r$r*r,r.r0r1rrrrrr s      rcCs"|tjkrt|tj|<tj|S)N)rlistr)rrrrrs ) __all__Z tuned.logsZtuned subprocessr@ZlogsgetrrrrQrrrrs H