�
�fU � � � d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZm Z d dl
mZmZm
Z
d dlmZ ej e� Zg d�Zg d�Zg d�Zd � Zd
� Zdd�Zd� Zd
� Zd� Z G d� dej8 � Zdd�Zdd�Zy)� N)�Optional)�subp�util)�ParserError�renderer�subnet_is_ipv6)�NetworkState)zpre-up�upzpost-up�downzpre-downz post-down)�
bridge_ageing�bridge_bridgeprio� bridge_fd�
bridge_gcinit�bridge_hello�
bridge_maxage�bridge_maxwait�
bridge_stp)�address�netmask� broadcast�network�metric�gateway�pointtopoint�media�mtu�hostname�
leasehours� leasetime�vendor�client�bootfile�server�hwaddr�provider�frame�netnum�endpoint�local�ttlc �D � g }g d�}|j � D ]} \ }}|dk( r�|dk( r
|d �d|d ��}|s�!||v s�&t |t � rdj |� }d|v r|j dd� }|j d j
||� � � t |� S )
N)
r r r r r �pointopointr �scope�
dns_search�dns_nameserversr r �/�prefix� �_�-� {0} {1})�items�
isinstance�list�join�replace�append�format�sorted)�iface�subnet�content� valid_map�key�values �3/usr/lib/python3/dist-packages/cloudinit/net/eni.py�_iface_add_subnetrE @ s� � ��G��I� �l�l�n�
=�
��U��)����)��%�i�0�&��2B�C�E��S�I�%��%��&��������c�z��k�k�#�s�+���N�N�=�/�/��U�;�<�
=� �'�?�� c
�P � |dk7 rg S g }g d�}g d�}ddi}| d dvr|j d� | j � D ]� \ }}t |t � r | | rdnd }|r||v r�&|d
k( r#|r!||k7 rt j d| d ||� �N||v r9|D ]3 } |j d
j
|j ||� | � � �5 ��t |t � rdj |� }|j d
j
|j ||� |� � �� t |� S )Nr ) �control� device_id�driver�index�inet�mode�name�subnets�type)�bridge_pathcost�bridge_portprio�bridge_waitport�mac_address� hwaddressrP )�bond�bridge�
infiniband�vlan�on�offr zZNetwork config: ignoring %s device-level mtu:%s because ipv4 subnet-level mtu:%s provided.rN r5 r2 )r; r6 r7 �bool�LOG�warningr< |