
    Vh                    \    d dl mZ d dlZd dlmZ d dlmZ  G d de      Z G d de      Zy)	    )annotationsN)NetworkCollector)GenericBsdIfconfigNetworkc                  &    e Zd ZdZdZd Zd Zd Zy)SunOSNetworkz
    This is the SunOS Network Class.
    It uses the GenericBsdIfconfigNetwork.

    Solaris can have different FLAGS and MTU for IPv4 and IPv6 on the same interface
    so these facts have been moved inside the 'ipv4' and 'ipv6' lists.
    SunOSc                   i }i }t        g g       }| j                  j                  |dg      \  }}}|j                         D ]X  }|s|j	                         }	t        j                  d|      r*t        |	      dkD  r| j                  |	||      }|||d   <   W|	d   j                  d      r| j                  |	||       |	d   dk(  r| j                  |	||       |	d   d	k(  r| j                  |	||       |	d   d
k(  r| j                  |	||       |	d   dk(  r| j                  |	||       |	d   dk(  r| j                  |	||       |	d   dk(  r| j!                  |	||       )|	d   dk(  r| j#                  |	||       F| j%                  |	||       [ |D ]O  }
dD ]H  }i }||
   |   D ]  }|j'                  |        t        |j)                               dkD  s@|g||
   |<   J Q ||fS )N)all_ipv4_addressesall_ipv6_addressesz-az^\S   devicer   zoptions=nd6etherzmedia:zstatus:lladdrinetinet6)ipv4ipv6)dictmodulerun_command
splitlinessplitrematchlenparse_interface_line
startswithparse_options_lineparse_nd6_lineparse_ether_lineparse_media_lineparse_status_lineparse_lladdr_lineparse_inet_lineparse_inet6_lineparse_unknown_lineupdatekeys)selfifconfig_path
interfaces
current_ifipsrcouterrlinewordsifacevcombined_factsfactss                 X/home/dcms/DCMS/lib/python3.12/site-packages/ansible/module_utils/facts/network/sunos.pyget_interfaces_infoz SunOSNetwork.get_interfaces_info&   s&   

!!
 {{..t/DECNN$ 	DD

88FD)c%j1n!%!:!:5*j!YJ7AJz(341X((4++E:sC1X&''z3?1X())%SA1X)))%SA1X***5*cB1X)**5*cB1X'((
C@1X())%SA++E:sC3	D<   	<E# <!#'.q1 1E"))%01~**,-1,:+;Ju%a(<	< 3    c                    |d   dd }||vr|g g dd}n||   }| j                  |d         }d}d|v rd}d	|v rd
|d<   ||   j                  ||d   d       d|d<   |S )Nr   unknown)r   r   r   type   r   IPv6r   LOOPBACKloopbackr>   r   )flagsmtu
macaddress)get_optionsappend)r*   r3   r-   r,   r   rC   r5   s          r8   r   z!SunOSNetwork.parse_interface_lineW   s    q!B#$*BIVJ#F+J  q*U?A!+Jv1uU1X>?#,
< r:   c                j    d}|d   j                  d      D ]  }d|z   dd  }||dz   z  } |dd |d<   y )	N r?   :0r   r<   rE   )r   )r*   r3   r-   r.   rE   octets         r8   r!   zSunOSNetwork.parse_ether_linei   sT    
1X^^C( 	(E5["T*E53;'J	( $.a#3
< r:   N)__name__
__module____qualname____doc__platformr9   r   r!    r:   r8   r   r      s     H/b$4r:   r   c                      e Zd ZeZdZy)SunOSNetworkCollectorr   N)rN   rO   rP   r   _fact_class	_platformrS   r:   r8   rU   rU   q   s    KIr:   rU   )	
__future__r   r   'ansible.module_utils.facts.network.baser   .ansible.module_utils.facts.network.generic_bsdr   r   rU   rS   r:   r8   <module>r[      s0     # 	 D TV4, V4r, r:   