
    i>                        d dl mZmZ d dlZd dlZd dlZd dlZd dlZej                  dk  Z	e	se
ZneZeZ G d de      Z G d de      Z ej$                         dk(  sd	 ej$                         v r@ G d
 dej&                        Z G d dej&                        Z G d dej&                        Zn? G d dej&                        Z G d dej&                        Z G d dej&                        Zd Zd Zy)    )print_functionunicode_literalsN)   c                        e Zd ZdZ	 ddZd Zy)Adapteran  
    Represents a network interface device controller (NIC), such as a
    network card. An adapter can have multiple IPs.

    On Linux aliasing (multiple IPs per physical NIC) is implemented
    by creating 'virtual' adapters, each represented by an instance
    of this class. Each of those 'virtual' adapters can have both
    a IPv4 and an IPv6 IP address.
    Nc                 <    || _         || _        || _        || _        y Nname	nice_nameipsindex)selfr   r   r   r   s        R/home/ubuntu/myenv/lib/python3.12/site-packages/copyparty/stolen/ifaddr/_shared.py__init__zAdapter.__init__   s&     	
 #  
    c                     dj                  t        | j                        t        | j                        t        | j                        t        | j
                              S )NzEAdapter(name={name}, nice_name={nice_name}, ips={ips}, index={index})r
   )formatreprr   r   r   r   r   s    r   __repr__zAdapter.__repr__4   sI    V]]dii4>>*TXXtzz"	 ^ 
 	
r   r	   )__name__
__module____qualname____doc__r   r    r   r   r   r      s     15,
r   r   c                   <    e Zd ZdZd Zed        Zed        Zd Zy)IPz1
    Represents an IP address of an adapter.
    c                 .    || _         || _        || _        y r	   ipnetwork_prefixr   )r   r!   r"   r   s       r   r   zIP.__init__B   s     
 - #r   c                 8    t        | j                  t               S )zl
        Returns `True` if this IP is an IPv4 address and `False`
        if it is an IPv6 address.
        
isinstancer!   tupler   s    r   is_IPv4z
IP.is_IPv4X   s     dggu---r   c                 6    t        | j                  t              S )zl
        Returns `True` if this IP is an IPv6 address and `False`
        if it is an IPv4 address.
        r$   r   s    r   is_IPv6z
IP.is_IPv6`   s     $''5))r   c                     dj                  t        | j                        t        | j                        t        | j                              S )NzCIP(ip={ip}, network_prefix={network_prefix}, nice_name={nice_name})r    )r   r   r!   r"   r   r   s    r   r   zIP.__repr__h   s@    T[[DGG} 3 344>>* \ 
 	
r   N)	r   r   r   r   r   propertyr'   r)   r   r   r   r   r   r   =   s9    #, . . * *
r   r   DarwinBSDc                   d    e Zd Zdej                  fdej                  fdej                  dz  fgZy)sockaddrsa_len
sa_familiysa_data   N)r   r   r   ctypesc_uint8_fields_r   r   r   r/   r/   w   s2    v~~&6>>*+,
r   r/   c                       e Zd Zdej                  fdej                  fdej
                  fdej                  dz  fdej                  dz  fgZy)	sockaddr_inr0   r1   sin_portsin_addr   sin_zero   N)r   r   r   r4   r5   c_uint16r6   r   r   r   r8   r8   ~   sO    v~~&6>>*)!+,!+,
r   r8   c                       e Zd Zdej                  fdej                  fdej
                  fdej                  fdej                  dz  fdej                  fgZy)	sockaddr_in6r0   r1   	sin6_portsin6_flowinfo	sin6_addr   sin6_scope_idN)r   r   r   r4   r5   r>   c_uint32r6   r   r   r   r@   r@      sV    v~~&6>>*&//*foo.&..2-.foo.
r   r@   c                   J    e Zd Zdej                  fdej
                  dz  fgZy)r/   r1   r2   r3   Nr   r   r   r4   r>   r5   r6   r   r   r   r/   r/      s$    !6??3iRTAT5UVr   c                       e Zd Zdej                  fdej                  fdej
                  dz  fdej
                  dz  fgZy)r8   sin_familiyr9   r:   r;   r<   r=   NrH   r   r   r   r8   r8      sC    FOO,)!+,!+,	
r   c                       e Zd Zdej                  fdej                  fdej
                  fdej                  dz  fdej
                  fgZy)r@   sin6_familiyrA   rB   rC   rD   rE   N)r   r   r   r4   r>   rF   r5   r6   r   r   r   r@   r@      sJ    V__-&//*foo.&..2-.foo.
r   c                    | r=| d   j                   t        j                  k(  rnt        j                  | t        j
                  t                    }t        t        |d   j                              }t        t        j                  |            }|S | d   j                   t        j                  k(  rt        j                  | t        j
                  t                    }|d   j                  }t        t        |d   j                               }t        t        j                  |            }|d   j"                  }|||fS y )Nr   )r1   socketAF_INETr4   castPOINTERr8   bytes	bytearrayr:   U	ipaddress
ip_addressAF_INET6r@   rB   rC   rE   )sockaddr_ptripv4ippackedr!   ipv6flowinfoscope_ids          r   sockaddr_to_ipr^      s     ?%%7;;|V^^K-HIDYtAw'7'789H9''12BI!_''6??:;;|V^^L-IJDAw,,HYtAw'8'89:H9''12BAw,,H(++r   c                 l    d}t        | j                        D ]  }t        |       |z	  dz  s|dz   } |S )Nr      )rangemax_prefixlenint)addressprefix_lengthis      r   ipv6_prefixlengthrg      sD    M7(() .w<1q )A-M. r   )
__future__r   r   r4   platformrN   sysrU   version_infoPY2strrT   unicodexrangera   objectr   r   system	Structurer/   r8   r@   r^   rg   r   r   r   <module>rs      s    7    
 	

AAE'
f '
T0
 0
f 8?? E_X__->$>
6## 

f&& 

v'' 
W6## W
f&& 

v'' 
&r   