
    $gn&                         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mZ d Zd Zd Zd Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)dS )    N)EUImac_unixmac_unix_expanded	mac_ciscomac_bare	mac_pgsql
eui64_unixeui64_unix_expandedeui64_cisco
eui64_bareOUIIAB	IPAddressc                      t          d          } t          |           dk    sJ t          |           sJ t          | j                  dk    sJ | j        dk    sJ | j        dk    sJ d S )N00-1B-77-49-54-FDzEUI('00-1B-77-49-54-FD')00-1B-77z49-54-FD0   )r   reprstrouieiversionmacs    Z/var/www/html/netbox-4.1.3/venv/lib/python3.11/site-packages/netaddr/tests/eui/test_eui.pytest_mac_address_propertiesr      s|    
!
"
"C9922222s88OOOsw<<:%%%%6Z;"    c                      t          d          } t          |           dk    sJ t          |           dk    sJ |                                 dk    sJ | j        dk    sJ d S )Nr   l   Tnm 0x1b774954fdz500000000-00011011-01110111-01001001-01010100-11111101'0b1101101110111010010010101010011111101)r   inthexbitsbinr   s    r   %test_mac_address_numerical_operationsr%      sr    
!
"
"Cs88|####s88~%%%%88::PPPPP7???????r   c                  J    t          t          d                    dk    sJ d S )Nr   0o1556722252375)octr    r   r   test_eui_oct_formatr*   &   s+    s&''((,=======r   c                  <   t          t          d                    dk    sJ t          t          d                    dk    sJ t          t          d                    dk    sJ t          t          d                    dk    sJ t          t          d                    dk    sJ t          t          d                    dk    sJ t          t          d                    dk    sJ t          t          d                    dk    sJ t          t          d	                    dk    sJ t          d
          } | t          d          k    sJ | t          d          k    sJ | t          d          k    sJ | t          d          k    sJ | t          d          k    sJ | t          d          k    sJ | t          d          k    sJ | t          d          k    sJ | t          d          k    sJ | t          d          k    sJ t          d          t          d          k    sJ t          d          t          d          k    sJ t          d          t          d          k    sJ t          d          t          d          k    sJ d S )Nr   z00-1b-77-49-54-fd0:1b:77:49:54:fdz001b:7749:54fdz1b:7749:54fdz1B:7749:54FD001b774954fd01B774954FDz001B77:4954FDz00-90-96-AF-CC-39z0-90-96-AF-CC-39z00-90-96-af-cc-39z00:90:96:AF:CC:39z00:90:96:af:cc:39z0090-96AF-CC39z0090:96af:cc39z009096-AFCC39z009096:AFCC39009096AFCC39009096afcc39z01-00-00-00-00-000100000000001000000000001-00-00-01-00-00z010000:010000z10000:10000)r   r   euis    r   test_eui_constructorr6   *   s   s&''((,?????s&''((,?????s%&&''+>>>>>s#$$%%)<<<<<s>""##':::::s>""##':::::s>""##':::::s=!!""&99999s?##$$(;;;;;
!
"
"C#())))))#)******#)******#)******#&''''''#&''''''#o&&&&&&#o&&&&&&#n%%%%%%#n%%%%%%"##s>':':::::"##s='9'99999"##s?';';;;;;"##s='9'9999999r   c                     t          d          } t          |           dk    sJ t          dt                    } t          |           dk    sJ t          dt                    } t          |           dk    sJ t          dt                    } t          |           dk    sJ t          dt
                    } t          |           dk    sJ t          dt                    } t          |           dk    sJ d S )Nr   dialectr,   00:1b:77:49:54:fdz001b.7749.54fd001B774954FD001b77:4954fd)r   r   r   r   r   r   r   r   s    r   test_eui_dialectsr=   G   s   
!
"
"Cs88*****
!8
4
4
4Cs88)))))
!+<
=
=
=Cs88*****
!9
5
5
5Cs88'''''
!8
4
4
4Cs88~%%%%
!9
5
5
5Cs88&&&&&&r   c                      t          d          } t          |           dk    sJ t          | _        t          |           dk    sJ d S )Nr   r<   )r   r   r   r9   r   s    r   $test_eui_dialect_property_assignmentr?   [   sL    
!
"
"Cs88*****CKs88&&&&&&r   c                  z    t          d          } t          | t                    }t          |          dk    sJ d S )Nr   r8   r:   )r   r   r   )r   copys     r   )test_eui_copy_constructor_dialect_supportrB   c   sA    
!
"
"Cs-...Dt99+++++++r   c                      t          d          } |                                 dk    sJ |                     t                    dk    sJ |                     t                    dk    sJ d S )Nr   r<   r:   )r   formatr   r   r   s    r   test_eui_formatrE   i   sl    
!
"
"C::<<.....::i  O3333::'((,???????r   c                  x     G d dt                     } t          d|           }t          |          dk    sJ d S )Nc                       e Zd ZdZdS )+test_eui_custom_dialect.<locals>.mac_custom%.2XN__name__
__module____qualname__word_fmtr)   r   r   
mac_customrH   q           r   rO   r   r8   z00:1B:77:49:54:FD)r   r   r   )rO   r   s     r   test_eui_custom_dialectrQ   p   s_        X    !:
6
6
6Cs88*******r   c                     t          d          } t          |           dk    sJ t          dt                    } t          |           dk    sJ t          dt                    } t          |           dk    sJ t          dt                    } t          |           dk    sJ t          dt
                    } t          |           dk    sJ d S )N00-1B-77-49-54-FD-12-34r8   z0:1b:77:49:54:fd:12:34z00:1b:77:49:54:fd:12:34001b.7749.54fd.1234001B774954FD1234)r   r   r	   r
   r   r   r   s    r   test_eui64_dialectsrV   x   s    
'
(
(Cs8800000
'
<
<
<Cs88/////
'1D
E
E
ECs8800000
'
=
=
=Cs88,,,,,
'
<
<
<Cs88)))))))r   c                      t          d          } t          |           dk    sJ t          | _        t          |           dk    sJ d S )NrS   rT   )r   r   r   r9   r   s    r   &test_eui64_dialect_property_assignmentrX      sM    
'
(
(Cs8800000CKs88,,,,,,,r   c                  x     G d dt                     } t          d|           }t          |          dk    sJ d S )Nc                       e Zd ZdZdS )/test_eui64_custom_dialect.<locals>.eui64_customrI   NrJ   r)   r   r   eui64_customr[      rP   r   r\   rS   r8   z00:1B:77:49:54:FD:12:34)r	   r   r   )r\   r   s     r   test_eui64_custom_dialectr]      s_        z    '
>
>
>Cs880000000r   c                      t          d          } | j        }t          |          dk    sJ |                                j        g dk    sJ |                                j        dk    sJ d S )Nr   r   )zLot 8, Jalan Hi-Tech 2/3zKulim  Kedah  09000MYzIntel Corporate)r   r   r   registrationaddressorg)r   r   s     r   test_eui_oui_informationrc      s|    
!
"
"C
'Cs88z!!!!%)b)b)bbbbb!%6666666r   c                     t          d          } t          |           dk    sJ | t          d          k    sJ |                     d          j        g dk    sJ |                     d          j        dk    sJ |                     d          j        dk    sJ |                     d          j        g dk    sJ |                     d          j        dk    sJ |                     d          j        dk    sJ |                     d	          j        g d
k    sJ |                     d	          j        dk    sJ |                     d	          j        dk    sJ | j        dk    sJ d S )Ni0  z08-00-30r   )z2380 N. ROSE AVENUEzOXNARD  CA  93010USzNETWORK RESEARCH CORPORATION   )zGPO BOX 2476VzMELBOURNE  VIC  3001AUzROYAL MELBOURNE INST OF TECH   )zCH-1211zGENEVE  SUISSE/SWITZ  023CHCERN   )r   r   r`   ra   rb   r   	reg_count)r   s    r   test_oui_constructorrm      s   
f++Cs88z!!!!#j//!!!!A&*\*\*\\\\\A"&DDDDDA"j0000A& + + +    
 A"&DDDDDA"j0000A&*X*X*XXXXXA"f,,,,A"j0000=Ar   c                      t          d          } t          d          }| d |d i}t          |                                          t          d          t          d          gk    sJ d S )Nr   rf   )r   listkeys)oui0oui1oui_dicts      r   test_oui_hashrt      s^    q66Dq66DdD$'H  SVVSVV$4444444r   c                  ,   t          d          } |                                 sJ | j        }t          |          dk    sJ |t	          d          k    sJ |                                }|j        g dk    sJ |j        dk    sJ |j        dk    sJ d S )Nz00-50-C2-00-0F-01z00-50-C2-00-00-00)z1241 Superieor Ave EzCleveland  OH  44114re   zT.L.S. Corp.)r   is_iabiabr   r   r`   ra   rb   )r   rw   reg_infos      r   test_eui_iabry      s    
!
"
"C::<<
'Cs88*****#)******!!H           <.....<>))))))r   c                      t          d          } | t          d          k    sJ | j        t          d          k    sJ | j        dk    sJ |                                 t          d          k    sJ d S )N00-1B-77-FF-FE-49-54-FDr   zFF-FE-49-54-FD)r   r   r   r   eui64r4   s    r   
test_eui64r}      s    
'
(
(C#/0000007c*oo%%%%6%%%%%99;;#788888888r   c                      t          d          } |                                 }|t          d          k    sJ |                                sJ |                                 t          d          k    sJ d S )Nz00-0F-1F-12-E7-33zfe80::20f:1fff:fe12:e733z00-0F-1F-FF-FE-12-E7-33)r   ipv6_link_localr   is_link_localr|   )r   ips     r   test_mac_to_ipv6_link_localr      s{    
!
"
"C					B566666699;;#788888888r   c                  x   t          d          } |                                 sJ t          | j                  dk    sJ t          | j                  dk    sJ | j        dk    sJ t          | j                  dk    sJ t          | j                  dk    sJ t          | j                  | j        k    sJ d S )Nz00-50-C2-05-C0-00z00-50-C2z05-C0-00iP  i\ 	r   rv   r   r   rw   r   r!   r   valuer4   s    r   test_iabr          
!
"
"C::<<sw<<:%%%%sw<<.....6Zsw<<8####sw<<;&&&&sy>>SW$$$$$$r   c                  x   t          d          } |                                 sJ t          | j                  dk    sJ t          | j                  dk    sJ | j        dk    sJ t          | j                  dk    sJ t          | j                  dk    sJ t          | j                  | j        k    sJ d S )Nz40-D8-55-13-10-00z40-D8-55z13-10-00iU@ l   1Q
 r   r4   s    r   test_new_iabr      r   r   c                      t          d          } t          |           dk    sJ t          d          }t          |          dk    sJ | |k    sJ d S )Nr3   l       z00-00-01-00-00-01-00-00)r   r!   )eui48r|   s     r   test_eui48_vs_eui64r      s]    #$$Eu::&&&&)**Eu::&&&&E>>>>>>r   c                     t          dd          t          d          t          dt                    t          d          g} t          j        |            |                                  d | D             g dk    sJ d S )Nr   @   l    r8   l          c                 :    g | ]}t          |          |j        fS r)   )r   r   ).0r5   s     r   
<listcomp>z'test_eui_sort_order.<locals>.<listcomp>  s%    888SXXs{#888r   ))z00-00-00-00-00-00r   )zff:ff:ff:ff:ff:ffr   )z00-00-00-00-00-00-00-00r   )z00-01-00-00-00-00-00-00r   )r   r   randomshufflesort)eui_lists    r   test_eui_sort_orderr   	  s    Ar

ANH---O	H N8MMOOO88x888 = = =      r   c                  |   t          d          } t          j        t          j        |                     }| |k    sJ t          dt                    } t          j        t          j        |                     }| |k    sJ | j        |j        k    sJ t          d          j        }t          j        t          j        |                    }||k    sJ |j        |j        k    sJ t          d          j        }t          j        t          j        |                    }||k    sJ |j	        |j	        k    sJ d S )Nz00-00-00-01-02-03r8   z00-50-C2-00-1F-FF)
r   pickleloadsdumpsr   r9   r   recordsrw   record)eui1eui2rr   oui2iab1iab2s         r   test_eui_pickle_supportr     s"   "##D<T**++D4<<<<"I666D<T**++D4<<<<<4<''''"##'D<T**++D4<<<<<4<''''"##'D<T**++D4<<<<;$+%%%%%%r   c                  |   t          d          } | t          d          k    sJ |                                 }|t          d          k    sJ |                                t          d          k     t          |          dk    sJ |j        dk    sJ |j        dk    sJ |                                dk    sJ d S )Nr   r{   l   T|_ s    wIT70b11011011101111111111111111110010010010101010011111101zG00000000-00011011-01110111-11111111-11111110-01001001-01010100-11111101)r   r|   r!   packedr$   r#   r   r5   s     r   test_mac_to_eui64_conversionr   1  s    
!
"
"C#)******
))++C#/000000IIKK301111s88''''':333337OOOOO88::bbbbbbbr   c                  *   t          d          } |                                 }| t          d          k    sJ |t          d          k    sJ |                                 t          d          k    sJ |                                 t	          d          k    sJ |                                t	          d          k    sJ |                     d          t	          d          k    sJ |                    d          t	          d          k    sJ d S )Nr   r{   z02-1B-77-FF-FE-49-54-FDzfe80::21b:77ff:fe49:54fdl	                   z1234::21b:77ff:fe49:54fd)r   r|   modified_eui64r   r   ipv6r   s     r   test_mac_to_ipv6r   ?  s   
!
"
"C
))++C#)******#/0000003'@#A#AAAAA  I.H$I$IIIII  I.H$I$IIIII886779E_;`;`````886779E_;`;```````r   c                      t          d          } | t          d          k    sJ t          d          }|t          d          k    sJ d S )Nz00:1B:77:49:54:FD:BB:34z00-1B-77-49-54-FD-BB-34001B774954FDBB34)r   )addr_colonsaddr_no_delimiters     r   test_eui64_constructorr   M  sY    /00K#7888888.//$= > >>>>>>>r   )*r   r   netaddrr   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r%   r*   r6   r=   r?   rB   rE   rQ   rV   rX   r]   rc   rm   rt   ry   r}   r   r   r   r   r   r   r   r   r   r)   r   r   <module>r      sI                                 "  @ @ @> > >: : ::' ' '(' ' ', , ,@ @ @+ + +* * *"- - -1 1 17 7 7  .5 5 5* * *(9 9 99 9 9
% 
% 
%
% 
% 
%    && & &*c c ca a a? ? ? ? ?r   