2
0
mirror of https://github.com/openvswitch/ovs synced 2025-08-31 14:25:26 +00:00

openflow: Split OFPAT_* into OFPAT10_* and OFPAT11_*.

An upcoming commit will start referring to OpenFlow 1.1 actions, which are
renumbered relative to OpenFlow 1.0 actions, so this commit prepares by
changing all the existing uses of OFPAT_* to instead use OFPAT10_*.

This commit also introduces the OFPAT11_* constants.

Reviewed-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Ben Pfaff <blp@nicira.com>
This commit is contained in:
Ben Pfaff
2012-02-15 16:22:18 -08:00
parent 6c0386119d
commit 08f94c0e1a
14 changed files with 187 additions and 155 deletions

View File

@@ -2633,7 +2633,7 @@ make_add_simple_flow(const struct cls_rule *rule,
struct ofpbuf *buffer;
buffer = make_add_flow(rule, buffer_id, idle_timeout, sizeof *oao);
ofputil_put_OFPAT_OUTPUT(buffer)->port = htons(out_port);
ofputil_put_OFPAT10_OUTPUT(buffer)->port = htons(out_port);
return buffer;
} else {
return make_add_flow(rule, buffer_id, idle_timeout, 0);
@@ -2765,7 +2765,7 @@ ofputil_port_to_ofp11(uint16_t ofp10_port)
: ofp10_port + OFPP11_OFFSET);
}
/* Checks that 'port' is a valid output port for the OFPAT_OUTPUT action, given
/* Checks that 'port' is a valid output port for the OFPAT10_OUTPUT action, given
* that the switch will never have more than 'max_ports' ports. Returns 0 if
* 'port' is valid, otherwise an OpenFlow return code. */
enum ofperr
@@ -2901,24 +2901,24 @@ validate_actions(const union ofp_action *actions, size_t n_actions,
error = 0;
switch ((enum ofputil_action_code) code) {
case OFPUTIL_OFPAT_OUTPUT:
case OFPUTIL_OFPAT10_OUTPUT:
error = ofputil_check_output_port(ntohs(a->output.port),
max_ports);
break;
case OFPUTIL_OFPAT_SET_VLAN_VID:
case OFPUTIL_OFPAT10_SET_VLAN_VID:
if (a->vlan_vid.vlan_vid & ~htons(0xfff)) {
error = OFPERR_OFPBAC_BAD_ARGUMENT;
}
break;
case OFPUTIL_OFPAT_SET_VLAN_PCP:
case OFPUTIL_OFPAT10_SET_VLAN_PCP:
if (a->vlan_pcp.vlan_pcp & ~7) {
error = OFPERR_OFPBAC_BAD_ARGUMENT;
}
break;
case OFPUTIL_OFPAT_ENQUEUE:
case OFPUTIL_OFPAT10_ENQUEUE:
port = ntohs(((const struct ofp_action_enqueue *) a)->port);
if (port >= max_ports && port != OFPP_IN_PORT
&& port != OFPP_LOCAL) {
@@ -2972,14 +2972,14 @@ validate_actions(const union ofp_action *actions, size_t n_actions,
}
break;
case OFPUTIL_OFPAT_STRIP_VLAN:
case OFPUTIL_OFPAT_SET_NW_SRC:
case OFPUTIL_OFPAT_SET_NW_DST:
case OFPUTIL_OFPAT_SET_NW_TOS:
case OFPUTIL_OFPAT_SET_TP_SRC:
case OFPUTIL_OFPAT_SET_TP_DST:
case OFPUTIL_OFPAT_SET_DL_SRC:
case OFPUTIL_OFPAT_SET_DL_DST:
case OFPUTIL_OFPAT10_STRIP_VLAN:
case OFPUTIL_OFPAT10_SET_NW_SRC:
case OFPUTIL_OFPAT10_SET_NW_DST:
case OFPUTIL_OFPAT10_SET_NW_TOS:
case OFPUTIL_OFPAT10_SET_TP_SRC:
case OFPUTIL_OFPAT10_SET_TP_DST:
case OFPUTIL_OFPAT10_SET_DL_SRC:
case OFPUTIL_OFPAT10_SET_DL_DST:
case OFPUTIL_NXAST_RESUBMIT:
case OFPUTIL_NXAST_SET_TUNNEL:
case OFPUTIL_NXAST_SET_QUEUE:
@@ -3022,10 +3022,10 @@ static const struct ofputil_action action_bad_vendor
static const struct ofputil_action *
ofputil_decode_ofpat_action(const union ofp_action *a)
{
enum ofp_action_type type = ntohs(a->type);
enum ofp10_action_type type = ntohs(a->type);
switch (type) {
#define OFPAT_ACTION(ENUM, STRUCT, NAME) \
#define OFPAT10_ACTION(ENUM, STRUCT, NAME) \
case ENUM: { \
static const struct ofputil_action action = { \
OFPUTIL_##ENUM, \
@@ -3036,7 +3036,7 @@ ofputil_decode_ofpat_action(const union ofp_action *a)
}
#include "ofp-util.def"
case OFPAT_VENDOR:
case OFPAT10_VENDOR:
default:
return &action_bad_type;
}
@@ -3067,7 +3067,7 @@ ofputil_decode_nxast_action(const union ofp_action *a)
}
}
/* Parses 'a' to determine its type. Returns a nonnegative OFPUTIL_OFPAT_* or
/* Parses 'a' to determine its type. Returns a nonnegative OFPUTIL_OFPAT10_* or
* OFPUTIL_NXAST_* constant if successful, otherwise a negative OFPERR_* error
* code.
*
@@ -3083,7 +3083,7 @@ ofputil_decode_action(const union ofp_action *a)
const struct ofputil_action *action;
uint16_t len = ntohs(a->header.len);
if (a->type != htons(OFPAT_VENDOR)) {
if (a->type != htons(OFPAT10_VENDOR)) {
action = ofputil_decode_ofpat_action(a);
} else {
switch (ntohl(a->vendor.vendor)) {
@@ -3104,7 +3104,7 @@ ofputil_decode_action(const union ofp_action *a)
: -OFPERR_OFPBAC_BAD_LEN);
}
/* Parses 'a' and returns its type as an OFPUTIL_OFPAT_* or OFPUTIL_NXAST_*
/* Parses 'a' and returns its type as an OFPUTIL_OFPAT10_* or OFPUTIL_NXAST_*
* constant. The caller must have already validated that 'a' is a valid action
* understood by Open vSwitch (e.g. by a previous successful call to
* ofputil_decode_action()). */
@@ -3113,7 +3113,7 @@ ofputil_decode_action_unsafe(const union ofp_action *a)
{
const struct ofputil_action *action;
if (a->type != htons(OFPAT_VENDOR)) {
if (a->type != htons(OFPAT10_VENDOR)) {
action = ofputil_decode_ofpat_action(a);
} else {
action = ofputil_decode_nxast_action(a);
@@ -3123,7 +3123,7 @@ ofputil_decode_action_unsafe(const union ofp_action *a)
}
/* Returns the 'enum ofputil_action_code' corresponding to 'name' (e.g. if
* 'name' is "output" then the return value is OFPUTIL_OFPAT_OUTPUT), or -1 if
* 'name' is "output" then the return value is OFPUTIL_OFPAT10_OUTPUT), or -1 if
* 'name' is not the name of any action.
*
* ofp-util.def lists the mapping from names to action. */
@@ -3131,7 +3131,7 @@ int
ofputil_action_code_from_name(const char *name)
{
static const char *names[OFPUTIL_N_ACTIONS] = {
#define OFPAT_ACTION(ENUM, STRUCT, NAME) NAME,
#define OFPAT10_ACTION(ENUM, STRUCT, NAME) NAME,
#define NXAST_ACTION(ENUM, STRUCT, EXTENSIBLE, NAME) NAME,
#include "ofp-util.def"
};
@@ -3155,7 +3155,7 @@ void *
ofputil_put_action(enum ofputil_action_code code, struct ofpbuf *buf)
{
switch (code) {
#define OFPAT_ACTION(ENUM, STRUCT, NAME) \
#define OFPAT10_ACTION(ENUM, STRUCT, NAME) \
case OFPUTIL_##ENUM: return ofputil_put_##ENUM(buf);
#define NXAST_ACTION(ENUM, STRUCT, EXTENSIBLE, NAME) \
case OFPUTIL_##ENUM: return ofputil_put_##ENUM(buf);
@@ -3164,7 +3164,7 @@ ofputil_put_action(enum ofputil_action_code code, struct ofpbuf *buf)
NOT_REACHED();
}
#define OFPAT_ACTION(ENUM, STRUCT, NAME) \
#define OFPAT10_ACTION(ENUM, STRUCT, NAME) \
void \
ofputil_init_##ENUM(struct STRUCT *s) \
{ \
@@ -3185,7 +3185,7 @@ ofputil_put_action(enum ofputil_action_code code, struct ofpbuf *buf)
ofputil_init_##ENUM(struct STRUCT *s) \
{ \
memset(s, 0, sizeof *s); \
s->type = htons(OFPAT_VENDOR); \
s->type = htons(OFPAT10_VENDOR); \
s->len = htons(sizeof *s); \
s->vendor = htonl(NX_VENDOR_ID); \
s->subtype = htons(ENUM); \
@@ -3205,9 +3205,9 @@ bool
action_outputs_to_port(const union ofp_action *action, ovs_be16 port)
{
switch (ntohs(action->type)) {
case OFPAT_OUTPUT:
case OFPAT10_OUTPUT:
return action->output.port == port;
case OFPAT_ENQUEUE:
case OFPAT10_ENQUEUE:
return ((const struct ofp_action_enqueue *) action)->port == port;
default:
return false;