Exemplo n.º 1
0
 def _initialize_egress_no_port_security(self, port_id, ovs_ports=None):
     try:
         if ovs_ports is not None:
             ovs_port = ovs_ports.get(port_id)
             if not ovs_port:
                 raise exceptions.OVSFWPortNotFound(port_id=port_id)
         else:
             ovs_port = self.get_ovs_port(port_id)
         vlan_tag = self._get_port_vlan_tag(ovs_port.port_name)
     except exceptions.OVSFWTagNotFound:
         # It's a patch port, don't set anything
         return
     except exceptions.OVSFWPortNotFound as not_found_e:
         LOG.error(
             "Initializing unfiltered port %(port_id)s that does not "
             "exist in ovsdb: %(err)s.", {
                 'port_id': port_id,
                 'err': not_found_e
             })
         return
     self.sg_port_map.unfiltered[port_id] = ovs_port.ofport
     self._add_flow(
         table=ovs_consts.TRANSIENT_TABLE,
         priority=100,
         in_port=ovs_port.ofport,
         actions='set_field:%d->reg%d,'
         'set_field:%d->reg%d,'
         'resubmit(,%d)' %
         (ovs_port.ofport, ovsfw_consts.REG_PORT, vlan_tag,
          ovsfw_consts.REG_NET, ovs_consts.ACCEPT_OR_INGRESS_TABLE))
     self._add_flow(table=ovs_consts.ACCEPT_OR_INGRESS_TABLE,
                    priority=80,
                    reg_port=ovs_port.ofport,
                    actions='resubmit(,%d)' %
                    (ovs_consts.ACCEPTED_EGRESS_TRAFFIC_NORMAL_TABLE))
Exemplo n.º 2
0
    def get_or_create_ofport(self, port):
        port_id = port['device']
        try:
            of_port = self.sg_port_map.ports[port_id]
        except KeyError:
            ovs_port = self.int_br.br.get_vif_port_by_id(port_id)
            if not ovs_port:
                raise exceptions.OVSFWPortNotFound(port_id=port_id)
            port_vlan_id = get_tag_from_other_config(
                self.int_br.br, ovs_port.port_name)
            of_port = OFPort(port, ovs_port, port_vlan_id)
            self.sg_port_map.create_port(of_port, port)
        else:
            self.sg_port_map.update_port(of_port, port)

        return of_port
Exemplo n.º 3
0
    def get_or_create_ofport(self, port):
        """Get ofport specified by port['device'], checking and reflecting
        ofport changes.
        If ofport is nonexistent, create and return one.
        """
        port_id = port['device']
        ovs_port = self.int_br.br.get_vif_port_by_id(port_id)
        if not ovs_port:
            raise exceptions.OVSFWPortNotFound(port_id=port_id)

        try:
            of_port = self.sg_port_map.ports[port_id]
        except KeyError:
            port_vlan_id = get_tag_from_other_config(
                self.int_br.br, ovs_port.port_name)
            of_port = OFPort(port, ovs_port, port_vlan_id)
            self.sg_port_map.create_port(of_port, port)
        else:
            if of_port.ofport != ovs_port.ofport:
                self.sg_port_map.remove_port(of_port)
                of_port = OFPort(port, ovs_port, of_port.vlan_tag)
            self.sg_port_map.update_port(of_port, port)

        return of_port
Exemplo n.º 4
0
 def get_ovs_port(self, port_id):
     ovs_port = self.int_br.br.get_vif_port_by_id(port_id)
     if not ovs_port:
         raise exceptions.OVSFWPortNotFound(port_id=port_id)
     return ovs_port