PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB` from typing import Optional import cloudinit.net.netops as netops from cloudinit import subp class BsdNetOps(netops.NetOps): @staticmethod def link_up(interface: str): subp.subp(["ifconfig", interface, "up"]) @staticmethod def link_down(interface: str): subp.subp(["ifconfig", interface, "down"]) @staticmethod def add_route( interface: str, route: str, *, gateway: Optional[str] = None, source_address: Optional[str] = None ): subp.subp(["route", "add", route, "-interface", interface]) if gateway and gateway != "0.0.0.0": subp.subp( ["route", "change", route, gateway], ) @staticmethod def append_route(interface: str, address: str, gateway: str): return BsdNetOps.add_route(interface, route=address, gateway=gateway) @staticmethod def del_route( interface: str, address: str, *, gateway: Optional[str] = None, source_address: Optional[str] = None ): subp.subp( ["route", "del", address] + ([gateway] if gateway and gateway != "0.0.0.0" else []), ) @staticmethod def get_default_route() -> str: std, _ = subp.subp(["route", "-nv", "get", "0.0.0.0/0"]) return std.splitlines()[-1].strip() @staticmethod def add_addr(interface: str, address: str, broadcast: str): subp.subp( [ "ifconfig", interface, address, "broadcast", broadcast, "alias", ], ) @staticmethod def del_addr(interface: str, address: str): subp.subp( [ "ifconfig", interface, address, "-alias", ], )