
    |;i                        d dl Z d dl mZ d dlmZmZ d dlmZ d ZdZ	dZ
dZdZd Z G d d	e j                        Z G d
 de j                        Zdej"                  fdej$                  fd e j&                  e      fdefde j(                  fde j(                  fde j(                  fdej"                  fdej"                  fdej"                  fde j*                  fge_         G d de j                        Zdej"                  fdej$                  fd e j&                  e      fde j0                  fd e j&                  e      fde j2                  fde j2                  fde j2                  fde j4                  fd e j4                  fd!e j4                  fge_        e j6                  j9                  d"      Zd#ed$ed%eej>                     fd&Z d)d'e!d%eejD                     fd(Z#y)*    N)wintypes)IterableListo            c                   d    e Zd Zd ej                  ej                        fdej                  fgZ	y)SOCKET_ADDRESS
lpSockaddriSockaddrLengthN)
__name__
__module____qualname__ctypesPOINTERsharedsockaddrr   INT_fields_     @/home/ubuntu/myenv/lib/python3.12/site-packages/ifaddr/_win32.pyr   r   $   s-    ~v~~foo>?BSU]UaUaAbcHr   r   c                       e Zd Zy)IP_ADAPTER_UNICAST_ADDRESSNr   r   r   r   r   r   r   r   (       r   r   LengthFlagsNextAddressPrefixOriginSuffixOriginDadStateValidLifetimePreferredLifetimeLeaseLifetimeOnLinkPrefixLengthc                       e Zd Zy)IP_ADAPTER_ADDRESSESNr   r   r   r   r*   r*   ;   r   r   r*   IfIndexAdapterNameFirstUnicastAddressFirstAnycastAddressFirstMulticastAddressFirstDnsServerAddress	DnsSuffixDescriptionFriendlyNameIphlpapi	nice_nameaddressreturnc              #   Z  K   g }	 |j                  |       |j                  sn|j                  d   }.|D ]q  }t        j                  |j                  j
                        }|J d|j                  j
                   d       |j                  }t        j                  |||        s y w)Nr   zsockaddr_to_ip(z) returned None)appendr    r   sockaddr_to_ipr!   r   r(   IP)r5   r6   	addressesipnetwork_prefixs        r   enumerate_interfaces_of_adapterr?   Q   s     
 I
!||,,q/	   7""7??#=#=>~\1K1K0LO\\~ 33iiNI66	7s   B)B+include_unconfiguredc           	         t        j                  d      }t        }|t        k(  rt        j                  |j
                        }t        j                  t        j                  t              t        j                  d      d t        j                  |      t        j                  |            }|t        k(  r|t        k7  rt        j                         g }t        j                        }	 |j                  |       |j                  sn|j                  d   }.g }|D ]  }|j                   j#                         }|j$                  }	|j&                  }
|j(                  rWt+        |j,                  |j(                  d         }t/        |      }|j                  t1        j2                  ||	||
             | s|j                  t1        j2                  ||	g |
              |S )Ni <  r   )index)r   ULONGERROR_BUFFER_OVERFLOWr   create_string_buffervalueiphlpapiGetAdaptersAddresses	AF_UNSPECbyrefNO_ERRORWinErrorr*   from_bufferr9   r    r,   decoder2   r+   r-   r?   r3   listr   Adapter)r@   addressbuffersizeretvaladdressbufferaddress_infosaddress_inforesultadapter_infonamer5   rB   ipss               r   get_adaptersrZ   d   s    !y1"F
)
)334E4K4KL..NN9%NN1LL'LL*+
 )
) oo M'33MBL
\*  #((+	  F% L ''..0 ,,	$$++1))<+K+KA+NC s)CMM&..y#UKL!MM&..y"EJKL  Mr   )F)$r   r   typingr   r   ifaddr._shared_sharedr   rK   rD   MAX_ADAPTER_NAME_LENGTHMAX_ADAPTER_DESCRIPTION_LENGTHMAX_ADAPTER_ADDRESS_LENGTHrI   	Structurer   r   rC   DWORDr   c_uintc_uint8r   r*   c_char_pc_void_p	c_wchar_pwindllLoadLibraryrG   strr;   r?   boolrP   rZ   r   r   r   <module>rl      s  ,   !   !$  	dV%% d	!1!1 	
 x~~hnn^V^^678V]]#V]]#hnn%(..)hnn%6>>*'  #	6++ 	
 x~~^V^^012FOO$NFNN+EFGFOO,foo.foo.&""#F$$%V%%&!   ==$$Z07777fii7&-t -8P -r   