w&bydZddlZddlZddlZ ejejejdZed[dZdZ dZ d4dZ nb#ej $rU ddl Z d Zd Z d Z d4d Z n?#e$r7ddlZejdZGd dejZdZdZ dZ d4dZ YnwxYwYnwxYwdZdZdZdZdZdZdZdZdZGddZGddeZGddeZGdd eZ Gd!d"eZ!Gd#d$eZ"dZ#dZ$dZ%dZ&dZ'd%Z(d&Z)d'Z*dZ+d(Z,d)Z-d*Z.d+Z/d,Z0d-Z1d.Z2dZ3Gd/d0Z4Gd1d2Z5d3Z6dS)5z Netlink message generation/parsing Copyright 2007 Johannes Berg GPLv2+; See copying for details. N)rrc0||dSN)bind descriptoraddrs //usr/lib/python3/dist-packages/iotop/netlink.py_nl_bindr sc*|Sr) getsocknamers r _nl_getsocknamers%%'''r c0||dSr)sendrmsgs r _nl_sendrsr @c,||Sr)recvfromrbufss r _nl_recvrs""4(((r c`tj||ddSN)_netlinkrfilenors r r r #s* M*++--tAw 7 7 7 7 7r cNtj|Sr)rr rrs r rr&s' (9(9(;(;<< ##6#6::Cdn55 5r rcJeZdZdZdZdZdZdZdZdZ dZ d Z d Z d S) Attrcr||_t|rtj|g|R|_dS||_dSr)typer;structpackdata)self attr_typerNvaluess r __init__z Attr.__init__gs? v;;  D26222DIIIDIIIr ctjdt|jdz|j}t|j}|dzdz dz|z }||jzd|zzS)NHHrDr)rLrMr;rNrK)rOhdrlengthpads r _dumpz Attr._dumpns]k$DI 2DI>>TY Q"$.TY,,r c>d|jt|jfzS)Nz)rKreprrNrOs r __repr__z Attr.__repr__ts*didi-IIIr cBtjd|jdS)NHrrLunpackrNr]s r u16zAttr.u16w}S$),,Q//r cBtjd|jdS)Nhrrar]s r s16zAttr.s16zrdr cBtjd|jdS)NIrrar]s r u32zAttr.u32}rdr cBtjd|jdS)Nirrar]s r s32zAttr.s32rdr c|jSr)rNr]s r strzAttr.strs yr cB|jddS)Nr)rNsplitr]s r nulstrz Attr.nulstrsyt$$Q''r c*t|jSr)parse_attributesrNr]s r nestedz Attr.nesteds ***r N) r)r*r+rRrZr^rcrgrjrmrorsrvr0r r rIrIfs--- JJJ000000000000(((+++++r rIceZdZdZdS)StrAttrct||dt|z|ddS)Nz%dsutf-8rIrRr;encoderOrPrNs r rRzStrAttr.__init__s7 dIus4yy'8$++g:N:NOOOOOr Nr)r*r+rRr0r r rxrxs(PPPPPr rxceZdZdZdS) NulStrAttrct||dt|z|dddS)Nz%dsBrzrr{r}s r rRzNulStrAttr.__init__sI d#d))!3T[[5I5I1 N N N N Nr Nr~r0r r rrs(NNNNNr rceZdZdZdS)U32Attrc@t||d|dS)NrirIrRrOrPvals r rRzU32Attr.__init__  dIsC00000r Nr~r0r r rr#11111r rceZdZdZdS)U8Attrc@t||d|dS)NBrrs r rRzU8Attr.__init__rr Nr~r0r r rrrr rceZdZdZdZdS)Nestedc"||_||_dSr)attrsrK)rOrPrs r rRzNested.__init__s  r cg}|jD])}||*d|}t |}t jd|dz|j}||zS)NrTrD)rappendrZjoinr;rLrMrK)rOcontentsattrrXrWs r rZz Nested._dumpstJ * *D OODJJLL ) ) ) )778$$Xk$ DI66X~r N)r)r*r+rRrZr0r r rrs2r r c"eZdZddZdZdZdS)MessagerNc||_||_||_d|_|pg}t |t rJg}|D])}||*d||_ dS||_ dS)Nrr ) rKflagsseqpid isinstancelistrrZrpayload)rOmsg_typerrrrrs r rRzMessage.__init__s  -R gt $ $ #H . . ----88H--DLLL"DLLLr c(|jdkr||_|j|_t|j}t jd|dz|j|j|j|j}|||jzdS)NrIHHIIrG) rrr;rrLrMrKrr)rOconnrXrWs r rz Message.sends} 8r>>xxzzDH8T\""k'6E>49*dh:: # $%%%%%r cbd|j|j|j|jt |jfzS)Nz:)rKrrrr\rr]s r r^zMessage.__repr__s5K Itx4:tDL7I7IOKK Kr )rrN)r)r*r+rRrr^r0r r rrsK # # # # & & &KKKKKr rc(eZdZddZdZdZdZdS) ConnectionrNctjtjtj||_|jtjtjd|jtjtjdt|jd|ft|j\|_ |_ d|_ ||_ dS)Nir)r3r4SOCK_RAWr setsockopt SOL_SOCKET SO_SNDBUF SO_RCVBUFr rrgroups_seq unexpected)rOnltyperunexpected_msg_handlers r rRzConnection.__init__s -(9(.AA ""6#4f6FNNN ""6#4f6FNNN1f+... / @ @$+ 0r c0t|j|dSr)rr)rOrs r rzConnection.sends#&&&&&r ct|j\}\}}tjd|dd\}}}}}t ||||dd} || _| jtkr^tjd| jddd } | dkr/tdtj | | fz} | | _ | | S)NrrGrlrDrzNetlink error: %s (%d)) rrrLrbrrrK NLMSG_ERRORrOSErrorr5strerrorerrno) rOrnlpidnlgrpsmsglenrrrrrrerrs r recvzConnection.recvs$,T_$=$=!/5&-3M':B3B3--I-I)%chsHRSSM:: 8{ " "]3 BQB88;;Ezz646K4F4F:OOPP!   r c0|xjdz c_|jSr)rr]s r rzConnection.seqs Q yr )rN)r)r*r+rRrrrr0r r rrsU1111'''"r rci}t|r_tjd|dd\}}t||d|||<|dzdz dz}||d}t|_|S)NrTrDrrU)r;rLrbrI)rNrattr_lenrPs r rurus E d))$mD$rr(;;) 4( +;<<i\A%+HII d)) Lr )r)7__doc__r5r3rLr4r _dummysockrr rrrerrorr ImportErrorr,CDLLr7 Structurer$ NLM_F_REQUEST NLM_F_MULTI NLM_F_ACK NLM_F_ECHO NLMSG_NOOPr NLMSG_DONE NLMSG_OVERRUNNLMSG_MIN_TYPErIrxrrrr NETLINK_ROUTENETLINK_UNUSEDNETLINK_USERSOCKNETLINK_FIREWALLNETLINK_INET_DIAG NETLINK_NFLOG NETLINK_XFRMNETLINK_SELINUX NETLINK_ISCSI NETLINK_AUDITNETLINK_FIB_LOOKUPNETLINK_CONNECTORNETLINK_NETFILTERNETLINK_IP6_FWNETLINK_DNRTMSGNETLINK_KOBJECT_UEVENTNETLINK_GENERICrrrur0r r rs H6v0&/1EEJOOF((())))) |76767656 8 8 8 = = = 4 4 4 @ @ @ @ @ '6'6'6 v{4   5 5 5 5 5&* 5 5 5  2 2 2  / / / D D D 6 6 6 6 6 6;'6!76v       $+$+$+$+$+$+$+$+NPPPPPdPPP NNNNNNNN 11111d111 11111T111     T        KKKKKKKK>""""""""Js5?A B/A-,B/-9B)&B/(B))B/.B/