o
    f^                     @   s8   d dl mZ d dlmZ d dlmZ G dd deZdS )    )Optionalsubp)NetOpsc                   @   s<  e Zd Ze	d!dedee dejfddZe	d!dedee dejfddZ	ed	ed
efddZ
eddddededee dee fddZedededefddZeddddededee dee fddZedefddZe	d!dededee fddZededefddZedefdd ZdS )"Iproute2N	interfacefamilyreturnc                 C   4   g }|rd|g}t  dg|ddd| dS )N-familyiplinksetdevupr   r   r   family_args r   ?/usr/lib/python3/dist-packages/cloudinit/net/netops/iproute2.pylink_up      zIproute2.link_upc                 C   r
   )Nr   r   r   r   r   downr   r   r   r   r   	link_down   r   zIproute2.link_downcurrent_namenew_namec                 C   s   t  ddd| d|g d S )Nr   r   r   namer   )r   r   r   r   r   link_rename   s   zIproute2.link_rename)gatewaysource_addressrouter   r   c                C   P   g }g }|r|dkrd|g}|rd|g}t  dddd|g|d| | d S )	N0.0.0.0viasrcr   -4r   replacer   r   )r   r   r   r   gateway_argssource_argsr   r   r   	add_route"   ,   	zIproute2.add_routeaddressc                 C   s<   g }|r|dkrd|g}t  dddd|g|d|  d S )Nr!   r"   r   r$   r   appendr   r   )r   r*   r   r&   r   r   r   append_route>   s"   zIproute2.append_routec                C   r    )	Nr!   r"   r#   r   r$   r   delr   r   )r   r*   r   r   r&   r'   r   r   r   	del_routeP   r)   zIproute2.del_routec                   C   s   t  g djS )N)r   r   showz	0.0.0.0/0)r   stdoutr   r   r   r   get_default_routel   s
   zIproute2.get_default_route	broadcastc                 C   s6   g }|rd|g}t  ddddd|g|d|  d S )Nr2   r   r   inetaddraddr   r   )r   r*   r2   broadcast_argsr   r   r   add_addrr   s$   	zIproute2.add_addrc              
   C   s   t  ddddd|d| g d S )Nr   r   r3   r4   r-   r   r   )r   r*   r   r   r   del_addr   s   zIproute2.del_addrc                 C   s   t  dddd| g d S )Nr   r4   flushr   r   )r   r   r   r   
flush_addr   s   zIproute2.flush_addr)N)__name__
__module____qualname__staticmethodstrr   r   
SubpResultr   r   r   r(   r,   r.   r1   r7   r8   r:   r   r   r   r   r      s|    

r   N)typingr   	cloudinitr   cloudinit.net.netopsr   r   r   r   r   r   <module>   s    