U
    Ӈg                     @   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__)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rd|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| n|dkr,|  d| nd| j }d|krd| d| d	| }|  d
| | | j d	| | _|  d| j  nJd| d| d	| }|  d| | | j d	| | _|  d| j  |  jd7  _d S )Nz0.0.0.0Zdefaultrouterz::Zipv6_defaultrouterr   :z-net / Zipv6_route_Zipv6_static_routesz
 -netmask Zroute_Zstatic_routesr   )r   r   Zroute6_namesstripZroute_names)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   	available`   s    r,   )N)ZloggingZcloudinit.net.bsdZ	cloudinitr   r   r   r   Z	getLoggerr'   r   ZbsdZBSDRendererr   r,   r   r   r   r   <module>   s
   
U