ó æ ”\c@scdgZddlZddlTddlZejjƒZddd„ƒYZd„Z ie _ dS(tethcardiÿÿÿÿN(t*tNettoolcBs­eZiddgd6ddgd6ddgd6d d gd 6d d gd 6dd6ZeZd„Zd„Zd„Zd„Zd„Z d„Z d„Z d„Z d„Z RS(iii iiidii ièii€iÄ ii'i?tautocCsƒ||_|jƒtjd||j|j|j|jfƒtjd||j|j fƒtjd||j |j fƒdS(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|rAdndgdtƒkS(Nitethtools-sR tontofft close_fds(R tTrueR RtcallR(Rtenable((s7/usr/lib/python2.7/site-packages/tuned/utils/nettool.pyt_set_autonegotiation5s  cCs?|jtƒstSdtdd|jdd|gdtƒkS(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|jdƒr;|jƒtStSdS(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ƒ}|jƒd }|jƒd }|d krätjd |jƒtj d |j|j ddƒfƒ|j ƒt|_dS|j ƒt j dƒ}t j dƒ}d}x&|jdƒD]}|jdƒrõ|d } | dkrVd}n™| dkrkd}n„| dkr€d}no| dkr•d}nZ| dkrªd}nE| dkr¿d }n0| d!krÔd"}n| d#kréd$}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|jƒD]I} |j| ƒjd d)ƒ\} } |jjt| ƒ| d&kfƒqÐW~ ~ ~ Wq7|jjd%tfƒq7Xq"|d krn|d*k|_d}q"|d"kryv|d+krïxW|jƒD]I} |j| ƒjd d)ƒ\} } |jjt| ƒ| d&kfƒq–W~ ~ ~ nWq7|jjd%tfƒq7Xq"|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:iÿÿÿÿtSpeedRtDuplextduplexsAuto-negotiationR s Link detectedR sSupported link modesR sSupports auto-negotiationR sAdvertised link modesRsAdvertised auto-negotiationRiètFulltyesRitYess 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    Ç