o
    w7e*                     @   sb   d dl Zd dlmZ d dlmZ d dlmZmZmZ ee	Z
G dd dejjjZd	ddZdS )
    N)distros)log)netsubputilc                       s@   e Zd Zd fdd	Zdd Zdd Zdd	d
Zdd Z  ZS )RendererNc                    s   d| _ tt|   d S )Nr   )
_route_cptsuperr   __init__)selfconfig	__class__ 7/usr/lib/python3/dist-packages/cloudinit/net/freebsd.pyr
      s   zRenderer.__init__c                 C   s   |  d| | d S )Nzifconfig_%s_name)set_rc_config_value)r   cur_namedevice_namer   r   r   rename_interface   s   zRenderer.rename_interfacec                 C   s   | j  D ]1\}}t|tr(d|d|df }|d}|r'|d| 7 }n|dkr.d}| d| | q| j D ]*\}}t|tr^d|d|d	f }|d}|r^|d| 7 }| d
| | q<d S )Nzinet %s netmask %saddressnetmaskmtuz mtu %dDHCP	ifconfig_zinet6 %s/%dprefixzifconfig_%s_ipv6)interface_configurationsitems
isinstancedictgetr   interface_configurations_ipv6)r   r   v
net_configr   r   r   r   write_config   s4   



zRenderer.write_configFc                 C   s   |s	t d d S |  D ]}tjj|tjj	 qt
j
g ddd t
j
g ddddgd |  D ]}tjj|tjj	 q3d S )	Nz!freebsd generate postcmd disabled)servicenetifrestartT)capture)r$   routingr&   r      )r'   rcs)LOGdebugdhcp_interfacesr   dhcpIscDhclientstop_servicer   freebsdDistror   start_service)r   rundhcp_interfacer   r   r   start_services.   s   
zRenderer.start_servicesc                 C   s   |dkr|  d| d S |dkr|  d| d S d| j }d| d| d| }|  d	| | | j d| | _|  d
| j  |  jd7  _d S )Nz0.0.0.0defaultrouterz::ipv6_defaultrouterr   z-net z
 -netmask  route_static_routesr)   )r   r   route_namesstrip)r   networkr   gateway
route_name	route_cmdr   r   r   	set_routeH   s   zRenderer.set_routeN)F)	__name__
__module____qualname__r
   r   r#   r6   rB   __classcell__r   r   r   r   r      s    
r   c                 C   s   t  pt  S rC   )r   
is_FreeBSDis_DragonFlyBSD)targetr   r   r   	availableV   s   rK   rC   )cloudinit.net.bsd	cloudinitr   r   loggingr   r   r   	getLoggerrD   r+   bsdBSDRendererr   rK   r   r   r   r   <module>   s   
K