\c@scdgZddlZddlTddlZejjZdddYZdZ ie _ dS(tethcardiN(t*tNettoolcBseZiddgd6ddgd6ddgd6d d gd 6d d gd 6dd6ZeZdZdZdZdZdZ dZ dZ dZ dZ RS(iii iiidii iiii ii'i?tautocCs||_|jtjd||j|j|j|jftjd||j|j ftjd||j |j fdS(Ns1%s: speed %s, full duplex %s, autoneg %s, link %ss"%s: supports: autoneg %s, modes %ss$%s: advertises: autoneg %s, modes %s( t _interfacetupdatetlogtdebugtspeedt full_duplextautonegtlinktsupported_autonegtsupported_modestadvertised_autonegtadvertised_modes(tselft interface((s7/usr/lib/python2.7/site-packages/tuned/utils/nettool.pyt__init__s   , cCsLd|_t|_t|_t|_g|_t|_g|_t|_dS(Ni( RtFalseR R R R R RR(R((s7/usr/lib/python2.7/site-packages/tuned/utils/nettool.pyt _clean_status"s       cCsDd}x7|D]/}||j|d|dr4dnd7}q W|S(Nii(t_advertise_values(Rtmodestmodetm((s7/usr/lib/python2.7/site-packages/tuned/utils/nettool.pyt_calculate_mode.s -cCsT|j|krtS|js tSdtdd|jd|rAdndgdtkS(Nitethtools-sR tontofft close_fds(R tTrueR RtcallR(Rtenable((s7/usr/lib/python2.7/site-packages/tuned/utils/nettool.pyt_set_autonegotiation5s  cCs?|jtstSdtdd|jdd|gdtkS(NiRs-st advertises0x%03xR(R!RRRR(Rtvalue((s7/usr/lib/python2.7/site-packages/tuned/utils/nettool.pyt_set_advertise>scCsOd}x.|jD]#}|d|kr|d}qqW|dkrG|SdSdS(Nii(R (RtmaxR((s7/usr/lib/python2.7/site-packages/tuned/utils/nettool.pyt get_max_speedDs cCsC|js|j rtS|j|jdr;|jtStSdS(NR(t _disabledR RR$RRR(R((s7/usr/lib/python2.7/site-packages/tuned/utils/nettool.pyt set_max_speedNs  cCs|js|j rtSd}x\|jD]Q}|dkr?q'n||kr'||j|d7}||j|d7}q'q'W||j|j@}tjd|j||f|j |r|j t StSdS(NiRis)%s: set_speed(%d) - effective_mode 0x%03x( R'R RRRR RRRR$RR(RRRtamteffective_mode((s7/usr/lib/python2.7/site-packages/tuned/utils/nettool.pyt set_speedYs   c Cs?|jr dStd|jgdtdtdtdt}tddgd|jdtdtdt}|jd }|jd }|d krtjd |jtj d |j|j ddf|j t|_dS|j t j d}t j d}d}x&|jdD]}|jdr|d } | dkrVd}n| dkrkd}n| dkrd}no| dkrd}nZ| dkrd}nE| dkrd }n0| d!krd"}n| d#krd$}nd}~ q"|dkr<y|j|jd |_Wnd%|_nXd}q"|dkr`|d&k|_d}q"|dkr|d'kp|d(k|_d}q"|dkr|d'k|_d}q"|dkrJygxW|jD]I} |j| jd d)\} } |jjt| | d&kfqW~ ~ ~ Wq7|jjd%tfq7Xq"|d krn|d*k|_d}q"|d"kryv|d+krxW|jD]I} |j| jd d)\} } |jjt| | d&kfqW~ ~ ~ nWq7|jjd%tfq7Xq"|d$kr"|d*k|_d}q"q"WdS(,NRtstdouttstderrRtuniversal_newlinestsedss/^\s*//;s/:\s*/:\n/gtstdiniits*%s: some errors were reported by 'ethtool's%s: %ss s\ns(\d+)s(\d+)baseT/(Half|Full)twaitt:itSpeedRtDuplextduplexsAuto-negotiationR s Link detectedR sSupported link modesR sSupports auto-negotiationR sAdvertised link modesRsAdvertised auto-negotiationRitFulltyesRitYess Not reported(R'tPopenRtPIPERR,t communicateRtwarningRtreplaceRtretcompiletsplittendswithtmatchtgroupRR R R R tappendtintR RR( Rt p_ethtooltp_filtertoutputterrorstre_speedtre_modetstatetlinetsectionRtstd((s7/usr/lib/python2.7/site-packages/tuned/utils/nettool.pyRns    &                      !&     !& (t__name__t __module__RRR'RRRR!R$R&R(R+R(((s7/usr/lib/python2.7/site-packages/tuned/utils/nettool.pyR s"         cCs0|tjkr%t|tj|s