File: //lib/python3.9/site-packages/netaddr/ip/__pycache__/nmap.cpython-39.pyc
a
��g� � @ s` d Z ddlmZ ddlmZmZ ddlmZmZm Z dd� Z
dd� Zd d
� Zdd� Z
d
d� ZdS )z�
Routines for dealing with nmap-style IPv4 address ranges.
Based on nmap's Target Specification :-
http://nmap.org/book/man-target-specification.html
� )�AddrFormatError)� IPAddress� IPNetwork)�_iter_range�_is_str�
_iter_nextc C s� t � }| �d�D ]�}d|v r�|�dd�\}}|s4d}|s<d}t|�}t|�}d| kr`dkrzn nd| krxdks�n td| f ��||kr�td|f ��t||d �D ]}|�|� q�qt|�}d| kr�dks�n td| f ��|�|� qt|�S )N�,�-� r � z!octet value overflow for spec %s!z'left side of hyphen must be <= right %r)�set�split�int�
ValueErrorr �add�sorted)�spec�values�element�left�rightZlowZhighZoctet� r �3/usr/lib/python3.9/site-packages/netaddr/ip/nmap.py�_nmap_octet_target_values s* .r c C st t | �stdt| � ��| s$td��| �d�}t|�dkrHtd| f ��t|d �t|d �t|d �t|d �fS )
Nzstring expected, not %sz*nmap target specification cannot be blank!�.� zinvalid nmap range: %sr r
� � )r � TypeError�typer r
�lenr r )�nmap_target_spec�tokensr r r �_generate_nmap_octet_ranges0 s
�r# c
c s� d| v rl| � dd�\}}dt|� k r0dk s@n td|f ��t| �}|jdkrZtd��|D ]
}|V q^nld| v r�t| �V nXt| �}|d D ]F}|d D ]8}|d D ]*}|d
D ]} td|||| f d�V q�q�q�q�d S )N�/r
r �! zCIDR prefix expected, not %sr zCIDR only support for IPv4!�:r r z%d.%d.%d.%d)r
r r r �versionr r# )
�target_spec�_�prefix�net�ipZoctet_ranges�w�x�y�zr r r �_parse_nmap_target_specD s"