| Viewing file:  bsd_netops.py (1.86 KB)      -rw-r--r-- Select action/file-type:
 
  (+) |  (+) |  (+) | Code (+) | Session (+) |  (+) | SDB (+) |  (+) |  (+) |  (+) |  (+) |  (+) | 
 
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",
 ],
 )
 
 |