
    $g                     h    d dl Z d dlmZmZmZmZmZmZmZ d Z	d Z
d Zd Zd Zd Zd	 Zd
 Zd ZdS )    N)iprange_to_cidrs	IPNetwork
cidr_mergecidr_excludelargest_matching_cidrsmallest_matching_cidrall_matching_cidrsc                  z   t          dd          } | g t          d          t          d          t          d          t          d          t          d          t          d          t          d	          t          d
          t          d          t          d          t          d          t          d          t          d          t          d          t          d          t          d          t          d          t          d          t          d          t          d          t          d          t          d          t          d          t          d          t          d          t          d          t          d          t          d          t          d          t          d           t          d!          t          d"          t          d#          t          d$          t          d%          t          d&          t          d'          t          d(          t          d)          t          d*          t          d+          t          d,          t          d-          t          d.          t          d/          t          d0          t          d1          t          d2          t          d3          t          d4          t          d5          t          d6          t          d7          t          d8          t          d9          t          d:          t          d;          t          d<          t          d=          t          d>          t          d?          t          d@          k    sJ d S )ANz0.0.0.1z255.255.255.254z
0.0.0.1/32z
0.0.0.2/31z
0.0.0.4/30z
0.0.0.8/29z0.0.0.16/28z0.0.0.32/27z0.0.0.64/26z0.0.0.128/25z
0.0.1.0/24z
0.0.2.0/23z
0.0.4.0/22z
0.0.8.0/21z0.0.16.0/20z0.0.32.0/19z0.0.64.0/18z0.0.128.0/17z
0.1.0.0/16z
0.2.0.0/15z
0.4.0.0/14z
0.8.0.0/13z0.16.0.0/12z0.32.0.0/11z0.64.0.0/10z0.128.0.0/9z	1.0.0.0/8z	2.0.0.0/7z	4.0.0.0/6z	8.0.0.0/5z
16.0.0.0/4z
32.0.0.0/3z
64.0.0.0/2z128.0.0.0/2z192.0.0.0/3z224.0.0.0/4z240.0.0.0/5z248.0.0.0/6z252.0.0.0/7z254.0.0.0/8z255.0.0.0/9z255.128.0.0/10z255.192.0.0/11z255.224.0.0/12z255.240.0.0/13z255.248.0.0/14z255.252.0.0/15z255.254.0.0/16z255.255.0.0/17z255.255.128.0/18z255.255.192.0/19z255.255.224.0/20z255.255.240.0/21z255.255.248.0/22z255.255.252.0/23z255.255.254.0/24z255.255.255.0/25z255.255.255.128/26z255.255.255.192/27z255.255.255.224/28z255.255.255.240/29z255.255.255.248/30z255.255.255.252/31z255.255.255.254/32)r   r   networkss    ]/var/www/html/netbox-4.1.3/venv/lib/python3.11/site-packages/netaddr/tests/ip/test_cidr_v4.py#test_iprange_to_cidrs_worst_case_v4r      s   	+<==H ?,?,? 	,? 	,	?
 	-  ? 	-  ? 	-  ? 	.!!? 	,? 	,? 	,? 	,? 	-  ? 	-  ? 	-  ?  	.!!!?" 	,#?$ 	,%?& 	,'?( 	,)?* 	-  +?, 	-  -?. 	-  /?0 	-  1?2 	+3?4 	+5?6 	+7?8 	+9?: 	,;?< 	,=?> 	,??@ 	-  A?B 	-  C?D 	-  E?F 	-  G?H 	-  I?J 	-  K?L 	-  M?N 	-  O?P 	"##Q?R 	"##S?T 	"##U?V 	"##W?X 	"##Y?Z 	"##[?\ 	"##]?^ 	"##_?` 	$%%a?b 	$%%c?d 	$%%e?f 	$%%g?h 	$%%i?j 	$%%k?l 	$%%m?n 	$%%o?p 	&''q?r 	&''s?t 	&''u?v 	&''w?x 	&''y?z 	&''{?| 	&''}? ? ? ? ? ? ?    c                     t          dd          g k    sJ t          dd          t          d          gk    sJ t          dd          t          d          gk    sJ t          dd          t          d          t          d          t          d	          gk    sJ t          dd          g k    sJ t          d
d          t          d
          gk    sJ t          dd
          t          d          gk    sJ d S )N192.0.2.1/32z192.0.2.0/31192.0.2.0/32192.0.2.0/24192.0.2.128/25z192.0.2.0/25192.0.2.128/27z192.0.2.160/27z192.0.2.192/26192.0.2.0/28z192.0.2.16/32z192.0.1.255/32)r   r    r   r   test_cidr_exclude_v4r   R   s%   772====77In<U<U;VVVVV(899i>W>W=XXXXX(899.!!"##"##>     772====88Y~=V=V<WWWWW(.99iHX>Y>Y=ZZZZZZZr   c                  j   t          ddg          t          d          gk    sJ t          ddg          t          d          t          d          gk    sJ t          g d          t          d          gk    sJ t          g d          t          d          t          d	          t          d
          gk    sJ t          g d          t          d          t          d          gk    sJ t          g d          t          d          t          d          t          d          gk    sJ d S )Nz192.0.128.0/24z192.0.129.0/24z192.0.128.0/23z192.0.130.0/24)192.0.2.112/30192.0.2.116/31192.0.2.118/31z192.0.2.112/29)r   192.0.2.116/32r   r   r   r   )192.0.2.112/31r   r   r   z192.0.2.116/30)192.0.1.254/31r   z192.0.2.16/28z192.0.2.32/28z192.0.2.48/28z192.0.2.64/28z192.0.2.80/28z192.0.2.96/28z192.0.2.112/28z192.0.2.128/28z192.0.2.144/28z192.0.2.160/28z192.0.2.176/28z192.0.2.192/28z192.0.2.208/28z192.0.2.224/28z192.0.2.240/28192.0.3.0/28r   r   r    r   r   r   r   r   test_cidr_merge_v4r"   a   s   ')9:;;	JZ@[@[?\\\\\')9:;;"##"##@     LLLMM"##R     LLLMM"##"##"##R    
 LLLMM"##"##R    
 	
 	
 	
 , 	"##.!!.!!
+     r   c                     t          d          } t          d          }d |                     d          D             t          |                     d                    z   d |                    d          D             z   t          |                    d                    z   g dz   }t          j        |           t          |          }|t          d          t          d          gk    sJ || |gk    sJ d S )N192.0.2.0/23z::192.0.2.0/120c                 ,    g | ]}t          |          S r   str.0cs     r   
<listcomp>z,test_extended_cidr_merge.<locals>.<listcomp>   s    333AQ333r      c                 ,    g | ]}t          |          S r   r&   r(   s     r   r+   z,test_extended_cidr_merge.<locals>.<listcomp>   s    
6
6
6a3q66
6
6
6r   |   )r   r   z::192.0.2.92/128)r   subnetlistrandomshuffler   )orig_cidr_ipv4orig_cidr_ipv6cidr_subnetsmerged_cidrss       r   test_extended_cidr_merger7      s   ~..N011N 	43..r22333
~$$R((
)
)	*
6
6>0055
6
6
6	7 ~$$S))
*
*	+ A
@
@		A  N<   l++LIn55yAR7S7STTTTTNN;;;;;;;r   c                      t          ddg          t          d          gk    sJ t          ddg          t          d          gk    sJ t          g d          t          d          gk    sJ d S )N	0.0.0.0/0z0.0.0.0z255.255.255.255)r9   r   
10.0.0.0/8r!   r   r   r    test_whole_network_cidr_merge_v4r;      s    {I.//Ik4J4J3KKKKK{$5677Ik<R<R;SSSSSAAABByQ\G]G]F^^^^^^^r   c                  
   t          ddg          t          d          k    sJ t          dddg          t          d          k    sJ t          dg d          t          d          k    sJ t          dddg          J d S )N	192.0.2.0r   10.0.0.1r>   r=   	224.0.0.1r@   )r   r   r   r   r   test_largest_matching_cidr_v4rA      s     {m<<	.@Y@YYYYY z;.GHHIM M     !.T.T.TUUYbZ Z     !z;.GHHPPPPPr   c                      t          dg d          t          d          k    sJ t          dg d          t          d          k    sJ t          dddg          J d S )	Nr=   r?   r   
192.0.2.32r9   r:   192.0.0.0/8z192.0.1.0/24r   z192.0.3.0/24r   r>   r@   )r   r   r   r   r   test_smallest_matching_cidr_v4rF      s    !+/U/U/UVVZc[ [     "bbb  
>	"	"# # # # "+
K/HIIQQQQQr   c                      t          dg d          t          d          t          d          t          d          gk    sJ d S )NrC   rD   r9   rE   r   )r	   r   r   r   r   test_all_matching_cidrs_v4rH      sa    bbb  	+-  .!!
     r   c                  ~   d t          d                              d          D             } | g dk    sJ t          d|           t          d          t          d          t          d          gk    sJ t          d|           t          d          k    sJ t	          d|           t          d          k    sJ d S )	Nc                 ,    g | ]}t          |          S r   r&   r(   s     r   r+   z)test_cidr_matching_v4.<locals>.<listcomp>   s    III1AIIIr   r      )192.0.0.0/22r$   r   r   z192.0.2.128/26r=   rL   r$   r   )r   supernetr	   r   r   r   s    r   test_cidr_matching_v4rN      s    II	*: ; ; D DR H HIIIH        k844.!!.!!.!!9     "+x88In<U<UUUUU h779^;T;TTTTTTTr   )r1   netaddrr   r   r   r   r   r   r	   r   r   r"   r7   r;   rA   rF   rH   rN   r   r   r   <module>rP      s                    A A AH[ [ [, , ,^< < <(_ _ _Q Q QR R R  U U U U Ur   