
    Vh              	       .   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_     R/home/dcms/DCMS/lib/python3.12/site-packages/twisted/internet/test/_win32ifaces.pyr   r   M   s    x(+<e*DEHr   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wH1X "4(HHJ.1c4xRSUV
 8>>>>D  -..C!-.H))IC)!456H!,-CDG8A;,,- 5/1+%%a( ##(O
 ;<<z"2345 %4T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				
 	
%- " ??
	
	
	&
    // )52DfgV  "   $ 	FY F15r   