+
    i!                         ^ RI t ^ RIt^ RIHt ^ RIHtHtHt ^ RIH	t	 ^ RI
Ht ^ RIHt ^ RIHt ] P                   ! ]4      t ! R R	]P&                  4      tR# )
    N)Optional)netsubputil)	bsd_utils)
ResolvConf)renderer)NetworkStatec                      a  ] tR t^t o RtRtRtRtRtR t	R t
RR ltR tR	 tR
 tRV 3R lR lltR tRR ltRR ltR tR tRtV tR# )BSDRendererzetc/resolv.confzetc/rc.conf c                    \         P                  ! V P                  V P                  4      p\        P
                  ! WR 7       R# )fnN)r   target_pathtarget
rc_conf_fnr   get_rc_config_value)selfkeyr   s   && 3/usr/lib/python3/dist-packages/cloudinit/net/bsd.pyr   BSDRenderer.get_rc_config_value   s*    dkk4??;%%c1    c                    \         P                  ! V P                  V P                  4      p\        P
                  ! WVR 7       R# r   )r   r   r   r   r   set_rc_config_value)r   r   valuer   s   &&& r   r   BSDRenderer.set_rc_config_value   s,    dkk4??;%%cR8r   Nc                r    V'       g   / pR V n         / V n        / V n        VP                  RR4      V n        R # )NpostcmdsT)r   interface_configurationsinterface_configurations_ipv6get	_postcmds)r   configs   &&r   __init__BSDRenderer.__init__   s3    F(*%-/*J5r   c           
        \         P                  ! 4       pVP                  4        EF  pVP                  R 4      pVP                  R4      pV'       d    \        P
                  ! RV4      '       d   KM  WR9  d   \        P                  RV4       MQV'       dB   V'       d:   W%,          pWd8w  d+   \        P                  RVV4        V P                  Wd4       M	MW%,          p\        P                  RV4       VP                  R. 4       EF  pVP                  R4      R	8X  d   VP                  R
4      '       g(   \        P                  RVP                  R4      4       KX  \        P                  RVVP                  R4      VP                  R
4      4       RVP                  R4      R
VP                  R
4      RVP                  R4      ;'       g    VP                  R4      /V P                  V&   K  VP                  R4      R8X  d   VP                  R4      '       g)   \        P                  RVP                  R4      4       EK@  \        P                  RVVP                  R4      VP                  R4      4       RVP                  R4      RVP                  R4      RVP                  R4      ;'       g    VP                  R4      /V P                  V&   EK  VP                  R4      R8X  g   VP                  R4      R8X  g   EK  RV P                  V&   EK  	  EK  	  R#   \         d    \        P                  R4       Tp ELki ; i)namemac_addressz^lo\d+$z"Cannot find any device with MAC %sz,netif service will rename interface %s to %sz.Interface renaming is not supported on this OSzConfiguring interface %ssubnetstypestaticnetmaskz+Skipping IP %s, because there is no netmaskaddresszConfiguring dev %s with %s / %smtustatic6prefixz*Skipping IP %s, because there is no prefixdhcpdhcp4DHCPN)r   get_interfaces_by_maciter_interfacesr"   rematchLOGinforename_interfaceNotImplementedErrorerrordebugr    r!   )r   settingsifname_by_mac	interfacedevice_name
device_maccur_namesubnets   &&      r   _ifconfig_entriesBSDRenderer._ifconfig_entries'   s   113!113I#--/K"}5Jrxx
K@@.=zJ(4*HHF #
/--hD + ,7HH/=#--	26::f%1!::i00		I"JJy1 !II9#

9-

9-	 "6::i#8!6::i#8vzz%0HHIMM%4HBD11+> ZZ'94!::h//		H"JJy1 !II9#

9-

8,	 "6::i#8 &**X"6vzz%0HHIMM%4HGD66{C JJv&&0zz&)W4AGD11+>Y 79 4" / /		L '/	/s   L''"MMc           
        \        VP                  4       4      pVP                  4        EF  pVP                  R . 4      pV F  pVP                  R4      R8X  dQ   VP                  R4      pV'       d7   \	        VP                  R4      4      ^8X  d   VP                  RRRRRV/4       MhVP                  R4      R8X  dQ   VP                  R4      pV'       d7   \	        VP                  R	4      4      ^8  d   VP                  RR
RRRV/4       MK  W%P                  R. 4      ,          pK  	  EK  	  V F  pVP                  R4      pV'       g   \        P                  R4       K3  VP                  R4      '       d   VP                  R4      MVP                  R4      p	VP                  R4      pV P                  WV4       K  	  R# )r*   r+   r,   gateway.networkz0.0.0.0r-   r0   :z::r1   0routeszSkipping a bad route entryN)
listiter_routesr6   r"   lensplitappendr9   r>   	set_route)
r   r?   rN   rA   r*   rE   rI   routerK   r-   s
   &&        r   _route_entriesBSDRenderer._route_entriess   s   h**,-!113ImmIr2G!::f%1$jj3G3w}}S'9#:a#? )9 )9 )7 ZZ'94$jj3G3w}}S'9#:Q#> )4 (# )7 **Xr22/ " 46 Eii	*G		67 99Y'' 		)$YYx( 
 ii	*GNN7W5 r   c           	        VP                   pVP                  pVP                  4        F\  pVP                  R . 4       FC  pRV9   d   VP	                  VR,          4       RV9   g   K+  VP	                  VR,          4       KE  	  K^  	   \        \        P                  ! \        P                  ! V P                  V P                  4      4      4      pVP                  4        \!        V4       F  p VP#                  V4       K  	  \!        V4       F  p VP'                  V4       K  	  \        P(                  ! \        P                  ! V P                  V P                  4      \+        V4      R4       R#   \         de    \        P                  ! \        R\        P                  ! T P                  T P                  4      4       \        R4      pTP                  4         ELi ; i  \$         d"    \        P                  ! \        RT4        EK&  i ; i  \$         d"    \        P                  ! \        RT4        EK1  i ; i)	r*   dns_nameservers
dns_searchz&Failed to parse %s, use new empty filer   zFailed to add nameserver %szFailed to add search domain %si  N)rY   dns_searchdomainsr6   r"   extendr   r   load_text_filer   r   r   resolv_conf_fnparseIOErrorlogexcr9   setadd_nameserver
ValueErroradd_search_domain
write_filestr)	r   r?   nameserverssearchdomainsrA   rE   
resolvconfserverdomains	   &&       r   _resolve_confBSDRenderer._resolve_conf   s   .. 22!113I#--	26$.&&v.?'@A6)!(()=>	 7 4	###$$T[[$2E2EFJ
  +&FH))&1 ' -(FK,,V4 )
 	T[[$*=*=>
O	
-  	KK8  d.A.AB
 $BJ	  HC!>GGH  KC!A6JJKs8   
AE6 1G(H6A+G%$G%('HH'IIc                :   < V ^8  d   QhRS[ RS[S[,          RR/# )   network_state	templatesreturnN)r
   r   dict)format__classdict__s   "r   __annotate__BSDRenderer.__annotate__   s-     0 0#0 D>0
 
0r   c                    V'       d   W0n         V P                  VR 7       V P                  VR 7       V P                  VR 7       V P	                  4        V P                  V P                  R7       R# ))r?   )runN)r   rF   rV   rm   write_configstart_servicesr#   )r   rq   rr   r   s   &&&&r   render_network_state BSDRenderer.render_network_state   s`      K6]3M2/r   c                    V P                   P                  pV! 4        UUu. uF  w  r#VR 8X  g   K  VNK  	  upp# u uppi )r4   )r    items)r   ickvs   &   r   dhcp_interfacesBSDRenderer.dhcp_interfaces   s7    **00 d2ddaa6kd222s   ;;c                    \        4       hNr<   )r   rz   s   &&r   r|   BSDRenderer.start_services       !##r   c                    \        4       hr   r   )r   r   s   &&r   r{   BSDRenderer.write_config   r   r   c                    \        4       hr   r   )r   rD   rB   s   &&&r   r;   BSDRenderer.rename_interface   r   r   c                    \        4       hr   r   )r   rK   r-   rI   s   &&&&r   rT   BSDRenderer.set_route   r   r   )r#   r    r!   r   r   )NN)F)__name__
__module____qualname____firstlineno__r^   r   interface_routesroute_namesroute6_namesr   r   r%   rF   rV   rm   r}   r   r|   r{   r;   rT   __static_attributes____classdictcell__)rv   s   @r   r   r      sj     &NJKL296JHX(6T,
\0 03$$$$ $r   r   )loggingr7   typingr   	cloudinitr   r   r   cloudinit.distrosr   %cloudinit.distros.parsers.resolv_confr   cloudinit.netr	   cloudinit.net.network_stater
   	getLoggerr   r9   Rendererr    r   r   <module>r      sF     	  % % ' < " 4!X$(## X$r   