Ϫf .dZddlmZmZmZmZmZmZmZm Z m Z m Z ddl m Z mZm Z edZeZeZeZeZeZeZeZeZeZej2Zeeeeeeeeeg e_ee_ej8Zeeeeege_ee_dZdZGddeZ d Z!d Z"y ) z@ Windows implementation of local network interface enumeration. ) POINTER StructureWinDLLbyrefc_intc_void_pcastcreate_string_buffercreate_unicode_buffer wstring_at)AF_INET6 SOCK_STREAMsocketws2_32iHi'ceZdZdefdefgZy)SOCKET_ADDRESS lpSockaddriSockaddrLengthN)__name__ __module__ __qualname__rr_fields_D/usr/lib/python3/dist-packages/twisted/internet/test/_win32ifaces.pyrrMsx(+.SOCKET_ADDRESS_LIST iAddressCountAddressN)rrrrrr)lnsrSOCKET_ADDRESS_LISTrRs$e,y.2:M.NOrr")r)r!r"s` rmake_SALr#QsPiP rc  ttt}d}t}t dD]W}t |}t |jtdd||t|dd }|r|jr |j}Wnr tdtttd}|dj}t|tt|}d}t!|} g} t |djD]n}||_ |dj"|} t%| j&| j(d| t|}|r td| j+t-| p| D cgc] } d| vs|  c} Scc} 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}. irzWSAIoctl failureizWSAAddressToString failure%)rr rrranger WSAIoctlfilenoSIO_ADDRESS_LIST_QUERYrvalue RuntimeErrorr rr#rr r WSAAddressToStringrrappendr ) ssizeretBytesibufretaddrList addrCountaddressStringBufLengthaddressStringBufretListaddressaddrs rwin32GetLinkLocalIPv6Addressesr<Xs} x%A DwH 1X "4( HHJ.1c4xRSUV  8>>>>D    -..C!-.H ))IC)!456H!,-CDG 8A;,, - 5/1+%%a(     # #  (O   ;< <z"234 5% 4Tt D 44 4s : F F N)#__doc__ctypesrrrrrrr r r r rr rWS2_32SOCKETDWORDLPVOID LPSOCKADDRLPWSAPROTOCOL_INFOLPTSTRLPDWORDLPWSAOVERLAPPED"LPWSAOVERLAPPED_COMPLETION_ROUTINEr(argtypesrestypeWSAAddressToStringWr-r* WSAEFAULTrr#r<rrrrMs   10         %-" ??       & //)52DfgV"$  FYF15r