U
    ¯AdË  ã                   @   sR   d dl Zd dlmZ d dlmZmZ e e¡ZG dd„ dej	j
jƒZddd„ZdS )	é    N)Úlog)Ú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__)ÚselfZ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	   Zcur_nameÚdevice_namer   r   r   Úrename_interface   s    zRenderer.rename_interfacec                 C   sÒ   | j  ¡ D ]b\}}t|tƒrPd| d¡| d¡f }| d¡}|r\|d| 7 }n|dkr\d}|  d| |¡ q
| j ¡ D ]T\}}t|tƒr¼d| d¡| d	¡f }| d¡}|r¼|d| 7 }|  d
| |¡ qxd S )Nzinet %s netmask %sZaddressÚnetmaskÚmtuz mtu %dZDHCPZ	ifconfig_zinet6 %s/%dÚprefixzifconfig_%s_ipv6)Zinterface_configurationsÚitemsÚ
isinstanceÚdictÚgetr   Zinterface_configurations_ipv6)r	   r   ÚvZ
net_configr   r   r   r   Úwrite_config   s2    
þ

þ
 ÿzRenderer.write_configFc                 C   s˜   |st  d¡ d S |  ¡ D ] }tjddd|gddgdd qtjdd	d
gdd tjddd
gdddgd |  ¡ D ] }tjddd|gddgdd qrd S )Nz!freebsd generate postcmd disabledÚserviceZdhclientÚstopr   é   T)ÚrcsÚcaptureZnetifZrestart)r   Zrouting)r   r   Ústart)ÚLOGÚdebugZdhcp_interfacesr   )r	   ÚrunZdhcp_interfacer   r   r   Ústart_services-   s"    

ý
ýzRenderer.start_servicesc                 C   sb   |dkr|   d|¡ nH|dkr,|   d|¡ n2d| j }d|||f }|   ||¡ |  jd7  _d S )Nz0.0.0.0Zdefaultrouterz::Zipv6_defaultrouterzroute_net%dz-route %s/%s %sr   )r   r   )r	   Znetworkr   ZgatewayZ
route_nameZ	route_cmdr   r   r   Ú	set_routeK   s    
zRenderer.set_route)N)F)	Ú__name__Ú
__module__Ú__qualname__r   r   r   r#   r$   Ú__classcell__r   r   r
   r   r   
   s
   
r   c                 C   s   t  ¡ pt  ¡ S )N)r   Z
is_FreeBSDZis_DragonFlyBSD)Útargetr   r   r   Ú	availableW   s    r*   )N)Zcloudinit.net.bsdZ	cloudinitr   Zloggingr   r   Z	getLoggerr%   r    ZnetZbsdZBSDRendererr   r*   r   r   r   r   Ú<module>   s
   
M