§
    Ètºf%  ã            	       ó  — U d Z ddlZddlZddlmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZ ddlmZ ddlmZmZmZ ddlmZmZmZ ddlmZ  e ed¦  «        pd	¦  «        Zej                             d
¦  «        sej        dk    rde
fde
fgZeeeef                  e d<   ndefgZeeeef                  e d<    G d„ de¦  «        Z! G d„ de¦  «        Z" G d„ de¦  «        Z# G d„ de¦  «        Z$ G d„ de¦  «        Z% G d„ de¦  «        Z& ee&¦  «        Z'de'fdefdefd ee#¦  «        fd ee#¦  «        fd  ee#¦  «        fd!efge&_(        ej)        Z) ee'¦  «        ge)_*        ee)_+        ej,        Z,e'ge,_*        d"„ Z-d#„ Z.d$„ Z/dS )%z>
POSIX implementation of local network interface enumeration.
é    N)ÚCDLLÚPOINTERÚ	StructureÚc_char_pÚc_intÚc_ubyteÚc_uint8Úc_uint32Úc_ushortÚc_void_pÚcastÚpointer)Úfind_library)ÚAF_INETÚAF_INET6Ú	inet_ntop)ÚAnyÚListÚTuple)ÚnativeStringÚcÚ ÚfreebsdÚdarwinÚsin_lenÚ
sin_familyÚ_sockaddrCommonc                   ó   — e Zd Zd edz  fgZdS )Úin_addré   N©Ú__name__Ú
__module__Ú__qualname__r   Ú_fields_© ó    úa/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/twisted/internet/test/_posixifaces.pyr   r   ,   s!   € € € € € à	�G˜a‘KÐ ð€H€H€Hr'   r   c                   ó   — e Zd Zdedz  fgZdS )Úin6_addrr   é   Nr!   r&   r'   r(   r*   r*   2   s!   € € € € € à	�G˜b‘LÐ!ð€H€H€Hr'   r*   c                   ó   — e Zd Zedefgz   ZdS )ÚsockaddrÚsin_portN)r"   r#   r$   r   r   r%   r&   r'   r(   r-   r-   8   s%   € € € € € ØØ	�XÐð"ñ €H€H€Hr'   r-   c                   ó$   — e Zd Zedefdefgz   ZdS )Úsockaddr_inr.   Úsin_addrN)r"   r#   r$   r   r   r   r%   r&   r'   r(   r0   r0   >   s-   € € € € € ØØ	�XÐØ	�WÐð"ñ €H€H€Hr'   r0   c                   ó*   — e Zd Zedefdefdefgz   ZdS )Úsockaddr_in6r.   Úsin_flowinfor1   N)r"   r#   r$   r   r   r
   r*   r%   r&   r'   r(   r3   r3   E   s5   € € € € € ØØ	�XÐØ	˜Ð"Ø	�XÐð"ñ €H€H€Hr'   r3   c                   ó   — e Zd ZdS )ÚifaddrsN)r"   r#   r$   r&   r'   r(   r6   r6   M   s   € € € € € Ø€Dr'   r6   Úifa_nextÚifa_nameÚ	ifa_flagsÚifa_addrÚifa_netmaskÚifa_dstaddrÚifa_datac                 ó�   — t           j                             d¦  «        r&|dd…         dk    r|dd…         dz   |dd…         z   S |S )až  
    On FreeBSD, kill the embedded interface indices in link-local scoped
    addresses.

    @param family: The address family of the packed address - one of the
        I{socket.AF_*} constants.

    @param packed: The packed representation of the address (ie, the bytes of a
        I{in_addr} field).
    @type packed: L{bytes}

    @return: The packed address with any FreeBSD-specific extra bits cleared.
    @rtype: L{bytes}

    @see: U{https://twistedmatrix.com/trac/ticket/6843}
    @see: U{http://www.freebsd.org/doc/en/books/developers-handbook/ipv6.html#ipv6-scope-index}

    @note: Indications are that the need for this will be gone in FreeBSD >=10.
    r   Né   s   þ€s     r    )ÚsysÚplatformÚ
startswith)ÚfamilyÚpackeds     r(   Ú_maybeCleanupScopeIndexrE   d   sS   € õ( „|×Ò˜yÑ)Ô)ð 5¨f°R°a°R¬j¸KÒ.GÐ.GØ�b�q�bŒz˜KÑ'¨&°°°¬*Ñ4Ð4Ø€Mr'   c                  óø  — t          ¦   «         } t          t          | ¦  «        ¦  «        dk     rt          ¦   «         ‚g }	 | �r| d         j        rö| d         j        d         j        }|t          k    r.t          | d         j        t          t          ¦  «        ¦  «        }n;|t          k    r.t          | d         j        t          t          ¦  «        ¦  «        }nd}|rht          |d         j        j        dd…         ¦  «        }t          ||¦  «        }|                     | d         j        |t%          ||¦  «        f¦  «         | d         j        } | �°t)          | ¦  «         n# t)          | ¦  «         w xY w|S )z—
    Call C{getifaddrs(3)} and return a list of tuples of interface name, address
    family, and human-readable address representing its results.
    r   N)Ú	ifaddrs_pÚ
getifaddrsr   ÚOSErrorr:   r   r   r   r   r0   r   r3   Úbytesr1   r   rE   Úappendr8   r   r7   Úfreeifaddrs)r6   ÚresultsrC   ÚaddrrD   s        r(   Ú_interfacesrO   }   sm  € õ
 ‰kŒk€GÝ•'˜'Ñ"Ô"Ñ#Ô# aÒ'Ð'Ý‰iŒiˆØ€GðØñ 	*Ø�qŒzÔ"ð Ø  œÔ,¨QÔ/Ô:�Ø�WÒ$Ð$Ý ¨¤
Ô 3µW½[Ñ5IÔ5IÑJÔJ�D�DØ�xÒ'Ð'Ý ¨¤
Ô 3µW½\Ñ5JÔ5JÑKÔK�D�Dà�Dàð Ý" 4¨¤7Ô#3Ô#;¸A¸A¸AÔ#>Ñ?Ô?�FÝ4°V¸VÑDÔD�FØ—N’NØ  œÔ,¨fµiÀÈÑ6OÔ6OÐPñô ð ð ˜a”jÔ)ˆGð# ñ 	*õ& 	�GÑÔÐÐø��GÑÔÐÐøøøØ€Ns   Á DE& Å&E7c                  óî   — g } t          ¦   «         D ]c\  }}}t          |¦  «        }t          |¦  «        }|t          j        k    r/|                     d¦  «        r|                      |› d|› �¦  «         Œd| S )z£
    Return a list of strings in colon-hex format representing all the link local
    IPv6 addresses available on the system, as reported by I{getifaddrs(3)}.
    zfe80:ú%)rO   r   Úsocketr   rB   rK   )ÚretListÚ	interfacerC   Úaddresss       r(   ÚposixGetLinkLocalIPv6AddressesrV   ž   sƒ   € ð
 €GÝ&1¡m¤mð 5ð 5Ñ"ˆ	�6˜7Ý  Ñ+Ô+ˆ	Ý˜wÑ'Ô'ˆØ•V”_Ò$Ð$¨×);Ò);¸GÑ)DÔ)DÐ$Ø�NŠN˜gÐ3Ð3¨	Ð3Ð3Ñ4Ô4Ð4øØ€Nr'   )0Ú__doc__rR   r@   Úctypesr   r   r   r   r   r   r	   r
   r   r   r   r   Úctypes.utilr   r   r   r   Útypingr   r   r   Útwisted.python.compatr   ÚlibcrA   rB   r   ÚstrÚ__annotations__r   r*   r-   r0   r3   r6   rG   r%   rH   ÚargtypesÚrestyperL   rE   rO   rV   r&   r'   r(   ú<module>ra      sž  ððð ð ð
 €€€Ø 
€
€
€
ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð %Ð $Ð $Ð $Ð $Ð $Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ð #à .Ð .Ð .Ð .Ð .Ð .à€tˆLˆL˜ÑÔÐ# Ñ$Ô$€à„<×Ò˜9Ñ%Ô%ð ¨¬¸Ò)AÐ)Aà	�GÐØ	�wÐð.€O�T˜%  S œ/Ô*ð ð ñ ð ð 
�xÐ ð.€O�T˜%  S œ/Ô*ð ð ñ ð
ð ð ð ð ˆiñ ô ð ðð ð ð ð ˆyñ ô ð ðð ð ð ð ˆyñ ô ð ðð ð ð ð �)ñ ô ð ðð ð ð ð �9ñ ô ð ð	ð 	ð 	ð 	ð 	ˆiñ 	ô 	ð 	ð ˆG�GÑÔ€	à�ÐØ�ÐØ�(ÐØ��˜Ñ"Ô"Ð#Ø�G�G˜HÑ%Ô%Ð&Ø�G�G˜HÑ%Ô%Ð&Ø�Ðð€Ô ð Œ_€
Ø�w˜yÑ)Ô)Ð*€
Ô Ø€
Ô àÔ€Ø!�{€Ô ðð ð ð2ð ð ðBð ð ð ð r'   