
    Yf              	       (   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j        Zeeeeeeeeeg	e_        ee_        ej        Zeeeeege_        ee_        dZdZ G d de          Z d	 Z!d
 Z"dS )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dS )SOCKET_ADDRESS
lpSockaddriSockaddrLengthN)__name__
__module____qualname__r   r   _fields_     T/var/www/html/env/lib/python3.11/site-packages/twisted/internet/test/_win32ifaces.pyr   r   M   s#        x(+<e*DEHHHr   r   c                 2      G  fddt                     }|S )Nc                   &    e Zd Zdefde z  fgZdS )%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   sI    P P P P P P Pi P P P r   c                  z   t          t          t                    } d}t                      }t	          d          D ]]}t          |          }t          |                                 t          dd||t          |          dd	  	        }|r|j
        r|j
        }] |rt          d          t          |t          t          d                              }|d         j        }t          |t          t          |                              }d}t!          |          }	g }
t	          |d         j                  D ]y}||_
        |d         j        |         }t%          |j        |j        d|	t          |                    }|rt          d          |
                    t-          |	                     zd |
D             S )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 failurec                     g | ]}d |v |	S )%r   ).0addrs     r   
<listcomp>z2win32GetLinkLocalIPv6Addresses.<locals>.<listcomp>   s    444TtDr   )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addresss               r   win32GetLinkLocalIPv6Addressesr?   X   s    	x%%ADwwH1XX  "4((HHJJ.1c4xRSUV
 
  	8> 	>DD  /-...C!--..H)IC)!4!45566H!,-CDDG8A;,-- 5 5/1+%a( #(OO
 
  	=;<<<z"233444444W4444r   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WSAAddressToStringWr1   r.   	WSAEFAULTr   r#   r?   r   r   r   <module>rP      s                           1 0 0 0 0 0 0 0 0 0					
 	
%- " ?
	
	
	&
    / )52DfgV  "   $ 	F F F F FY F F F  15 15 15 15 15r   