def _delete_all_valve_flows(self): """Delete all flows from all FAUCET tables.""" ofmsgs = [] for table_id in self._all_valve_tables(): ofmsgs.extend(self.valve_flowdel(table_id)) ofmsgs.append(valve_of.groupdel()) return ofmsgs
def build_output_actions(output_dict): """Implement actions to alter packet/output.""" output_actions = [] output_port = None ofmsgs = [] # if destination rewriting selected, rewrite it. if 'dl_dst' in output_dict: output_actions.append(valve_of.set_eth_dst(output_dict['dl_dst'])) # rewrite any VLAN headers. vlan_actions = rewrite_vlan(output_dict) if vlan_actions: output_actions.extend(vlan_actions) if 'port' in output_dict: output_port = output_dict['port'] output_actions.append(valve_of.output_port(output_port)) if 'failover' in output_dict: failover = output_dict['failover'] group_id = failover['group_id'] buckets = [] for port in failover['ports']: buckets.append( valve_of.bucket(watch_port=port, actions=[valve_of.output_port(port)])) ofmsgs.append(valve_of.groupdel(group_id=group_id)) ofmsgs.append(valve_of.groupadd_ff(group_id=group_id, buckets=buckets)) output_actions.append(valve_of.group_act(group_id=group_id)) return (output_port, output_actions, ofmsgs)
def _delete_all_valve_flows(self): """Delete all flows from all FAUCET tables.""" ofmsgs = [] for table_id in self._all_valve_tables(): ofmsgs.extend(self.valve_flowdel(table_id)) if self.dp.group_table: ofmsgs.append(valve_of.groupdel()) return ofmsgs
def _build_group_flood_rules(self, vlan, modify, command): flood_priority = self.flood_priority broadcast_buckets = self._build_group_buckets(vlan, False) unicast_buckets = self._build_group_buckets(vlan, vlan.unicast_flood) group_id = vlan.vid ofmsgs = [] group_mod_method = valve_of.groupadd if modify: group_mod_method = valve_of.groupmod else: ofmsgs.append(valve_of.groupdel(group_id=group_id)) ofmsgs.append( valve_of.groupdel(group_id=group_id + valve_of.VLAN_GROUP_OFFSET)) ofmsgs.append( group_mod_method(group_id=group_id, buckets=broadcast_buckets)) ofmsgs.append( group_mod_method(group_id=group_id + valve_of.VLAN_GROUP_OFFSET, buckets=unicast_buckets)) for unicast_eth_dst, eth_dst, eth_dst_mask in self.FLOOD_DSTS: if unicast_eth_dst and not vlan.unicast_flood: continue group_id = vlan.vid if not eth_dst: group_id = group_id + valve_of.VLAN_GROUP_OFFSET match = self.valve_in_match(self.flood_table, vlan=vlan, eth_dst=eth_dst, eth_dst_mask=eth_dst_mask) ofmsgs.append( self.valve_flowmod(self.flood_table, match=match, command=command, inst=[ valve_of.apply_actions( [valve_of.group_act(group_id)]) ], priority=flood_priority)) flood_priority += 1 return ofmsgs
def _update_nexthop_group(self, is_updated, resolved_ip_gw, vlan, port, eth_src): group_mod_method = None group_id = None buckets = self._nexthop_group_buckets(vlan, port, eth_src) ofmsgs = [] if is_updated: group_mod_method = valve_of.groupmod group_id = self.ip_gw_to_group_id[resolved_ip_gw] else: group_mod_method = valve_of.groupadd group_id = self._group_id_from_ip_gw(resolved_ip_gw) self.ip_gw_to_group_id[resolved_ip_gw] = group_id ofmsgs.append(valve_of.groupdel(group_id=group_id)) ofmsgs.append(group_mod_method(group_id=group_id, buckets=buckets)) return ofmsgs
def delete_all(self): return valve_of.groupdel()
def groupdel(self, group_id): return valve_of.groupdel(group_id=group_id)
def delete_all(self): """Delete all groups.""" self.entries = {} return valve_of.groupdel()
def delete(self): if self.group_id in self.table.entries: del self.table.entries[self.group_id] return valve_of.groupdel(group_id=self.group_id)