
    }f                         d dl Z d dlZd dlmZmZmZmZ  e j                  e      Z	 G d dej                  j                  j                        ZddZy)    N)distrosnetsubputilc                   :     e Zd Zd fd	Zd Zd ZddZd Z xZS )Rendererc                 8    d| _         t        t        |           y )Nr   )
_route_cptsuperr   __init__)selfconfig	__class__s     7/usr/lib/python3/dist-packages/cloudinit/net/freebsd.pyr   zRenderer.__init__   s    h&(    c                 .    | j                  d|z  |       y )Nzifconfig_%s_name)set_rc_config_value)r   cur_namedevice_names      r   rename_interfacezRenderer.rename_interface   s      !3h!>Lr   c                 2   | j                   j                         D ]s  \  }}t        |t              rBd|j	                  d      d|j	                  d      }|j	                  d      }|r|d|z  z  }n|dk(  rd}| j                  d|z          u | j                  j                         D ]j  \  }}t        |t              r@d	|j	                  d      |j	                  d
      fz  }|j	                  d      }|r|d|z  z  }| j                  d|z         l y )Nzinet addressz	 netmask 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   s        r   write_configzRenderer.write_config   s   ";;AAC 	LNK!T"EE)$EE)$
 eeEl)c/1Jf#
$$[;%>
K	L #@@FFH 	NK!T"*EE)$EE(O. 
 eeEl)c/1J$$"[0*	r   c                    |st         j                  d       y | j                         D ]D  }t        j                  j
                  j                  |t        j                  j                         F t        j                  g dd       t        j                  g ddddg       | j                         D ]D  }t        j                  j
                  j                  |t        j                  j                         F y )	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_interfaces      r   start_serviceszRenderer.start_services.   s    II9:"224 	N HH  -- 6 6	 			14@ 			3T1vN"224 	NHH  .. 6 6	r   c                 6   |dk(  r| j                  d|       y |dk(  r| j                  d|       y d| j                   }d|v rad| d| d	| }| j                  d
|z   |       | j                   d	| | _        | j                  d| j                  j                                n`d| d| d	| }| j                  d|z   |       | j                   d	| | _        | j                  d| j                  j                                | xj                  dz  c_        y )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_cmds         r   	set_routezRenderer.set_routeH   s.   i$$_g>_$$%97Ct/0Jg~#G9AgYayA	(()CYO'+'8'8&9:,$G!((($*;*;*A*A*C $G9Jwiq	J	((J)>	J&*&6&6%7q#E ((#T%5%5%;%;%= OOq Or   N)F)	__name__
__module____qualname__r   r   r&   r:   rL   __classcell__)r   s   @r   r   r      s    )M64!r   r   c                 V    t        j                         xs t        j                         S rM   )r   
is_FreeBSDis_DragonFlyBSD)targets    r   	availablerV   `   s    ??6 4 4 66r   rM   )loggingcloudinit.net.bsd	cloudinitr   r   r   r   	getLoggerrN   r/   bsdBSDRendererr   rV    r   r   <module>r^      sI      . .g!R!y}}  ,, R!j7r   