def get_iproute(namespace): # From iproute.py: # `IPRoute` -- RTNL API to the current network namespace # `NetNS` -- RTNL API to another network namespace if namespace: # do not try and create the namespace return pyroute2.NetNS(namespace, flags=0, libc=priv_linux.get_cdll()) else: return pyroute2.IPRoute()
def remove_netns(name, **kwargs): """Remove a network namespace. :param name: The name of the namespace to remove """ try: netns.remove(name, libc=priv_linux.get_cdll()) except OSError as e: if e.errno != errno.ENOENT: raise
def create_netns(name, **kwargs): """Create a network namespace. :param name: The name of the namespace to create """ try: netns.create(name, libc=priv_linux.get_cdll()) except OSError as e: if e.errno != errno.EEXIST: raise
def create_netns(name, **kwargs): """Create a network namespace. :param name: The name of the namespace to create """ pid = os.fork() if pid == 0: try: netns._create(name, libc=priv_linux.get_cdll()) except OSError as e: if e.errno != errno.EEXIST: os._exit(1) except Exception: os._exit(1) os._exit(0) else: if os.waitpid(pid, 0)[1]: raise RuntimeError(_('Error creating namespace %s' % name))