U $…DYyã @sôdZddlZddlZddlZzDe ejejd¡Ze d¡[dd„Zdd„Z dd „Z d9d d „Z Wn¤ej k rz.ddl Z d d„Zdd„Z dd „Z d:dd „Z Wn\ek rþddlZe d¡ZGdd„dejƒZdd„Zdd„Z dd „Z d;dd „Z YnXYnXdZdZdZdZdZdZdZdZdZGdd„dƒZGdd „d eƒZGd!d"„d"eƒZGd#d$„d$eƒZ Gd%d&„d&eƒZ!Gd'd(„d(eƒZ"dZ#dZ$dZ%dZ&dZ'd)Z(d*Z)d+Z*dZ+d,Z,d-Z-d.Z.d/Z/d0Z0d1Z1d2Z2dZ3Gd3d4„d4ƒZ4Gd5d6„d6ƒZ5d7d8„Z6dS) GPLv2+; See copying for details. éN)rrcCs| |¡dS©N)Úbind©Ú descriptorÚaddr©rú//usr/lib/python3/dist-packages/iotop/netlink.pyÚ_nl_bindsr cCs| ¡Sr)Ú getsockname©rrrrÚ_nl_getsocknamesr cCs| |¡dSr)Úsend©rÚmsgrrrÚ_nl_sendsré@cCs | |¡Sr)Úrecvfrom©rÚbufsrrrÚ_nl_recvsrcCst | ¡|d¡dS©Né)Ú_netlinkrÚfilenorrrrr #scCst | ¡¡Sr)rr rr rrrr &scCst | ¡|¡dSr)rr rrrrrr)scCst | ¡|¡Sr)rrrrrrrr,sc@s0eZdZdejfdejfdejfdejfgZdS)Ú SOCKADDR_NLZ nl_familyZnl_padÚnl_pidÚ nl_groupsN)Ú__name__Ú __module__Ú __qualname__ÚctypesZc_ushortÚc_intZ_fields_rrrrr4s ýrcCs2ttjdt ¡dƒ}t | ¡t  |¡t  |¡¡S©Nr) rÚsocketÚ AF_NETLINKÚosÚgetpidÚlibcrrr ÚpointerÚsizeofrrrrr :s  þcCsHtddddƒ}t t |¡¡}t | ¡t |¡t |¡¡|j|j fSr") rr r!r)r'r rr(rr)rrÚlenrrrr @s þcCst | ¡|t|ƒd¡Sr")r'r rr*rrrrrHsc Csntddddƒ}t t |¡¡}t |¡}t | ¡||dt |¡t |¡¡}t  t |¡|¡}||j |j ffSr") rr r!r)Zcreate_string_bufferr'rrr(Z string_atrr)rrrr*ZbufÚrZretrrrrKs  þréééééc@s\eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dS)ÚAttrcGs,||_t|ƒr"tj|f|žŽ|_n||_dSr)Útyper*ÚstructÚpackÚdata)ÚselfÚ attr_typer5ÚvaluesrrrÚ__init__gsz Attr.__init__cCsJt dt|jƒd|j¡}t|jƒ}|ddd@|}||jd|S)NÚHHr-réüÿÿÿó)r3r4r*r5r2)r6ÚhdrÚlengthZpadrrrÚ_dumpns z Attr._dumpcCsd|jt|jƒfS)Nz)r2Úreprr5©r6rrrÚ__repr__tsz Attr.__repr__cCst d|j¡dS)NÚHr©r3Úunpackr5rArrrÚu16wszAttr.u16cCst d|j¡dS)NÚhrrDrArrrÚs16zszAttr.s16cCst d|j¡dS)NÚIrrDrArrrÚu32}szAttr.u32cCst d|j¡dS)NÚirrDrArrrÚs32€szAttr.s32cCs|jSr)r5rArrrÚstrƒszAttr.strcCs|j d¡dS)Núr)r5ÚsplitrArrrÚnulstr†sz Attr.nulstrcCs t|jƒSr)Úparse_attributesr5rArrrÚnested‰sz Attr.nestedN) rrrr9r?rBrFrHrJrLrMrPrRrrrrr1fsr1c@seZdZdd„ZdS)ÚStrAttrcCs"t ||dt|ƒ| d¡¡dS)Nz%dsúutf-8©r1r9r*Úencode©r6r7r5rrrr9ŽszStrAttr.__init__N©rrrr9rrrrrSsrSc@seZdZdd„ZdS)Ú NulStrAttrcCs$t ||dt|ƒ| d¡d¡dS)Nz%dsBrTrrUrWrrrr9“s  ÿzNulStrAttr.__init__NrXrrrrrY’srYc@seZdZdd„ZdS)ÚU32AttrcCst ||d|¡dS)NrI©r1r9©r6r7Úvalrrrr9™szU32Attr.__init__NrXrrrrrZ˜srZc@seZdZdd„ZdS)ÚU8AttrcCst ||d|¡dS)NÚBr[r\rrrr9žszU8Attr.__init__NrXrrrrr^sr^c@seZdZdd„Zdd„ZdS)ÚNestedcCs||_||_dSr)Úattrsr2)r6r7rarrrr9£szNested.__init__cCsLg}|jD]}| | ¡¡q d |¡}t|ƒ}t d|d|j¡}||S)NÚr:r-)raÚappendr?Újoinr*r3r4r2)r6ÚcontentsÚattrr>r=rrrr?§s  z Nested._dumpN)rrrr9r?rrrrr`¢sr`éééé é é é é ééc@s&eZdZd dd„Zdd„Zdd „ZdS) ÚMessageréÿÿÿÿNcCs^||_||_||_d|_|pg}t|tƒrTg}|D]}| | ¡¡q2d |¡|_ n||_ dS)Nrró) r2ÚflagsÚseqÚpidÚ isinstanceÚlistrcr?rdÚpayload)r6Úmsg_typertruryrerfrrrr9Äs zMessage.__init__cCsZ|jdkr| ¡|_|j|_t|jƒ}t d|d|j|j|j|j¡}| ||j¡dS)NrrÚIHHIIr0) rurvr*ryr3r4r2rtr )r6Zconnr>r=rrrr Òs   ÿz Message.sendcCs d|j|j|j|jt|jƒfS)Nz:)r2rvrurtr@ryrArrrrBÝsÿzMessage.__repr__)rrrN)rrrr9r rBrrrrrqÃs  rqc@s.eZdZd dd„Zdd„Zdd„Zd d „ZdS) Ú ConnectionrNcCsnt tjtj|¡|_|j tjtjd¡|j tjtjd¡t|jd|fƒt |jƒ\|_ |_ d|_ ||_ dS)Nir)r#r$ÚSOCK_RAWrZ setsockoptZ SOL_SOCKETZ SO_SNDBUFZ SO_RCVBUFr r rvÚgroupsÚ_seqZ unexpected)r6Znltyper~Zunexpected_msg_handlerrrrr9äsÿzConnection.__init__cCst|j|ƒdSr)rr)r6rrrrr îszConnection.sendc Csžt|jƒ\}\}}t d|dd…¡\}}}}}t||||dd…ƒ} || _| jtkršt d| jdd…¡d } | dkršt dt   | ¡| fƒ} | | _ | ‚| S)Nr{r0rKr-rzNetlink error: %s (%d)) rrr3rErqrvr2Ú NLMSG_ERRORryÚOSErrorr%ÚstrerrorÚerrno) r6reZnlpidZnlgrpsZmsglenrzrtrurvrrƒÚerrrrrÚrecvñs  ÿ ÿzConnection.recvcCs|jd7_|jSr)rrArrrruszConnection.seq)rN)rrrr9r r…rurrrrr|âs r|cCs\i}t|ƒrXt d|dd…¡\}}t||d|…ƒ||<|ddd@}||d…}q|S)Nr:r-rr;)r*r3rEr1)r5raZattr_lenr7rrrrQsrQ)r)r)r)7Ú__doc__r%r#r3r$r}Z _dummysockrr r rrÚerrorrÚ ImportErrorr ZCDLLr'Z StructurerZ NLM_F_REQUESTZ NLM_F_MULTIZ NLM_F_ACKZ NLM_F_ECHOZ NLMSG_NOOPr€Z NLMSG_DONEZ NLMSG_OVERRUNZNLMSG_MIN_TYPEr1rSrYrZr^r`Z NETLINK_ROUTEZNETLINK_UNUSEDZNETLINK_USERSOCKZNETLINK_FIREWALLZNETLINK_INET_DIAGZ NETLINK_NFLOGZ NETLINK_XFRMZNETLINK_SELINUXZ NETLINK_ISCSIZ NETLINK_AUDITZNETLINK_FIB_LOOKUPZNETLINK_CONNECTORZNETLINK_NETFILTERZNETLINK_IP6_FWZNETLINK_DNRTMSGZNETLINK_KOBJECT_UEVENTZNETLINK_GENERICrqr|rQrrrrÚsz  '%