Ejemplo n.º 1
0
    def create(self):
        config = self._dev_config

        slaves = get_slaves(config)
        if len(slaves) == 1:
            realdev_id = slaves[0]
            name = self._if_manager.get_mapped_device(realdev_id).get_name()
            dev_param = "dev %s" % name
        else:
            dev_param = ""

        dev_name = config["name"]
        vxlan_id = int(get_option(config, "id"))
        group_ip = get_option(config, "group_ip")
        remote_ip = get_option(config, "remote_ip")

        if group_ip:
            group_or_remote = "group %s" % group_ip
        elif remote_ip:
            group_or_remote = "remote %s" % remote_ip
        else:
            raise Exception("group or remote must be specified for vxlan")

        dstport = get_option(config, "dstport")
        if not dstport:
            dstport = 0
        else:
            dstport = int(dstport)

        exec_cmd("ip link add %s type vxlan id %d %s %s dstport %d"
                                % (dev_name,
                                   vxlan_id,
                                   dev_param,
                                   group_or_remote,
                                   dstport))
Ejemplo n.º 2
0
    def create(self):
        config = self._dev_config
        dev_name = config["name"]
        params = []

        slaves = get_slaves(config)
        if len(slaves) == 1:
            ul_id = slaves[0]
            ul_name = self._if_manager.get_mapped_device(ul_id).get_name()
            params.append(" dev %s" % ul_name)

        for k in ("ttl", "tos", "key", "ikey", "okey", "local_ip",
                  "remote_ip"):
            v = get_option(config, k)
            if v is not None:
                flag = {"local_ip": "local", "remote_ip": "remote"}.get(k, k)
                params.append(" %s %s" % (flag, v))

        for k in ("seq", "iseq", "oseq", "csum", "icsum", "ocsum"):
            v = get_option(config, k)
            if v is not None and bool_it(v):
                params.append(" " + k)

        exec_cmd("ip tunnel add name %s mode gre%s" %
                 (dev_name, "".join(params)))
Ejemplo n.º 3
0
    def create(self):
        config = self._dev_config
        dev_name = config["name"]
        params = []

        slaves = get_slaves(config)
        if len(slaves) == 1:
            ul_id = slaves[0]
            ul_name = self._if_manager.get_mapped_device(ul_id).get_name()
            params.append(" dev %s" % ul_name)

        for k in ("ttl", "tos", "key", "ikey", "okey",
                  "local_ip", "remote_ip"):
            v = get_option(config, k)
            if v is not None:
                flag = {"local_ip": "local",
                        "remote_ip": "remote"}.get(k, k)
                params.append(" %s %s" % (flag, v))

        for k in ("seq", "iseq", "oseq",
                  "csum", "icsum", "ocsum"):
            v = get_option(config, k)
            if v is not None and bool_it(v):
                params.append(" " + k)

        exec_cmd("ip tunnel add name %s mode gre%s"
                 % (dev_name, "".join(params)))
Ejemplo n.º 4
0
    def create(self):
        config = self._dev_config

        slaves = get_slaves(config)
        if len(slaves) == 1:
            realdev_id = slaves[0]
            name = self._if_manager.get_mapped_device(realdev_id).get_name()
            dev_param = "dev %s" % name
        else:
            dev_param = ""

        dev_name = config["name"]
        vxlan_id = int(get_option(config, "id"))
        group_ip = get_option(config, "group_ip")
        remote_ip = get_option(config, "remote_ip")
        extra = get_option(config, "extra") or ''

        if group_ip:
            group_or_remote = "group %s" % group_ip
        elif remote_ip:
            group_or_remote = "remote %s" % remote_ip
        else:
            raise Exception("group or remote must be specified for vxlan")

        dstport = get_option(config, "dstport")
        if not dstport:
            dstport = 0
        else:
            dstport = int(dstport)

        exec_cmd(
            "ip link add %s type vxlan id %d %s %s dstport %d %s" %
            (dev_name, vxlan_id, dev_param, group_or_remote, dstport, extra))
Ejemplo n.º 5
0
    def _add_team(self):
        config = self._dev_config
        config["master_uuid"] = str(uuid.uuid4())

        s_team_con = dbus.Dictionary({
            'type': 'team',
            'autoconnect': dbus.Boolean(False),
            'uuid': config["master_uuid"],
            'id': config["name"]+"_con"})

        teamd_config = get_option(config, "teamd_config")

        s_team = dbus.Dictionary({
            'interface-name': config["name"],
            'config': teamd_config})

        s_ipv4, s_ipv6 = self._nm_make_ip_settings(config["addresses"])

        connection = dbus.Dictionary({
            'team': s_team,
            'ipv4': s_ipv4,
            'ipv6': s_ipv6,
            'connection': s_team_con})

        self._connection = connection
        self._nm_add_connection()
Ejemplo n.º 6
0
 def assign_name(self, config):
     if "name" in config:
         return config["name"]
     dev_type = config["type"]
     if dev_type == "eth":
         if (not "hwaddr" in config or
             "name" in config):
             return
         hwaddr = normalize_hwaddr(config["hwaddr"])
         for dev in self._devices:
             if dev.get_hwaddr() == hwaddr:
                 return dev.get_name()
     elif dev_type == "bond":
         return self._assign_name_generic("t_bond")
     elif dev_type == "bridge" or dev_type == "ovs_bridge":
         return self._assign_name_generic("t_br")
     elif dev_type == "macvlan":
         return self._assign_name_generic("t_macvlan")
     elif dev_type == "team":
         return self._assign_name_generic("t_team")
     elif dev_type == "vlan":
         netdev_name = self.get_mapped_device(config["slaves"][0]).get_name()
         vlan_tci = get_option(config, "vlan_tci")
         prefix = "%s.%s_" % (netdev_name, vlan_tci)
         return self._assign_name_generic(prefix)
     elif dev_type == "veth":
         return self._assign_name_pair("veth")
     elif dev_type == "vti":
         return self._assign_name_generic("vti")
     elif dev_type == "vti6":
         return self._assign_name_generic("t_ip6vti")
     else:
         return self._assign_name_generic("dev")
Ejemplo n.º 7
0
 def _get_vlan_info(self):
     netdev = self._netdev
     realdev_index = get_slaves(netdev)[0]
     realdev = self._config[realdev_index]["name"]
     dev_name = netdev["name"]
     vlan_tci = int(get_option(netdev, "vlan_tci"))
     return dev_name, realdev, vlan_tci
Ejemplo n.º 8
0
 def _get_vlan_info(self):
     netdev = self._netdev;
     realdev_index = get_slaves(netdev)[0]
     realdev = self._config[realdev_index]["name"]
     dev_name = netdev["name"]
     vlan_tci = int(get_option(netdev, "vlan_tci"))
     return dev_name, realdev, vlan_tci
Ejemplo n.º 9
0
    def _add_team(self):
        config = self._dev_config
        config["master_uuid"] = str(uuid.uuid4())

        s_team_con = dbus.Dictionary({
            'type': 'team',
            'autoconnect': dbus.Boolean(False),
            'uuid': config["master_uuid"],
            'id': config["name"]+"_con"})

        teamd_config = get_option(config, "teamd_config")

        s_team = dbus.Dictionary({
            'interface-name': config["name"],
            'config': teamd_config})

        s_ipv4, s_ipv6 = self._nm_make_ip_settings(config["addresses"])

        connection = dbus.Dictionary({
            'team': s_team,
            'ipv4': s_ipv4,
            'ipv6': s_ipv6,
            'connection': s_team_con})

        self._connection = connection
        self._nm_add_connection()
Ejemplo n.º 10
0
 def assign_name(self, config):
     if "name" in config:
         return config["name"]
     dev_type = config["type"]
     if dev_type == "eth":
         if (not "hwaddr" in config or
             "name" in config):
             return
         hwaddr = normalize_hwaddr(config["hwaddr"])
         for dev in self._devices:
             if dev.get_hwaddr() == hwaddr:
                 return dev.get_name()
     elif dev_type == "bond":
         return self.assign_name_generic("t_bond")
     elif dev_type == "bridge" or dev_type == "ovs_bridge":
         return self.assign_name_generic("t_br")
     elif dev_type == "macvlan":
         return self.assign_name_generic("t_macvlan")
     elif dev_type == "team":
         return self.assign_name_generic("t_team")
     elif dev_type == "vlan":
         netdev_name = self.get_mapped_device(config["slaves"][0]).get_name()
         vlan_tci = get_option(config, "vlan_tci")
         prefix = "%s.%s_" % (netdev_name, vlan_tci)
         return self.assign_name_generic(prefix)
     elif dev_type == "veth":
         return self._assign_name_pair("veth")
     elif dev_type == "vti":
         return self.assign_name_generic("vti")
     elif dev_type == "vti6":
         return self.assign_name_generic("t_ip6vti")
     elif dev_type == "vxlan":
         return self.assign_name_generic("vxlan")
     else:
         return self.assign_name_generic("dev")
Ejemplo n.º 11
0
    def _add_team(self):
        config = self._dev_config
        config["master_uuid"] = str(uuid.uuid4())

        s_team_con = dbus.Dictionary(
            {
                "type": "team",
                "autoconnect": dbus.Boolean(False),
                "interface-name": config["name"],
                "uuid": config["master_uuid"],
                "id": config["name"] + "_con",
            }
        )

        teamd_config = get_option(config, "teamd_config")

        s_team = dbus.Dictionary({"config": teamd_config})

        connection = dbus.Dictionary(
            {
                "team": s_team,
                "ipv4": dbus.Dictionary({"method": "disabled"}, signature="sv"),
                "ipv6": dbus.Dictionary({"method": "ignore"}, signature="sv"),
                "connection": s_team_con,
            }
        )

        self._connection = connection
        self._nm_add_connection()
Ejemplo n.º 12
0
 def _get_vlan_info(self):
     config = self._dev_config;
     realdev_id = get_slaves(config)[0]
     realdev_name = self._if_manager.get_mapped_device(realdev_id).get_name()
     dev_name = config["name"]
     vlan_tci = int(get_option(config, "vlan_tci"))
     return dev_name, realdev_name, vlan_tci
Ejemplo n.º 13
0
 def _get_vlan_info(self):
     config = self._dev_config;
     realdev_id = get_slaves(config)[0]
     realdev_name = self._if_manager.get_mapped_device(realdev_id).get_name()
     dev_name = config["name"]
     vlan_tci = int(get_option(config, "vlan_tci"))
     return dev_name, realdev_name, vlan_tci
Ejemplo n.º 14
0
    def _add_team(self):
        config = self._dev_config
        config["master_uuid"] = str(uuid.uuid4())

        s_team_con = dbus.Dictionary({
            'type': 'team',
            'autoconnect': dbus.Boolean(False),
            'interface-name': config["name"],
            'uuid': config["master_uuid"],
            'id': config["name"] + "_con"
        })

        teamd_config = get_option(config, "teamd_config")

        s_team = dbus.Dictionary({'config': teamd_config})

        connection = dbus.Dictionary({
            'team':
            s_team,
            'ipv4':
            dbus.Dictionary({'method': 'disabled'}, signature='sv'),
            'ipv6':
            dbus.Dictionary({'method': 'ignore'}, signature='sv'),
            'connection':
            s_team_con
        })

        self._connection = connection
        self._nm_add_connection()
Ejemplo n.º 15
0
    def create(self):
        teamd_config = get_option(self._dev_config, "teamd_config")
        teamd_config = prepare_json_str(teamd_config)

        dev_name = self._dev_config["name"]

        dbus_option = " -D" if self._should_enable_dbus() else ""
        exec_cmd("teamd -r -d -c \"%s\" -t %s %s" % (teamd_config, dev_name, dbus_option))
Ejemplo n.º 16
0
    def create(self):
        teamd_config = get_option(self._dev_config, "teamd_config")
        teamd_config = prepare_json_str(teamd_config)

        dev_name = self._dev_config["name"]

        dbus_option = " -D" if self._should_enable_dbus() else ""
        exec_cmd("teamd -r -d -c \"%s\" -t %s %s" % (teamd_config, dev_name, dbus_option))
Ejemplo n.º 17
0
    def create(self):
        config = self._dev_config
        dev_name = config["name"]
        params = []

        slaves = get_slaves(config)
        if len(slaves) == 1:
            ul_id = slaves[0]
            ul_name = self._if_manager.get_mapped_device(ul_id).get_name()
            params.append(" dev %s" % ul_name)

        v = get_option(config, "local_ip")
        if v is not None:
            params.append(" local %s" % v)

        v = get_option(config, "remote_ip")
        if v is not None:
            params.append(" remote %s" % v)

        exec_cmd("ip tunnel add name %s mode ipip%s" %
                 (dev_name, "".join(params)))
Ejemplo n.º 18
0
    def create(self):
        config = self._dev_config
        dev_name = config["name"]
        params = []

        slaves = get_slaves(config)
        if len(slaves) == 1:
            ul_id = slaves[0]
            ul_name = self._if_manager.get_mapped_device(ul_id).get_name()
            params.append(" dev %s" % ul_name)

        v = get_option(config, "local_ip")
        if v is not None:
            params.append(" local %s" % v)

        v = get_option(config, "remote_ip")
        if v is not None:
            params.append(" remote %s" % v)

        exec_cmd("ip tunnel add name %s mode ipip%s"
                 % (dev_name, "".join(params)))
Ejemplo n.º 19
0
    def configure(self):
        self._ports_down()

        teamd_config = get_option(self._dev_config, "teamd_config")
        teamd_config = prepare_json_str(teamd_config)

        dev_name = self._dev_config["name"]

        dbus_option = " -D" if self._should_enable_dbus() else ""
        exec_cmd("teamd -r -d -c \"%s\" -t %s %s" % (teamd_config, dev_name, dbus_option))

        for slave_id in get_slaves(self._dev_config):
            self.slave_add(slave_id)
        self._ports_up()
Ejemplo n.º 20
0
    def configure(self):
        self._ports_down()

        teamd_config = get_option(self._netdev, "teamd_config")
        teamd_config = prepare_json_str(teamd_config)

        dev_name = self._netdev["name"]

        dbus_option = " -D" if self._should_enable_dbus() else ""
        exec_cmd("teamd -r -d -c \"%s\" -t %s %s" %
                 (teamd_config, dev_name, dbus_option))

        for slave_id in get_slaves(self._netdev):
            self.slave_add(slave_id)
        self._ports_up()
Ejemplo n.º 21
0
    def _add_team(self):
        config = self._dev_config
        config["master_uuid"] = str(uuid.uuid4())

        s_team_con = dbus.Dictionary({
            'type': 'team',
            'autoconnect': dbus.Boolean(False),
            'interface-name': config["name"],
            'uuid': config["master_uuid"],
            'id': config["name"]+"_con"})

        teamd_config = get_option(config, "teamd_config")

        s_team = dbus.Dictionary({
            'config': teamd_config})

        connection = dbus.Dictionary({
            'team': s_team,
            'ipv4': dbus.Dictionary({'method': 'disabled'}, signature='sv'),
            'ipv6': dbus.Dictionary({'method': 'ignore'}, signature='sv'),
            'connection': s_team_con})

        self._connection = connection
        self._nm_add_connection()
Ejemplo n.º 22
0
 def _should_enable_dbus(self):
     dbus_disabled = get_option(self._dev_config, "dbus_disabled")
     if not dbus_disabled or bool_it(dbus_disabled):
         return True
     return False
Ejemplo n.º 23
0
 def _assign_name_vlan(self, netdev, config):
     real_netdev = config[netdev["slaves"][0]]
     vlan_tci = get_option(netdev, "vlan_tci")
     netdev["name"] = "%s.%s" % (real_netdev["name"], vlan_tci)
Ejemplo n.º 24
0
 def _should_enable_dbus(self):
     dbus_disabled = get_option(self._dev_config, "dbus_disabled")
     if not dbus_disabled or bool_it(dbus_disabled):
         return True
     return False
Ejemplo n.º 25
0
 def _assign_name_vlan(self, netdev, config):
     real_netdev = config[netdev["slaves"][0]]
     vlan_tci = get_option(netdev, "vlan_tci")
     netdev["name"] = "%s.%s" % (real_netdev["name"], vlan_tci)