+
    üÐj%  ã            	       óÊ  a € R# t/0 t R t^ RIt^ RIt^ RIHtHtHtHtH	t	H
t
HtHtHtHtHtHt ^ RIHt ^ RIHtHtHt ^ RIHtHtHt ^ RIHt ]! ]! R4      ;'       g    R4      t]P:                  P=                  R	4      '       g   ]P:                  R
8X  d   R]3R]3.t] ^ k M	R]3.t] ^k  ! R R]4      t  ! R R]4      t! ! R R]4      t" ! R R]4      t# ! R R]4      t$ ! R R]4      t%]! ]%4      t&R]&3R]3R]3R]! ]"4      3R]! ]"4      3R]! ]"4      3R]3.]%n'        ]PP                  t(]! ]&4      .](n)        ]	](n*        ]PV                  t+]&.]+n)        R  t,R! t-R" t.R# )$z>
POSIX implementation of local network interface enumeration.
N)ÚCDLLÚPOINTERÚ	StructureÚc_char_pÚc_intÚc_ubyteÚc_uint8Úc_uint32Úc_ushortÚc_void_pÚcastÚpointer)Úfind_library)ÚAF_INETÚAF_INET6Ú	inet_ntop)ÚAnyÚListÚTuple)ÚnativeStringÚcÚ ÚfreebsdÚdarwinÚsin_lenÚ
sin_familyc                   ó.   € ] tR t^,tR ]^,          3.tRtR# )Úin_addr© N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   Ú_fields_Ú__static_attributes__r   ó    ÚD/usr/lib/python3/dist-packages/twisted/internet/test/_posixifaces.pyr   r   ,   s   † à	�G˜a•KÐ ð„Hr&   r   c                   ó.   € ] tR t^2tR]^,          3.tRtR# )Úin6_addrr   r   Nr   r   r&   r'   r)   r)   2   s   † à	�G˜b•LÐ!ð„Hr&   r)   c                   ó.   € ] tR t^8t]R]3.,           tRtR# )ÚsockaddrÚsin_portr   N)r    r!   r"   r#   Ú_sockaddrCommonr
   r$   r%   r   r&   r'   r+   r+   8   s   † ØØ	�XÐð"õ „Hr&   r+   c                   ó4   € ] tR t^>t]R]3R]3.,           tRtR# )Úsockaddr_inr,   Úsin_addrr   N)	r    r!   r"   r#   r-   r
   r   r$   r%   r   r&   r'   r/   r/   >   s!   † ØØ	�XÐØ	�WÐð"õ „Hr&   r/   c                   ó:   € ] tR t^Et]R]3R]3R]3.,           tRt	R# )Úsockaddr_in6r,   Úsin_flowinfor0   r   N)
r    r!   r"   r#   r-   r
   r	   r)   r$   r%   r   r&   r'   r2   r2   E   s)   † ØØ	�XÐØ	˜Ð"Ø	�XÐð"õ „Hr&   r2   c                   ó   € ] tR t^MtRtR# )Úifaddrsr   N)r    r!   r"   r#   r%   r   r&   r'   r5   r5   M   s   † Ûr&   r5   Úifa_nextÚifa_nameÚ	ifa_flagsÚifa_addrÚifa_netmaskÚifa_dstaddrÚifa_datac                ó¨   € \         P                  P                  R4      '       d-   VR,          R8X  d   VR,          R,           VR,          ,           # V# )aj  
On FreeBSD, kill the embedded interface indices in link-local scoped
addresses.

@param family: The address family of the packed address - one of the
    I{socket.AF_*} constants.

@param packed: The packed representation of the address (ie, the bytes of a
    I{in_addr} field).
@type packed: L{bytes}

@return: The packed address with any FreeBSD-specific extra bits cleared.
@rtype: L{bytes}

@see: U{https://twistedmatrix.com/trac/ticket/6843}
@see: U{http://www.freebsd.org/doc/en/books/developers-handbook/ipv6.html#ipv6-scope-index}

@note: Indications are that the need for this will be gone in FreeBSD >=10.
r   :Né   Ns   þ€s     :é   NN)ÚsysÚplatformÚ
startswith)ÚfamilyÚpackeds   &&r'   Ú_maybeCleanupScopeIndexrE   d   sA   € ô( ‡|�|×Ñ˜y×)Ò)¨f°R­j¸KÔ.GØ�b�z˜KÕ'¨&°­*Õ4Ð4Ø€Mr&   c                 ó  € \        4       p \        \        V 4      4      ^ 8  d   \        4       h. p V '       Ed1   V ^ ,          P                  '       Ed   V ^ ,          P                  ^ ,          P
                  pV\        8X  d,   \        V ^ ,          P                  \        \        4      4      pM8V\        8X  d,   \        V ^ ,          P                  \        \        4      4      pMRpV'       dg   \        V^ ,          P                  P                  R,          4      p\        W$4      pVP!                  V ^ ,          P"                  V\%        W$4      34       V ^ ,          P&                  p EK9   \)        V 4       V#   \)        T 4       i ; i)z‹
Call C{getifaddrs(3)} and return a list of tuples of interface name, address
family, and human-readable address representing its results.
N:NNN)Ú	ifaddrs_pÚ
getifaddrsr   ÚOSErrorr9   r   r   r   r   r/   r   r2   Úbytesr0   r   rE   Úappendr7   r   r6   Úfreeifaddrs)r5   ÚresultsrC   ÚaddrrD   s        r'   Ú_interfacesrO   }   s*  € ô
 ‹k€GÜ”'˜'Ó"Ó# aÔ'Ü‹iˆØ€GðßˆgØ�q�z×"×"Ñ"Ø  �×,Ñ,¨QÕ/×:Ñ:�ØœWÔ$Ü ¨¥
× 3Ñ 3´W¼[Ó5IÓJ‘DØœxÔ'Ü ¨¥
× 3Ñ 3´W¼\Ó5JÓK‘Dà�DçÜ" 4¨¥7×#3Ñ#3×#;Ñ#;¸AÕ#>Ó?�FÜ4°VÓD�FØ—N‘NØ  �×,Ñ,¨f´iÀÓ6OÐPôð ˜a•j×)Ñ)‹Gð# ô& 	�GÔØ€Nøô 	�GÕús   ±E8 ºE8 ÁBE8 Ã.A<E8 Å8Fc                 óê   € . p \        4        Fb  w  rp\        V4      p\        V4      pV\        P                  8X  g   K3  VP	                  R4      '       g   KL  V P                  V RV 24       Kd  	  V # )z—
Return a list of strings in colon-hex format representing all the link local
IPv6 addresses available on the system, as reported by I{getifaddrs(3)}.
zfe80:Ú%)rO   r   Úsocketr   rB   rK   )ÚretListÚ	interfacerC   Úaddresss       r'   ÚposixGetLinkLocalIPv6AddressesrV   ž   sh   € ð
 €GÜ&1¦mÑ"ˆ	˜7Ü  Ó+ˆ	Ü˜wÓ'ˆØ”V—_‘_Ö$¨×);Ñ);¸G×)DÔ)DØ�N‰N˜g˜Y a¨	 {Ð3Ö4ñ	 '4ð
 €Nr&   c                óØ   € V ^8„  d   Qh/ ^ \         9   d&   \        \        \        \        3,          ,          ;R&   ^\         9   d&   \        \        \        \        3,          ,          ;R&   # )r>   r-   )Ú__conditional_annotations__r   r   Ústrr   )Úformats   "r'   Ú__annotate__r[      sT   € ÷ ñ ÷<ò ”Tœ%¤¤S �/Õ*ñ ñ=÷Fò ”Tœ%¤¤S �/Õ*ñ òGr&   )0rX   Ú__doc__rR   r@   Úctypesr   r   r   r   r   r   r   r	   r
   r   r   r   Úctypes.utilr   r   r   r   Útypingr   r   r   Útwisted.python.compatr   ÚlibcrA   rB   r-   r   r)   r+   r/   r2   r5   rG   r$   rH   ÚargtypesÚrestyperL   rE   rO   rV   r[   )rX   s   @r'   Ú<module>rd      s‘  øðöó
 Û 
÷÷ ÷ ó õ %ß /Ñ /ß #Ñ #å .á‰L˜Ó×#Ð# Ó$€à‡<�<×Ñ˜9×%Ò%¨¯©¸Ô)Aà	�GÐØ	�wÐð.€Oô ð 
�xÐ ð.€Oó ô
ˆiô ôˆyô ôˆyô ô�)ô ô�9ô ô	ˆiô 	ñ �GÓ€	à�ÐØ�ÐØ�(ÐØ‘˜Ó"Ð#Ø‘G˜HÓ%Ð&Ø‘G˜HÓ%Ð&Ø�Ðð€Ô ð �_‰_€
Ù˜yÓ)Ð*€
Ô Ø€
Ô à×Ñ€Ø!�{€Ô òò2ôBr&   