![]() Server : Apache/2.4.52 (Ubuntu) System : Linux webserver 6.8.0-49-generic #49~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Wed Nov 6 17:42:15 UTC 2 x86_64 User : www-data ( 33) PHP Version : 8.1.2-1ubuntu2.21 Disable Function : NONE Directory : /lib/python3/dist-packages/cloudinit/net/netops/ |
from typing import Optional from cloudinit import subp from cloudinit.net.netops import NetOps class Iproute2(NetOps): @staticmethod def link_up( interface: str, family: Optional[str] = None ) -> subp.SubpResult: family_args = [] if family: family_args = ["-family", family] return subp.subp( ["ip", *family_args, "link", "set", "dev", interface, "up"] ) @staticmethod def link_down( interface: str, family: Optional[str] = None ) -> subp.SubpResult: family_args = [] if family: family_args = ["-family", family] return subp.subp( ["ip", *family_args, "link", "set", "dev", interface, "down"] ) @staticmethod def link_rename(current_name: str, new_name: str): subp.subp(["ip", "link", "set", current_name, "name", new_name]) @staticmethod def add_route( interface: str, route: str, *, gateway: Optional[str] = None, source_address: Optional[str] = None, ): gateway_args = [] source_args = [] if gateway and gateway != "0.0.0.0": gateway_args = ["via", gateway] if source_address: source_args = ["src", source_address] subp.subp( [ "ip", "-4", "route", "replace", route, *gateway_args, "dev", interface, *source_args, ] ) @staticmethod def append_route(interface: str, address: str, gateway: str): gateway_args = [] if gateway and gateway != "0.0.0.0": gateway_args = ["via", gateway] subp.subp( [ "ip", "-4", "route", "append", address, *gateway_args, "dev", interface, ] ) @staticmethod def del_route( interface: str, address: str, *, gateway: Optional[str] = None, source_address: Optional[str] = None, ): gateway_args = [] source_args = [] if gateway and gateway != "0.0.0.0": gateway_args = ["via", gateway] if source_address: source_args = ["src", source_address] subp.subp( [ "ip", "-4", "route", "del", address, *gateway_args, "dev", interface, *source_args, ] ) @staticmethod def get_default_route() -> str: return subp.subp( ["ip", "route", "show", "0.0.0.0/0"], ).stdout @staticmethod def add_addr( interface: str, address: str, broadcast: Optional[str] = None ): broadcast_args = [] if broadcast: broadcast_args = ["broadcast", broadcast] subp.subp( [ "ip", "-family", "inet", "addr", "add", address, *broadcast_args, "dev", interface, ], update_env={"LANG": "C"}, ) @staticmethod def del_addr(interface: str, address: str): subp.subp( ["ip", "-family", "inet", "addr", "del", address, "dev", interface] ) @staticmethod def flush_addr(interface: str): subp.subp(["ip", "flush", "dev", interface])