Esempio n. 1
0
import string
import subprocess
import threading

from core import constants
from core import logger
from core.coreobj import PyCoreNetIf
from core.coreobj import PyCoreNode
from core.enumerations import NodeTypes
from core.misc import nodeutils
from core.misc import utils
from core.netns import vnodeclient
from core.netns.vif import TunTap
from core.netns.vif import VEth

utils.check_executables([constants.IP_BIN])


class SimpleLxcNode(PyCoreNode):
    """
    Provides simple lxc functionality for core nodes.
    """
    valid_deladdrtype = ("inet", "inet6", "inet6link")

    def __init__(self,
                 session,
                 objid=None,
                 name=None,
                 nodedir=None,
                 start=True):
        """
Esempio n. 2
0
File: vnet.py Progetto: yrs1/core
"""

import logging
import os
import threading
import time

from core import CoreCommandError
from core import constants
from core.coreobj import PyCoreNet
from core.misc import utils
from core.netns.vif import GreTap
from core.netns.vif import VEth

utils.check_executables([
    constants.BRCTL_BIN, constants.IP_BIN, constants.EBTABLES_BIN,
    constants.TC_BIN
])

ebtables_lock = threading.Lock()


class EbtablesQueue(object):
    """
    Helper class for queuing up ebtables commands into rate-limited
    atomic commits. This improves performance and reliability when there are
    many WLAN link updates.
    """
    # update rate is every 300ms
    rate = 0.3
    # ebtables
    atomic_file = "/tmp/pycore.ebtables.atomic"
Esempio n. 3
0
"""
netgraph.py: Netgraph helper functions; for now these are wrappers around
ngctl commands.
"""

import subprocess

from core import constants
from core.misc import utils

utils.check_executables([constants.NGCTL_BIN])


def createngnode(node_type, hookstr, name=None):
    """
    Create a new Netgraph node of type and optionally assign name. The
    hook string hookstr should contain two names. This is a string so
    other commands may be inserted after the two names.
    Return the name and netgraph ID of the new node.

    :param node_type: node type to create
    :param hookstr: hook string
    :param name: name
    :return: name and id
    :rtype: tuple
    """
    hook1 = hookstr.split()[0]
    ngcmd = "mkpeer %s %s \n show .%s" % (node_type, hookstr, hook1)
    cmd = [constants.NGCTL_BIN, "-f", "-"]
    cmdid = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
    # err will always be None
Esempio n. 4
0
File: vnet.py Progetto: gsomlo/core
import os
import threading
import time

from core import CoreCommandError
from core import constants
from core import logger
from core.coreobj import PyCoreNet
from core.misc import utils
from core.netns.vif import GreTap
from core.netns.vif import VEth

utils.check_executables([
    constants.BRCTL_BIN,
    constants.IP_BIN,
    constants.EBTABLES_BIN,
    constants.TC_BIN
])

ebtables_lock = threading.Lock()


class EbtablesQueue(object):
    """
    Helper class for queuing up ebtables commands into rate-limited
    atomic commits. This improves performance and reliability when there are
    many WLAN link updates.
    """
    # update rate is every 300ms
    rate = 0.3
    # ebtables
Esempio n. 5
0
from core import constants
from core import logger
from core.api import coreapi
from core.bsd.netgraph import connectngnodes
from core.bsd.netgraph import ngloadkernelmodule
from core.bsd.vnet import NetgraphNet
from core.bsd.vnet import NetgraphPipeNet
from core.bsd.vnode import JailNode
from core.enumerations import LinkTlvs
from core.enumerations import LinkTypes
from core.enumerations import NodeTypes
from core.enumerations import RegisterTlvs
from core.misc import ipaddress
from core.misc import utils

utils.check_executables([constants.IFCONFIG_BIN])


class CoreNode(JailNode):
    apitype = NodeTypes.DEFAULT.value


class PtpNet(NetgraphPipeNet):
    def tonodemsg(self, flags):
        """
        Do not generate a Node Message for point-to-point links. They are
        built using a link message instead.
        """
        pass

    def tolinkmsgs(self, flags):
Esempio n. 6
0
File: vnode.py Progetto: gsomlo/core
from core import CoreCommandError
from core import constants
from core import logger
from core.coreobj import PyCoreNetIf
from core.coreobj import PyCoreNode
from core.enumerations import NodeTypes
from core.misc import nodeutils
from core.misc import utils
from core.misc.ipaddress import MacAddress
from core.netns import vnodeclient
from core.netns.vif import TunTap
from core.netns.vif import VEth

_DEFAULT_MTU = 1500

utils.check_executables([constants.IP_BIN])


class SimpleLxcNode(PyCoreNode):
    """
    Provides simple lxc functionality for core nodes.

    :var nodedir: str
    :var ctrlchnlname: str
    :var client: core.netns.vnodeclient.VnodeClient
    :var pid: int
    :var up: bool
    :var lock: threading.RLock
    :var _mounts: list[tuple[str, str]]
    """
    valid_address_types = {"inet", "inet6", "inet6link"}