o
    f                     @   sV   d dl Z d dlZd dlmZ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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|v rHd| d| d	| }|  d
| | | j d	| | _|  d| j  n%d| d| d	| }|  d| | | j d	| | _|  d| j  |  jd7  _d S )Nz0.0.0.0defaultrouterz::ipv6_defaultrouterr   :z-net / ipv6_route_ipv6_static_routesz
 -netmask route_static_routesr(   )r   r   route6_namesstriproute_names)r
   networkr   gateway
route_name	route_cmdr   r   r   	set_routeH   s&   

zRenderer.set_routeN)F)	__name__
__module____qualname__r	   r   r"   r5   rF   __classcell__r   r   r   r   r      s    
r   c                 C   s   t  pt  S rG   )r   
is_FreeBSDis_DragonFlyBSD)targetr   r   r   	available`   s   rO   rG   )loggingcloudinit.net.bsd	cloudinitr   r   r   r   	getLoggerrH   r*   bsdBSDRendererr   rO   r   r   r   r   <module>   s   
U