U
    L¬÷d*  ã                   @   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__)Ú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j |tjj	¡ qt
j
dddgdd t
j
dddgddd	gd
 |  ¡ D ]}tjj |tjj	¡ qjd S )Nz!freebsd generate postcmd disabledÚserviceZnetifZrestartT)ÚcaptureZroutingr   é   )r   Zrcs)ÚLOGÚdebugZdhcp_interfacesr   ZdhcpZIscDhclientZstop_servicer   ZfreebsdZDistror   Zstart_service)r   ÚrunZdhcp_interfacer   r   r   Ústart_services.   s    
 ÿ ÿzRenderer.start_servicesc                 C   s”   |dkr|   d|¡ nz|dkr,|   d|¡ ndd| j› }d|› d|› d|› }|   d	| |¡ | j› d|› | _|   d
| j ¡ ¡ |  jd7  _d S )Nz0.0.0.0Zdefaultrouterz::Zipv6_defaultrouterr   z-net z
 -netmask ú Zroute_Zstatic_routesr   )r   r   Zroute_namesÚstrip)r   Znetworkr   ZgatewayZ
route_nameZ	route_cmdr   r   r   Ú	set_routeH   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   Ú	availableV   s    r+   )N)Zcloudinit.net.bsdZ	cloudinitr   r   Zloggingr   r   r   Z	getLoggerr&   r   ZbsdZBSDRendererr   r+   r   r   r   r   Ú<module>   s   
K