2
0
mirror of https://github.com/openvswitch/ovs synced 2025-08-31 06:15:47 +00:00

datapath: Remove implementation of port groups.

The "port group" concept seems like a good one, but it has not been
used very much in userspace so far, so before we commit ourselves to
a frozen API that we must maintain forever, remove it.  We can always
add it back in later as a new kind of vport.

Signed-off-by: Ben Pfaff <blp@nicira.com>
This commit is contained in:
Ben Pfaff
2010-10-08 16:36:13 -07:00
parent 2b9d658984
commit f1588b1fa1
17 changed files with 57 additions and 575 deletions

View File

@@ -625,68 +625,6 @@ dpif_port_poll_wait(const struct dpif *dpif)
dpif->dpif_class->port_poll_wait(dpif);
}
/* Retrieves a list of the port numbers in port group 'group' in 'dpif'.
*
* On success, returns 0 and points '*ports' to a newly allocated array of
* integers, each of which is a 'dpif' port number for a port in
* 'group'. Stores the number of elements in the array in '*n_ports'. The
* caller is responsible for freeing '*ports' by calling free().
*
* On failure, returns a positive errno value and sets '*ports' to NULL and
* '*n_ports' to 0. */
int
dpif_port_group_get(const struct dpif *dpif, uint16_t group,
uint16_t **ports, size_t *n_ports)
{
int error;
*ports = NULL;
*n_ports = 0;
for (;;) {
int retval = dpif->dpif_class->port_group_get(dpif, group,
*ports, *n_ports);
if (retval < 0) {
/* Hard error. */
error = -retval;
free(*ports);
*ports = NULL;
*n_ports = 0;
break;
} else if (retval <= *n_ports) {
/* Success. */
error = 0;
*n_ports = retval;
break;
} else {
/* Soft error: there were more ports than we expected in the
* group. Try again. */
free(*ports);
*ports = xcalloc(retval, sizeof **ports);
*n_ports = retval;
}
}
log_operation(dpif, "port_group_get", error);
return error;
}
/* Updates port group 'group' in 'dpif', making it contain the 'n_ports' ports
* whose 'dpif' port numbers are given in 'n_ports'. Returns 0 if
* successful, otherwise a positive errno value.
*
* Behavior is undefined if the values in ports[] are not unique. */
int
dpif_port_group_set(struct dpif *dpif, uint16_t group,
const uint16_t ports[], size_t n_ports)
{
int error;
COVERAGE_INC(dpif_port_group_set);
error = dpif->dpif_class->port_group_set(dpif, group, ports, n_ports);
log_operation(dpif, "port_group_set", error);
return error;
}
/* Deletes all flows from 'dpif'. Returns 0 if successful, otherwise a
* positive errno value. */
int
@@ -918,14 +856,9 @@ dpif_flow_list_all(const struct dpif *dpif,
/* Causes 'dpif' to perform the 'n_actions' actions in 'actions' on the
* Ethernet frame specified in 'packet'.
*
* Pretends that the frame was originally received on the port numbered
* 'in_port'. This affects only ODPAT_OUTPUT_GROUP actions, which will not
* send a packet out their input port. Specify the number of an unused port
* (e.g. UINT16_MAX is currently always unused) to avoid this behavior.
*
* Returns 0 if successful, otherwise a positive errno value. */
int
dpif_execute(struct dpif *dpif, uint16_t in_port,
dpif_execute(struct dpif *dpif,
const union odp_action actions[], size_t n_actions,
const struct ofpbuf *buf)
{
@@ -933,8 +866,7 @@ dpif_execute(struct dpif *dpif, uint16_t in_port,
COVERAGE_INC(dpif_execute);
if (n_actions > 0) {
error = dpif->dpif_class->execute(dpif, in_port, actions,
n_actions, buf);
error = dpif->dpif_class->execute(dpif, actions, n_actions, buf);
} else {
error = 0;
}