
    8j                        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 j        fd e j        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ge_        e j                            d"          Zd#ed$ed%eej                 fd&Z d*d(e!d%eej"                 fd)Z#dS )+    N)wintypes)IterableListo            c                   N    e Zd Zd ej        ej                  fdej        fgZ	dS )SOCKET_ADDRESS
lpSockaddriSockaddrLengthN)
__name__
__module____qualname__ctypesPOINTERsharedsockaddrr   INT_fields_     C/home/user/adhan/venv/lib/python3.11/site-packages/ifaddr/_win32.pyr   r   $   s5        ~v~fo>>?BSU]UaAbcHHHr   r   c                       e Zd ZdS )IP_ADAPTER_UNICAST_ADDRESSNr   r   r   r   r   r   r   r   (           Dr   r   LengthFlagsNextAddressPrefixOriginSuffixOriginDadStateValidLifetimePreferredLifetimeLeaseLifetimeOnLinkPrefixLengthc                       e Zd ZdS )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              #     K   g }	 |                     |           |j        sn|j        d         }+|D ]Y}t          j        |j        j                  }|J d|j        j         d            |j        }t          j        |||           V  Zd S )NTr   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"7?#=>>~~\1K\\\~~~ 3iNI666666	7 7r   Finclude_unconfiguredc           	         t          j        d          }t          }|t          k    rt          j        |j                  }t                              t          j        t                    t          j        d          d t          j	        |          t          j	        |                    }|t          k    |t          k    rt          j                    g }t                              |          }	 |                    |           |j        sn|j        d         }+g }|D ]}|j                                        }|j        }	|j        }
|j        r[t+          |j        |j        d                   }t/          |          }|                    t1          j        ||	||
                     | r+|                    t1          j        ||	g |
                     |S )Ni <  r   T)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1"F
)
)
)34E4KLL..N9%%N1L''L*++
 
 )
)
) o M'33MBBL,\***  	#(+	, F% L L '..00 ,	$+ 	L1)<+KA+N C s))CMM&.y#UKKKLLLL! 	LMM&.y"EJJJKKK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 d d d dV% d d d	 	 	 	 	!1 	 	 	
 x~hn^V^6778V]#V]#hn%(.)hn%6>*'  #	 	 	 	 	6+ 	 	 	
 x~^V^0112FO$NFN+EFFGFO,fo.fo.&"#F$%V%&!   =$$Z007777fi7 7 7 7&- -t -8P - - - - - -r   