ó B¢Qc@sdZddlZddlZddlZyVejejejdƒZejd4ƒ[d„Zd„Z d„Z dd„Z Wnºej k r<y7ddl Z d „Zd „Z d „Z dd „Z Wq=ek r8ddlZejdƒZd ejfd„ƒYZd„Zd„Z d„Z dd„Z q=XnXdZdZdZdZdZdZdZdZdZdd5d„ƒYZdefd„ƒYZdefd„ƒYZ defd „ƒYZ!d!efd"„ƒYZ"d#efd$„ƒYZ#dZ$dZ%dZ&dZ'dZ(d%Z)d&Z*d'Z+dZ,d(Z-d)Z.d*Z/d+Z0d,Z1d-Z2d.Z3dZ4d/d6d0„ƒYZ5d1d7d2„ƒYZ6d3„Z7dS(8s‡ Netlink message generation/parsing Copyright 2007 Johannes Berg GPLv2+; See copying for details. iÿÿÿÿNicCs|j|ƒdS(N(tbind(t descriptortaddr((s1/usr/lib/python2.7/site-packages/iotop/netlink.pyt_nl_bindscCs |jƒS(N(t getsockname(R((s1/usr/lib/python2.7/site-packages/iotop/netlink.pyt_nl_getsocknamescCs|j|ƒdS(N(tsend(Rtmsg((s1/usr/lib/python2.7/site-packages/iotop/netlink.pyt_nl_sendsi@cCs |j|ƒS(N(trecvfrom(Rtbufs((s1/usr/lib/python2.7/site-packages/iotop/netlink.pyt_nl_recvscCstj|jƒ|dƒdS(Ni(t_netlinkRtfileno(RR((s1/usr/lib/python2.7/site-packages/iotop/netlink.pyRscCstj|jƒƒS(N(R RR (R((s1/usr/lib/python2.7/site-packages/iotop/netlink.pyR scCstj|jƒ|ƒdS(N(R RR (RR((s1/usr/lib/python2.7/site-packages/iotop/netlink.pyR"scCstj|jƒ|ƒS(N(R R R (RR ((s1/usr/lib/python2.7/site-packages/iotop/netlink.pyR $st SOCKADDR_NLcBs>eZdejfdejfdejfdejfgZRS(t nl_familytnl_padtnl_pidt nl_groups(t__name__t __module__tctypestc_ushorttc_intt_fields_(((s1/usr/lib/python2.7/site-packages/iotop/netlink.pyR,s   cCsIttjdtjƒdƒ}tj|jƒtj |ƒtj |ƒƒS(Ni( Rtsockett AF_NETLINKtostgetpidtlibcRR Rtpointertsizeof(RR((s1/usr/lib/python2.7/site-packages/iotop/netlink.pyR2s cCshtddddƒ}tjtj|ƒƒ}tj|jƒtj|ƒtj|ƒƒ|j|j fS(Ni( RRRRRRR RRR(RRtlen((s1/usr/lib/python2.7/site-packages/iotop/netlink.pyR8s  cCs"tj|jƒ|t|ƒdƒS(Ni(RRR R (RR((s1/usr/lib/python2.7/site-packages/iotop/netlink.pyR@scCs£tddddƒ}tjtj|ƒƒ}tj|ƒ}tj|jƒ||dtj|ƒtj|ƒƒ}tj tj|ƒ|ƒ}||j |j ffS(Ni( RRRRtcreate_string_bufferRR R Rt string_atRR(RR RR tbuftrtret((s1/usr/lib/python2.7/site-packages/iotop/netlink.pyR Cs iiiiiitAttrcBsbeZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z RS( cGs:||_t|ƒr-tj||Œ|_n ||_dS(N(ttypeR tstructtpacktdata(tselft attr_typeR*tvalues((s1/usr/lib/python2.7/site-packages/iotop/netlink.pyt__init__^s  cCs]tjdt|jƒd|jƒ}t|jƒ}|ddd@|}||jd|S(NtHHiiitiüÿÿÿ(R(R)R R*R'(R+thdrtlengthtpad((s1/usr/lib/python2.7/site-packages/iotop/netlink.pyt_dumpes%cCsd|jt|jƒfS(Ns(R'treprR*(R+((s1/usr/lib/python2.7/site-packages/iotop/netlink.pyt__repr__kscCstjd|jƒdS(NtHi(R(tunpackR*(R+((s1/usr/lib/python2.7/site-packages/iotop/netlink.pytu16nscCstjd|jƒdS(Nthi(R(R8R*(R+((s1/usr/lib/python2.7/site-packages/iotop/netlink.pyts16pscCstjd|jƒdS(NtIi(R(R8R*(R+((s1/usr/lib/python2.7/site-packages/iotop/netlink.pytu32rscCstjd|jƒdS(Ntii(R(R8R*(R+((s1/usr/lib/python2.7/site-packages/iotop/netlink.pyts32tscCs|jS(N(R*(R+((s1/usr/lib/python2.7/site-packages/iotop/netlink.pytstrvscCs|jjdƒdS(NR0i(R*tsplit(R+((s1/usr/lib/python2.7/site-packages/iotop/netlink.pytnulstrxscCs t|jƒS(N(tparse_attributesR*(R+((s1/usr/lib/python2.7/site-packages/iotop/netlink.pytnestedzs( RRR.R4R6R9R;R=R?R@RBRD(((s1/usr/lib/python2.7/site-packages/iotop/netlink.pyR&]s         tStrAttrcBseZd„ZRS(cCs-tj||dt|ƒ|jdƒƒdS(Ns%dssutf-8(R&R.R tencode(R+R,R*((s1/usr/lib/python2.7/site-packages/iotop/netlink.pyR.~s(RRR.(((s1/usr/lib/python2.7/site-packages/iotop/netlink.pyRE}st NulStrAttrcBseZd„ZRS(cCs0tj||dt|ƒ|jdƒdƒdS(Ns%dsBsutf-8i(R&R.R RF(R+R,R*((s1/usr/lib/python2.7/site-packages/iotop/netlink.pyR.‚s(RRR.(((s1/usr/lib/python2.7/site-packages/iotop/netlink.pyRGstU32AttrcBseZd„ZRS(cCstj||d|ƒdS(NR<(R&R.(R+R,tval((s1/usr/lib/python2.7/site-packages/iotop/netlink.pyR.†s(RRR.(((s1/usr/lib/python2.7/site-packages/iotop/netlink.pyRH…stU8AttrcBseZd„ZRS(cCstj||d|ƒdS(NtB(R&R.(R+R,RI((s1/usr/lib/python2.7/site-packages/iotop/netlink.pyR.Šs(RRR.(((s1/usr/lib/python2.7/site-packages/iotop/netlink.pyRJ‰stNestedcBseZd„Zd„ZRS(cCs||_||_dS(N(tattrsR'(R+R,RM((s1/usr/lib/python2.7/site-packages/iotop/netlink.pyR.Žs cCslg}x$|jD]}|j|jƒƒqWdj|ƒ}t|ƒ}tjd|d|jƒ}||S(NtR/i(RMtappendR4tjoinR R(R)R'(R+tcontentstattrR2R1((s1/usr/lib/python2.7/site-packages/iotop/netlink.pyR4’s (RRR.R4(((s1/usr/lib/python2.7/site-packages/iotop/netlink.pyRLs iiii i i i i iitMessagecBs,eZdddd„Zd„Zd„ZRS(iiÿÿÿÿcCs‹||_||_||_d|_|p-g}t|tƒr~g}x!|D]}|j|jƒƒqLWdj|ƒ|_ n ||_ dS(NiÿÿÿÿRN( R'tflagstseqtpidt isinstancetlistROR4RPtpayload(R+tmsg_typeRTRURYRQRR((s1/usr/lib/python2.7/site-packages/iotop/netlink.pyR.®s      cCs‚|jdkr!|jƒ|_n|j|_t|jƒ}tjd|d|j|j|j|jƒ}|j||jƒdS(NiÿÿÿÿtIHHIIii( RURVR RYR(R)R'RTR(R+tconnR2R1((s1/usr/lib/python2.7/site-packages/iotop/netlink.pyR¼s cCs,d|j|j|j|jt|jƒfS(Ns:(R'RVRURTR5RY(R+((s1/usr/lib/python2.7/site-packages/iotop/netlink.pyR6ÇsN(RRtNoneR.RR6(((s1/usr/lib/python2.7/site-packages/iotop/netlink.pyRS­s t ConnectioncBs2eZddd„Zd„Zd„Zd„ZRS(icCstjtjtj|ƒ|_|jjtjtjdƒ|jjtjtjdƒt|jd|fƒt |jƒ\|_ |_ d|_ ||_ dS(Nii(RRtSOCK_RAWRt setsockoptt SOL_SOCKETt SO_SNDBUFt SO_RCVBUFRRRVtgroupst_seqt unexpected(R+tnltypeRdtunexpected_msg_handler((s1/usr/lib/python2.7/site-packages/iotop/netlink.pyR.Ìs  cCst|j|ƒdS(N(RR(R+R((s1/usr/lib/python2.7/site-packages/iotop/netlink.pyRÕsc CsÓt|jƒ\}\}}tjd|d ƒ\}}}}}t||||dƒ} || _| jtkrÏtjd| jd ƒd } | dkrÏt dt j | ƒ| fƒ} | | _ | ‚qÏn| S(NR[iR>iisNetlink error: %s (%d)( R RR(R8RSRVR't NLMSG_ERRORRYtOSErrorRtstrerrorterrno( R+RQtnlpidtnlgrpstmsglenRZRTRURVRRlterr((s1/usr/lib/python2.7/site-packages/iotop/netlink.pytrecv×s     cCs|jd7_|jS(Ni(Re(R+((s1/usr/lib/python2.7/site-packages/iotop/netlink.pyRUçsN(RRR]R.RRqRU(((s1/usr/lib/python2.7/site-packages/iotop/netlink.pyR^Ës  cCsoi}xbt|ƒrjtjd|d ƒ\}}t||d|!ƒ||<|ddd@}||}q W|S(NR/iiiiüÿÿÿ(R R(R8R&(R*RMtattr_lenR,((s1/usr/lib/python2.7/site-packages/iotop/netlink.pyRCës(ii((((8t__doc__RRR(RR_t _dummysockRRRRR terrorR t ImportErrorRtCDLLR]Rt StructureRt NLM_F_REQUESTt NLM_F_MULTIt NLM_F_ACKt NLM_F_ECHOt NLMSG_NOOPRit NLMSG_DONEt NLMSG_OVERRUNtNLMSG_MIN_TYPER&RERGRHRJRLt NETLINK_ROUTEtNETLINK_UNUSEDtNETLINK_USERSOCKtNETLINK_FIREWALLtNETLINK_INET_DIAGt NETLINK_NFLOGt NETLINK_XFRMtNETLINK_SELINUXt NETLINK_ISCSIt NETLINK_AUDITtNETLINK_FIB_LOOKUPtNETLINK_CONNECTORtNETLINK_NETFILTERtNETLINK_IP6_FWtNETLINK_DNRTMSGtNETLINK_KOBJECT_UEVENTtNETLINK_GENERICRSR^RC(((s1/usr/lib/python2.7/site-packages/iotop/netlink.pytsz