Ë
    oj‡  ã            	       ó.  — d Z ddlmZmZmZmZmZmZmZm	Z	m
Z
mZ ddlmZmZmZ  ed«      ZeZeZeZeZeZeZeZeZeZej2                  Zeeeeeeeeeg	e_        ee_        ej8                  Zeeeeege_        ee_        dZdZ G d„ de«      Z d	„ Z!d
„ Z"y)z@
Windows implementation of local network interface enumeration.
é    )
ÚPOINTERÚ	StructureÚWinDLLÚbyrefÚc_intÚc_void_pÚcastÚcreate_string_bufferÚcreate_unicode_bufferÚ
wstring_at)ÚAF_INET6ÚSOCK_STREAMÚsocketÚws2_32i  Hi'  c                   ó   — e Zd ZdefdefgZy)ÚSOCKET_ADDRESSÚ
lpSockaddrÚiSockaddrLengthN)Ú__name__Ú
__module__Ú__qualname__r   r   Ú_fields_© ó    úD/usr/lib/python3/dist-packages/twisted/internet/test/_win32ifaces.pyr   r   M   s   „ Ø˜xÐ(Ð+<¸eÐ*DÐE�Hr   r   c                 ó*   ‡ —  G ˆ fd„dt         «      }|S )Nc                   ó&   •— e Zd ZdefdeW ° z  fgZy)ú%make_SAL.<locals>.SOCKET_ADDRESS_LISTÚiAddressCountÚAddressN)r   r   r   r   r   r   )Úlns   €r   ÚSOCKET_ADDRESS_LISTr   R   s   ø„ Ø$ eÐ,¨y¸.É2Ñ:MÐ.NÐO‰r   r"   )r   )r!   r"   s   ` r   Úmake_SALr#   Q   s   ø€ öPœiô Pð Ðr   c                  ó   — t        t        t        «      } d}t        «       }t	        d«      D ]W  }t        |«      }t        | j                  «       t        dd||t        |«      dd«	      }|r|j                  r|j                  }ŒW n rt        d«      ‚t        t        t        d«      «      «      }|d   j                  }t        |t        t        |«      «      «      }d}t!        |«      }	g }
t	        |d   j                  «      D ]n  }||_
        |d   j"                  |   }t%        |j&                  |j(                  d|	t        |«      «      }|rt        d«      ‚|
j+                  t-        |	«      «       Œp |
D �cg c]	  }d|v sŒ|‘Œ c}S c c}w )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{WSAIoctl}/C{SIO_ADDRESS_LIST_QUERY}.
    i   é   r   zWSAIoctl failurei   zWSAAddressToString failureú%)r   r   r   r   Úranger
   ÚWSAIoctlÚfilenoÚSIO_ADDRESS_LIST_QUERYr   ÚvalueÚRuntimeErrorr	   r   r#   r   r   r    ÚWSAAddressToStringr   r   Úappendr   )ÚsÚsizeÚretBytesÚiÚbufÚretÚaddrListÚ	addrCountÚaddressStringBufLengthÚaddressStringBufÚretListÚaddressÚaddrs                r   Úwin32GetLinkLocalIPv6Addressesr<   X   s}  € ô 	ŒxœÓ%€AØ€DÜ‹w€HÜ�1‹Xò ˆÜ" 4Ó(ˆÜØ�H‰H‹JÔ.°°1°c¸4ÄÀxÃÐRSÐUVó
ˆñ �8—>’>Ø—>‘>‰Dáðñ  ÜÐ-Ó.Ð.ä�Cœ¤¨!£Ó-Ó.€HØ˜‘×)Ñ)€IÜ�Cœ¤¨)Ó!4Ó5Ó6€Hà!ÐÜ,Ð-CÓDÐà€GÜ�8˜A‘;×,Ñ,Ó-ò 5ˆØ/ˆŒØ˜1‘+×%Ñ% aÑ(ˆÜ Ø×ÑØ×#Ñ#ØØÜ�(‹Oó
ˆñ ÜÐ;Ó<Ð<Ø�‰”zÐ"2Ó3Õ4ð5ð %Ö4�T¨¨tªŠDÒ4Ð4ùÒ4s   Å:	FÆFN)#Ú__doc__Úctypesr   r   r   r   r   r   r	   r
   r   r   r   r   r   ÚWS2_32ÚSOCKETÚDWORDÚLPVOIDÚ
LPSOCKADDRÚLPWSAPROTOCOL_INFOÚLPTSTRÚLPDWORDÚLPWSAOVERLAPPEDÚ"LPWSAOVERLAPPED_COMPLETION_ROUTINEr(   ÚargtypesÚrestypeÚWSAAddressToStringWr-   r*   Ú	WSAEFAULTr   r#   r<   r   r   r   ú<module>rM      så   ðñ÷÷ ÷ ÷ 1Ñ 0á	�Ó	€à	€Ø€Ø	€Ø€
ØÐ Ø	€Ø
€Ø€Ø%-Ð "ð �?‰?€à
Ø	Ø
Ø	Ø
Ø	ØØØ&ð
€Ô ð €Ô ð ×/Ñ/Ð Ø)¨5Ð2DÀfÈgÐVÐ Ô Ø"Ð Ô ð $Ð Ø€	ôF�Yô Fòó15r   