U
    Ӈg^                     @   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 eee ejdddZed!eee ejdddZ	eeeddd	Z
eddd
eeee ee dddZeeeedddZeddd
eeee ee dddZeedddZed"eeee dddZeeedddZeedddZdS )#Iproute2N)	interfacefamilyreturnc              	   C   s*   g }|rd|g}t  d|ddd| dfS )N-familyiplinksetdevZup)r   r   r   r   Zfamily_args r   ?/usr/lib/python3/dist-packages/cloudinit/net/netops/iproute2.pylink_up   s    zIproute2.link_upc              	   C   s*   g }|rd|g}t  d|ddd| dfS )Nr
   r   r   r   r   Zdown)r   r   r   r   r   r   	link_down   s    zIproute2.link_downZcurrent_namenew_namec                 C   s   t  ddd| d|g d S )Nr   r   r   namer   r   r   r   r   link_rename   s    zIproute2.link_rename)gatewaysource_address)r   router   r   c                C   sL   g }g }|r|dkrd|g}|r(d|g}t  dddd|f|d| f| d S )	N0.0.0.0viasrcr   -4r   replacer   r   )r   r   r   r   gateway_argssource_argsr   r   r   	add_route"   s(    	zIproute2.add_route)r   addressr   c                 C   s:   g }|r|dkrd|g}t  dddd|f|d| f d S )Nr   r   r   r   r   appendr   r   )r   r#   r   r    r   r   r   append_route>   s    zIproute2.append_route)r   r#   r   r   c                C   sL   g }g }|r|dkrd|g}|r(d|g}t  dddd|f|d| f| d S )	Nr   r   r   r   r   r   delr   r   )r   r#   r   r   r    r!   r   r   r   	del_routeP   s(    	zIproute2.del_route)r	   c                   C   s   t  ddddgjS )Nr   r   Zshowz	0.0.0.0/0)r   stdoutr   r   r   r   get_default_routel   s    
zIproute2.get_default_route)r   r#   	broadcastc                 C   s4   g }|rd|g}t  ddddd|f|d| f d S )Nr*   r   r
   inetaddraddr   r   )r   r#   r*   Zbroadcast_argsr   r   r   add_addrr   s     zIproute2.add_addrr   r#   c              
   C   s   t  ddddd|d| g d S )Nr   r
   r+   r,   r&   r   r   r/   r   r   r   del_addr   s    zIproute2.del_addrr   c                 C   s   t  dddd| g d S )Nr   r,   flushr   r   r1   r   r   r   
flush_addr   s    zIproute2.flush_addr)N)N)N)__name__
__module____qualname__staticmethodstrr   r   Z
SubpResultr   r   r   r"   r%   r'   r)   r.   r0   r3   r   r   r   r   r      sb     
  
   r   N)typingr   Z	cloudinitr   Zcloudinit.net.netopsr   r   r   r   r   r   <module>   s   