
    i                        S SK r S SKrS SKrS SKrS SKJrJrJrJr   " S S\	5      r
\r\\\\4   r " S S\	5      r\R                   " 5       S:X  d  S\R                   " 5       ;   a@   " S	 S
\ R"                  5      r " S S\ R"                  5      r " S S\ R"                  5      rO? " S S
\ R"                  5      r " S S\ R"                  5      r " S S\ R"                  5      rSSS\\\\4      4S jrS\R,                  S\4S jrg)    N)ListOptionalTupleUnionc                   T    \ rS rSrSrSS\S\S\S   S\\   S	S4
S
 jjr	S	\4S jr
Srg)Adapter   aR  
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.
Nname	nice_nameipsIPindexreturnc                 4    Xl         X l        X0l        X@l        g Nr
   r   r   r   )selfr
   r   r   r   s        E/home/sebas/venvs/catt/lib/python3.13/site-packages/ifaddr/_shared.py__init__Adapter.__init__)   s     	
 #  
    c                     SR                  [        U R                  5      [        U R                  5      [        U R                  5      [        U R
                  5      S9$ )NzEAdapter(name={name}, nice_name={nice_name}, ips={ips}, index={index})r   )formatreprr
   r   r   r   r   s    r   __repr__Adapter.__repr__=   sJ    V]]diiD,@d488n\`aeakak\l ^ 
 	
r   )r   r   r
   r   r   )__name__
__module____qualname____firstlineno____doc__strr   r   intr   r   __static_attributes__ r   r   r   r      sE    S S tDz (SV- cg (
# 
r   r   c                   z    \ rS rSrSrS\\\4   S\S\	SS4S jr
\S\4S	 j5       r\S\4S
 j5       rS\	4S jrSrg)r   J   z)
Represents an IP address of an adapter.
ipnetwork_prefixr   r   Nc                 (    Xl         X l        X0l        g r   r)   r*   r   )r   r)   r*   r   s       r   r   IP.__init__O   s     
 - #r   c                 @    [        U R                  [        5      (       + $ )zT
Returns `True` if this IP is an IPv4 address and `False`
if it is an IPv6 address.

isinstancer)   tupler   s    r   is_IPv4
IP.is_IPv4c   s     dggu---r   c                 6    [        U R                  [        5      $ )zT
Returns `True` if this IP is an IPv6 address and `False`
if it is an IPv4 address.
r/   r   s    r   is_IPv6
IP.is_IPv6k   s     $''5))r   c                     SR                  [        U R                  5      [        U R                  5      [        U R                  5      S9$ )NzCIP(ip={ip}, network_prefix={network_prefix}, nice_name={nice_name})r,   )r   r   r)   r*   r   r   s    r   r   IP.__repr__s   sB    T[[DGG}T$2E2E-FRVW[WeWeRf \ 
 	
r   r,   )r   r   r    r!   r"   r   _IPv4Address_IPv6Addressr$   r#   r   propertyboolr2   r5   r   r%   r&   r   r   r   r   J   sv    #5|!;< #c #^a #fj #( . . . * * *
# 
r   r   DarwinBSDc                   l    \ rS rSrS\R
                  4S\R
                  4S\R
                  S-  4/rSrg)sockaddr   sa_len
sa_familiysa_data   r&   N)r   r   r    r!   ctypesc_uint8_fields_r%   r&   r   r   r@   r@      s2    v~~&6>>*+,
r   r@   c                       \ rS rSrS\R
                  4S\R
                  4S\R                  4S\R
                  S-  4S\R
                  S-  4/rS	rg
)sockaddr_in   rB   rC   sin_portsin_addr   sin_zero   r&   N)	r   r   r    r!   rF   rG   c_uint16rH   r%   r&   r   r   rJ   rJ      sO    v~~&6>>*)!+,!+,
r   rJ   c                       \ rS rSrS\R
                  4S\R
                  4S\R                  4S\R                  4S\R
                  S-  4S\R                  4/rS	r	g
)sockaddr_in6   rB   rC   	sin6_portsin6_flowinfo	sin6_addr   sin6_scope_idr&   N)
r   r   r    r!   rF   rG   rQ   c_uint32rH   r%   r&   r   r   rS   rS      sV    v~~&6>>*&//*foo.&..2-.foo.
r   rS   c                   R    \ rS rSrS\R
                  4S\R                  S-  4/rSrg)r@      rC   rD   rE   r&   N	r   r   r    r!   rF   rQ   rG   rH   r%   r&   r   r   r@   r@      s$    !6??3iRTAT5UVr   c                       \ rS rSrS\R
                  4S\R
                  4S\R                  S-  4S\R                  S-  4/rSrg	)
rJ      sin_familiyrL   rM   rN   rO   rP   r&   Nr]   r&   r   r   rJ   rJ      sC    FOO,)!+,!+,	
r   c                       \ rS rSrS\R
                  4S\R
                  4S\R                  4S\R                  S-  4S\R                  4/rSr	g	)
rS      sin6_familiyrU   rV   rW   rX   rY   r&   N)
r   r   r    r!   rF   rQ   rZ   rG   rH   r%   r&   r   r   rS   rS      sJ    V__-&//*foo.&..2-.foo.
r   sockaddr_ptrzctypes.pointer[sockaddr]r   c                    U (       GaD  U S   R                   [        R                  :X  aq  [        R                  " U [        R
                  " [        5      5      n[        [        US   R                  5      5      n[        [        R                  " U5      5      nU$ U S   R                   [        R                  :X  a  [        R                  " U [        R
                  " [        5      5      nUS   R                  n[        [        US   R                   5      5      n[        [        R                  " U5      5      nUS   R"                  nX5U4$ g )Nr   )rC   socketAF_INETrF   castPOINTERrJ   bytes	bytearrayrM   r#   	ipaddress
ip_addressAF_INET6rS   rV   rW   rY   )rd   ipv4ippackedr)   ipv6flowinfoscope_ids          r   sockaddr_to_iprt      s    ?%%7;;|V^^K-HIDYtAw'7'789HY))(34BI!_''6??:;;|V^^L-IJDAw,,HYtAw'8'89:HY))(34BAw,,H(++r   addressc                 |    Sn[        U R                  5       H   n[        U 5      U-	  S-  (       d  M  US-   nM"     U$ )Nr      )rangemax_prefixlenr$   )ru   prefix_lengthis      r   ipv6_prefixlengthr|      sB    M7(()w<1q  )A-M * r   )rF   rf   rl   platformtypingr   r   r   r   objectr   r#   r9   r$   r:   r   system	Structurer@   rJ   rS   rt   IPv6Addressr|   r&   r   r   <module>r      s  ,     / /"
f "
L  S#s]#,
 ,
^ ?? EX__->$>
6## 

f&& 

v'' 
W6## W
f&& 

v'' 
!; |]iOiIj@k "y44  r   