Ñò
A¡KKc        	   @   s‘  d  Z  d d k Z d d k Z yV e i e i e i d ƒ Z e i d4 ƒ [ d „  Z d „  Z d „  Z	 d d „ Z
 WnÊ e i j
 o» y7 d d k Z d	 „  Z d
 „  Z d „  Z	 d d „ Z
 WqAe j
 on d d k Z d d k Z e i d ƒ Z d e i f d „  ƒ  YZ d „  Z d „  Z d „  Z	 d d „ Z
 qAXn Xd Z d Z d Z d Z d Z d Z d Z d Z d Z d d5 d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ  d e f d  „  ƒ  YZ! d! e f d" „  ƒ  YZ" d# e f d$ „  ƒ  YZ# d Z$ d Z% d Z& d Z' d Z( d% Z) d& Z* d' Z+ d Z, d( Z- d) Z. d* Z/ d+ Z0 d, Z1 d- Z2 d. Z3 d Z4 d/ d6 d0 „  ƒ  YZ5 d1 d7 d2 „  ƒ  YZ6 d3 „  Z7 d S(8   sl   
Netlink message generation/parsing

Copyright 2007        Johannes Berg <johannes@sipsolutions.net>

GPLv2
iÿÿÿÿNi    c         C   s   |  i  | ƒ d  S(   N(   t   bind(   t
   descriptort   addr(    (    s-   /usr/lib/pymodules/python2.6/iotop/netlink.pyt   _nl_bind   s    c         C   s
   |  i  ƒ  S(   N(   t   getsockname(   R   (    (    s-   /usr/lib/pymodules/python2.6/iotop/netlink.pyt   _nl_getsockname   s    c         C   s   |  i  | ƒ d  S(   N(   t   send(   R   t   msg(    (    s-   /usr/lib/pymodules/python2.6/iotop/netlink.pyt   _nl_send   s    i @  c         C   s   |  i  | ƒ S(   N(   t   recvfrom(   R   t   bufs(    (    s-   /usr/lib/pymodules/python2.6/iotop/netlink.pyt   _nl_recv   s    c         C   s   t  i |  i ƒ  | d ƒ d  S(   Ni   (   t   _netlinkR    t   fileno(   R   R   (    (    s-   /usr/lib/pymodules/python2.6/iotop/netlink.pyR      s    c         C   s   t  i |  i ƒ  ƒ S(   N(   R   R   R   (   R   (    (    s-   /usr/lib/pymodules/python2.6/iotop/netlink.pyR      s    c         C   s   t  i |  i ƒ  | ƒ d  S(   N(   R   R   R   (   R   R   (    (    s-   /usr/lib/pymodules/python2.6/iotop/netlink.pyR       s    c         C   s   t  i |  i ƒ  | ƒ S(   N(   R   R	   R   (   R   R
   (    (    s-   /usr/lib/pymodules/python2.6/iotop/netlink.pyR   "   s    t   SOCKADDR_NLc           B   s>   e  Z d  e i f d e i f d e i f d e i f g Z RS(   t	   nl_familyt   nl_padt   nl_pidt	   nl_groups(   t   __name__t
   __module__t   ctypest   c_ushortt   c_intt   _fields_(    (    (    s-   /usr/lib/pymodules/python2.6/iotop/netlink.pyR   +   s   c         C   sI   t  t i d t i ƒ  d ƒ } t i |  i ƒ  t i	 | ƒ t i
 | ƒ ƒ S(   Ni    (   R   t   sockett
   AF_NETLINKt   ost   getpidt   libcR    R   R   t   pointert   sizeof(   R   R   (    (    s-   /usr/lib/pymodules/python2.6/iotop/netlink.pyR   1   s    c         C   sh   t  d d d d ƒ } t i t i | ƒ ƒ } t i |  i ƒ  t i | ƒ t i | ƒ ƒ | i | i	 f S(   Ni    (
   R   R   R   R   R   R   R   R   R   R   (   R   R   t   len(    (    s-   /usr/lib/pymodules/python2.6/iotop/netlink.pyR   7   s    c         C   s"   t  i |  i ƒ  | t | ƒ d ƒ S(   Ni    (   R   R   R   R    (   R   R   (    (    s-   /usr/lib/pymodules/python2.6/iotop/netlink.pyR   ?   s    c         C   s£   t  d d d d ƒ } t i t i | ƒ ƒ } t i | ƒ } t i |  i ƒ  | | d t i | ƒ t i | ƒ ƒ } t i	 t i | ƒ | ƒ } | | i
 | i f f S(   Ni    (   R   R   R   R   t   create_string_bufferR   R	   R   R   t	   string_atR   R   (   R   R
   R   R    t   buft   rt   ret(    (    s-   /usr/lib/pymodules/python2.6/iotop/netlink.pyR   B   s    	i   i   i   i   i   i   t   Attrc           B   sb   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z RS(
   c         G   s<   | |  _  t | ƒ o t i | | Œ |  _ n
 | |  _ d  S(   N(   t   typeR    t   structt   packt   data(   t   selft	   attr_typeR*   t   values(    (    s-   /usr/lib/pymodules/python2.6/iotop/netlink.pyt   __init__]   s    	c         C   s]   t  i d t |  i ƒ d |  i ƒ } t |  i ƒ } | d d d @| } | |  i d | S(   Nt   HHi   i   i   t    iüÿÿÿ(   R(   R)   R    R*   R'   (   R+   t   hdrt   lengtht   pad(    (    s-   /usr/lib/pymodules/python2.6/iotop/netlink.pyt   _dumpd   s    %c         C   s   d |  i  t |  i ƒ f S(   Ns   <Attr type %d, data "%s">(   R'   t   reprR*   (   R+   (    (    s-   /usr/lib/pymodules/python2.6/iotop/netlink.pyt   __repr__j   s    c         C   s   t  i d |  i ƒ d S(   Nt   Hi    (   R(   t   unpackR*   (   R+   (    (    s-   /usr/lib/pymodules/python2.6/iotop/netlink.pyt   u16m   s    c         C   s   t  i d |  i ƒ d S(   Nt   hi    (   R(   R8   R*   (   R+   (    (    s-   /usr/lib/pymodules/python2.6/iotop/netlink.pyt   s16o   s    c         C   s   t  i d |  i ƒ d S(   Nt   Ii    (   R(   R8   R*   (   R+   (    (    s-   /usr/lib/pymodules/python2.6/iotop/netlink.pyt   u32q   s    c         C   s   t  i d |  i ƒ d S(   Nt   ii    (   R(   R8   R*   (   R+   (    (    s-   /usr/lib/pymodules/python2.6/iotop/netlink.pyt   s32s   s    c         C   s   |  i  S(   N(   R*   (   R+   (    (    s-   /usr/lib/pymodules/python2.6/iotop/netlink.pyt   stru   s    c         C   s   |  i  i d ƒ d S(   NR0   i    (   R*   t   split(   R+   (    (    s-   /usr/lib/pymodules/python2.6/iotop/netlink.pyt   nulstrw   s    c         C   s   t  |  i ƒ S(   N(   t   parse_attributesR*   (   R+   (    (    s-   /usr/lib/pymodules/python2.6/iotop/netlink.pyt   nestedy   s    (   R   R   R.   R4   R6   R9   R;   R=   R?   R@   RB   RD   (    (    (    s-   /usr/lib/pymodules/python2.6/iotop/netlink.pyR&   \   s   									t   StrAttrc           B   s   e  Z d  „  Z RS(   c         C   s$   t  i |  | d t | ƒ | ƒ d  S(   Ns   %ds(   R&   R.   R    (   R+   R,   R*   (    (    s-   /usr/lib/pymodules/python2.6/iotop/netlink.pyR.   }   s    (   R   R   R.   (    (    (    s-   /usr/lib/pymodules/python2.6/iotop/netlink.pyRE   |   s   t
   NulStrAttrc           B   s   e  Z d  „  Z RS(   c         C   s'   t  i |  | d t | ƒ | d ƒ d  S(   Ns   %dsBi    (   R&   R.   R    (   R+   R,   R*   (    (    s-   /usr/lib/pymodules/python2.6/iotop/netlink.pyR.      s    (   R   R   R.   (    (    (    s-   /usr/lib/pymodules/python2.6/iotop/netlink.pyRF   €   s   t   U32Attrc           B   s   e  Z d  „  Z RS(   c         C   s   t  i |  | d | ƒ d  S(   Nt   L(   R&   R.   (   R+   R,   t   val(    (    s-   /usr/lib/pymodules/python2.6/iotop/netlink.pyR.   …   s    (   R   R   R.   (    (    (    s-   /usr/lib/pymodules/python2.6/iotop/netlink.pyRG   „   s   t   U8Attrc           B   s   e  Z d  „  Z RS(   c         C   s   t  i |  | d | ƒ d  S(   Nt   B(   R&   R.   (   R+   R,   RI   (    (    s-   /usr/lib/pymodules/python2.6/iotop/netlink.pyR.   ‰   s    (   R   R   R.   (    (    (    s-   /usr/lib/pymodules/python2.6/iotop/netlink.pyRJ   ˆ   s   t   Nestedc           B   s   e  Z d  „  Z d „  Z RS(   c         C   s   | |  _  | |  _ d  S(   N(   t   attrsR'   (   R+   R,   RM   (    (    s-   /usr/lib/pymodules/python2.6/iotop/netlink.pyR.      s    	c         C   sl   g  } x$ |  i  D] } | i | i ƒ  ƒ q Wd i | ƒ } t | ƒ } t i d | d |  i ƒ } | | S(   Nt    R/   i   (   RM   t   appendR4   t   joinR    R(   R)   R'   (   R+   t   contentst   attrR2   R1   (    (    s-   /usr/lib/pymodules/python2.6/iotop/netlink.pyR4   ‘   s    
 (   R   R   R.   R4   (    (    (    s-   /usr/lib/pymodules/python2.6/iotop/netlink.pyRL   Œ   s   	i   i   i   i	   i
   i   i   i   i   i   t   Messagec           B   s,   e  Z d  d d d „ Z d „  Z d „  Z RS(   i    iÿÿÿÿc         C   sŽ   | |  _  | |  _ | |  _ d |  _ | p g  } t | t ƒ o@ g  } x! | D] } | i | i ƒ  ƒ qN Wd i | ƒ |  _	 n
 | |  _	 d  S(   NiÿÿÿÿRN   (
   R'   t   flagst   seqt   pidt
   isinstancet   listRO   R4   RP   t   payload(   R+   t   msg_typeRT   RU   RY   RQ   RR   (    (    s-   /usr/lib/pymodules/python2.6/iotop/netlink.pyR.   ­   s    				 c         C   s„   |  i  d j o | i  ƒ  |  _  n | i |  _ t |  i ƒ } t i d | d |  i |  i |  i  |  i ƒ } | i | |  i ƒ d  S(   Niÿÿÿÿt   IHHIIi   i   (	   RU   RV   R    RY   R(   R)   R'   RT   R   (   R+   t   connR2   R1   (    (    s-   /usr/lib/pymodules/python2.6/iotop/netlink.pyR   »   s    c         C   s,   d |  i  |  i |  i |  i t |  i ƒ f S(   Ns:   <netlink.Message type=%d, pid=%d, seq=%d, flags=0x%x "%s">(   R'   RV   RU   RT   R5   RY   (   R+   (    (    s-   /usr/lib/pymodules/python2.6/iotop/netlink.pyR6   Æ   s    N(   R   R   t   NoneR.   R   R6   (    (    (    s-   /usr/lib/pymodules/python2.6/iotop/netlink.pyRS   ¬   s   	t
   Connectionc           B   s2   e  Z d  d d „ Z d „  Z d „  Z d „  Z RS(   i    c         C   s   t  i  t  i t  i | ƒ |  _ |  i i t  i t  i d ƒ |  i i t  i t  i d ƒ t |  i d | f ƒ t	 |  i ƒ \ |  _
 |  _ d |  _ | |  _ d  S(   Ni   i    (   R   R   t   SOCK_RAWR   t
   setsockoptt
   SOL_SOCKETt	   SO_SNDBUFt	   SO_RCVBUFR   R   RV   t   groupst   _seqt
   unexpected(   R+   t   nltypeRd   t   unexpected_msg_handler(    (    s-   /usr/lib/pymodules/python2.6/iotop/netlink.pyR.   Ë   s    	c         C   s   t  |  i | ƒ d  S(   N(   R   R   (   R+   R   (    (    s-   /usr/lib/pymodules/python2.6/iotop/netlink.pyR   Ô   s    c         C   sã   t  |  i ƒ \ } \ } } t i d | d  ƒ \ } } } } } t | | | | d ƒ }	 | |	 _ |	 i t j om d d  k }
 t i d |	 i	 d  ƒ d } | d j o2 t
 d |
 i | ƒ | f ƒ } | | _ | ‚ qß n |	 S(   NR[   i   iÿÿÿÿR>   i   i    s   Netlink error: %s (%d)(   R   R   R(   R8   RS   RV   R'   t   NLMSG_ERRORR   RY   t   OSErrort   strerrort   errno(   R+   RQ   t   nlpidt   nlgrpst   msglenRZ   RT   RU   RV   R   R   Rl   t   err(    (    s-   /usr/lib/pymodules/python2.6/iotop/netlink.pyt   recvÖ   s    			c         C   s   |  i  d 7_  |  i  S(   Ni   (   Re   (   R+   (    (    s-   /usr/lib/pymodules/python2.6/iotop/netlink.pyRU   ç   s    N(   R   R   R]   R.   R   Rq   RU   (    (    (    s-   /usr/lib/pymodules/python2.6/iotop/netlink.pyR^   Ê   s   			c         C   sq   h  } xd t  |  ƒ oV t i d |  d  ƒ \ } } t | |  d | !ƒ | | <| d d d @} |  | }  q	 W| S(   NR/   i   i   i   iüÿÿÿ(   R    R(   R8   R&   (   R*   RM   t   attr_lenR,   (    (    s-   /usr/lib/pymodules/python2.6/iotop/netlink.pyRC   ë   s     (   i    i    (    (    (    (8   t   __doc__R(   R   R   R_   t
   _dummysockR    R   R   R   R   t   errorR   t   ImportErrorR   R   t   CDLLR]   R   t	   StructureR   t   NLM_F_REQUESTt   NLM_F_MULTIt	   NLM_F_ACKt
   NLM_F_ECHOt
   NLMSG_NOOPRi   t
   NLMSG_DONEt   NLMSG_OVERRUNt   NLMSG_MIN_TYPER&   RE   RF   RG   RJ   RL   t   NETLINK_ROUTEt   NETLINK_UNUSEDt   NETLINK_USERSOCKt   NETLINK_FIREWALLt   NETLINK_INET_DIAGt   NETLINK_NFLOGt   NETLINK_XFRMt   NETLINK_SELINUXt   NETLINK_ISCSIt   NETLINK_AUDITt   NETLINK_FIB_LOOKUPt   NETLINK_CONNECTORt   NETLINK_NETFILTERt   NETLINK_IP6_FWt   NETLINK_DNRTMSGt   NETLINK_KOBJECT_UEVENTt   NETLINK_GENERICRS   R^   RC   (    (    (    s-   /usr/lib/pymodules/python2.6/iotop/netlink.pyt   <module>   sx   									 !