
    |;i                        d dl Z d dlZd dlZd dlZd dlZd dlmZmZ d dl	m
Z  G d dej                        Zd ej                  e      fdej                  fdej                   fd ej                  ej"                        fd	 ej                  ej"                        fge_         ej&                  ej(                  j+                   e j,                         d    d
k(  rdnd      d      Zddedeej2                     fdZy)    N)IterableOptionalc                       e Zd Zy)ifaddrsN)__name__
__module____qualname__     @/home/ubuntu/myenv/lib/python3.12/site-packages/ifaddr/_posix.pyr   r   #   s    r   r   ifa_nextifa_name	ifa_flagsifa_addrifa_netmaskSunOSsocketcT)	use_errnoinclude_unconfiguredreturnc                     t        j                  t                     x}}t        j	                  t        j
                  |            }|dk7  r3t        j                         }t        |t        j                  |            t        j                         dt        dt        t        j                     dd ffd}|r|d   j                   j#                  d      }t        j$                  |d   j&                        }|r-|d   j(                  rM|d   j(                  d   j*                  s1|d   j&                  d   j*                  |d   j(                  d   _        t        j$                  |d   j(                        }t-        |t.              r7t        |d         }	t        j0                  t3        j4                  |	            }
nG|J d|d   j(                   d	       t        d
|z         }	t3        j6                  |	      j8                  }
t        j                  ||
|      } |||       n| r	 ||d        |d   j:                  }|rt        j=                  |       j?                         S )Nr   adapter_nameipr   c                     | vr4d }	 t        j                  |       }t	        j
                  | | g |      | <   ||    j                  j                  |       y y # t        t        f$ r Y Ow xY w)N)index)r   if_nametoindexOSErrorAttributeErrorsharedAdapteripsappend)r   r   r   r"   s      r   add_ipzget_adapters.<locals>.add_ip<   s    s"E --l; !'|\2UZ [C>!!((,  ^, s   A A.-A.zUTF-8)encodingzsockaddr_to_ip(z) returned Nonez0.0.0.0/) ctypesPOINTERr   libc
getifaddrsbyref	get_errnor   osstrerrorcollectionsOrderedDictstrr   r    IPr   decodesockaddr_to_ipr   r   
sa_familiy
isinstancetupleipv6_prefixlength	ipaddressIPv6AddressIPv4Network	prefixlenr   freeifaddrsvalues)r   addr0addrretvalenor$   nameip_addrnetmask
netmaskStrr;   r   r"   s               @r   get_adaptersrF   2   s   *6>>'*,,ED__V\\$/0F{ c2;;s+,,

!
!
#C-S -hvyy&9 -d - Aw&&&8''Q(8(89Aw""47+>+>q+A+L+L48G4D4DQ4G4R4RQ##A&1++DG,?,?@G'5) _
"44Y5J5J:5VW	*bod1g>Q>Q=RRa,bb* g!56
%11*=GG	7It4B4#tT"Aw' * 	U::<r   )F)r,   ctypes.utilr&   r8   r.   r   typingr   r   ifaddr._shared_sharedr    	Structurer   r'   c_char_pc_uintsockaddr_fields_CDLLutilfind_libraryunamer(   boolr!   rF   r
   r   r   <module>rU      s   , 
     % 
	f 	
 ()!&-- 01NFNN6??34  v{{6;;++
18PHVYZfjk.t .8P .r   