o
    x[hÁ  ã                   @   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