File: //opt/saltstack/salt/lib/python3.10/site-packages/salt/utils/__pycache__/network.cpython-310.pyc
o
�N�gE% � @ sP d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl
Z
ddlZddlm
Z
mZ ddlmZmZ ddlZddlZddlZddlZddlZddlmZ ddlmZmZ ddlmZ ddlm Z zddl!Zd Z"W n e#y d
Z"Y nw e�$e%�Z&zddl'Z'ddl(Z'e'j)�*e'j+�,d��Z-e-j.Z/W n
e#e0e1e2fy� Y nw G dd
� d
�Z3e3� Z4e4j5Z6dd� Z7dd� Z8dd� Z9dd� Z:dd� Z;e j<dfdd�Z=dd� Z>dd� Z?dd� Z@d d!� ZAd"d#� ZBd$d%� ZCd&d'� ZDd(d)� ZEd*d+� ZFd,d-� ZGed!�d�d.d/��ZHd0d1� ZId2d3� ZJd4d5� ZKd6d7� ZLd8d9� ZMd:d;� ZNd<d=� ZOd>d?� ZPd�d@dA�ZQd�dBdC�ZRed#�d�dDdE��ZSed%�d�dFdG��ZTd�dHdI�ZUedJ�d�dKdJ��ZVedL�d�dMdL��ZWedN�d�dOdN��ZXd�dPdQ�ZYedR�d�dSdR��ZZdTdU� Z[edV�d�dWdV��Z\dXdY� Z]edZ�d�d[dZ��Z^d�d]d^�Z_d_d`� Z`dadb� Zadcdd� Zbdedf� Zcdgdh� Zddidj� Zedkdl� Zfdmdn� Zgdodp� Zhdqdr� Zidsdt� Zjdudv� Zkdwdx� Zldydz� Zmd{d|� Znd}d~� Zod�dd��Zpd�d�� Zqd�d�� Zrd�d�� Zsd�d�� Ztd�d�� Zud�d�� Zvd�d�d��Zwd�d�d��Zxd�d�� Zyd�d�d��Zzd�d�d��Z{d�d�d��Z| �d�d�d��Z}d�d�d��Z~d�d�d��Z
�d�d�d��Z� d�d�d��Z� d�d�d��Z�d�d�d��Z�d�d�d��Z�d�d�� Z�d�d�� Z�d�d�� Z�d�d�� Z�d�d�� Z�d�d�� Z�d�d�� Z�d�d�� Z�d�d�� Z�d�d�� Z�d�d�� Z�d�d�� Z�d�dÄ Z�edăd�d�dĄ�Z�edǃd�dDŽ �Z�d�dʄ Z�ed˃d�d�d˄�Z�d�d΄ Z�d�dЄ Z�edуd�dф �Z�edӃd�dӄ �Z�d�d�dքZ�dS )�z:
Define some generic socket functions for network modules
� N)�Mapping�Sequence)�
ascii_letters�digits)� ipaddress)�SaltClientError�SaltSystemExit)�jinja_filter)�VersionTF�cc @ s* e Zd ZdZd dd�Zdd� Zdd� ZdS )
�
Interfaces��
interfacesNc C s |d u ri }|| _ d S �Nr
)�selfr � r �F/opt/saltstack/salt/lib/python3.10/site-packages/salt/utils/network.py�__init__5 s
zInterfaces.__init__c O s | j st � | _ | j S r r
)r �args�kwargsr r r �__call__: s zInterfaces.__call__c C s
i | _ d S r r
�r r r r �clear? s
zInterfaces.clearr )�__name__�
__module__�__qualname__� __slots__r r r r r r r r 2 s
r c s, t t d � d�� fdd�| dd� D ��S )zS
Sanitize host string.
https://tools.ietf.org/html/rfc1123#section-2.1
z.-_� c s g | ]}|� v r|�qS r r )�.0r �ZRFC952_charactersr r �
<listcomp>M s z!sanitize_host.<locals>.<listcomp>r � )r r �join)�hostr r r �
sanitize_hostG s r$ c C sJ dt |� kr
dksdS dS t�tjtj�}|�t| �t |�f�}|S )z!
Return status of a port
� i�� F)�int�socket�AF_INET�SOCK_STREAM�
connect_exr$ )r# �port�sock�outr r r �
isportopenP s �r. c C s� g }z6t �| dt jt j�D ]!\}}}}}|t jkr|\}}n|t jkr)|\}}} }
|�|� q
|s6d}W |S W |S tyD d}Y |S w )zR
Returns a list of IP addresses of a given hostname or None if not found.
r N)r'