/*
- * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013 Nicira, Inc.
+ * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013, 2014 Nicira, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
}
if (ids_size < ids->n_controllers * sizeof(ovs_be16)) {
- VLOG_WARN_RL(&rl, "Nicira action dec_ttl_cnt_ids only has %zu bytes "
- "allocated for controller ids. %zu bytes are required for "
+ VLOG_WARN_RL(&rl, "Nicira action dec_ttl_cnt_ids only has %"PRIuSIZE" bytes "
+ "allocated for controller ids. %"PRIuSIZE" bytes are required for "
"%"PRIu16" controllers.", ids_size,
ids->n_controllers * sizeof(ovs_be16), ids->n_controllers);
return OFPERR_OFPBAC_BAD_LEN;
}
static enum ofperr
-push_mpls_from_openflow(ovs_be16 ethertype, enum ofpact_mpls_position position,
- struct ofpbuf *out)
+push_mpls_from_openflow(ovs_be16 ethertype, struct ofpbuf *out)
{
struct ofpact_push_mpls *oam;
}
oam = ofpact_put_PUSH_MPLS(out);
oam->ethertype = ethertype;
- oam->position = position;
return 0;
}
} else { \
return OFPERR_OFPBAC_BAD_LEN; \
} \
- NOT_REACHED();
+ OVS_NOT_REACHED();
#include "ofp-util.def"
case CONSTANT_HTONS(NXAST_SNAT__OBSOLETE):
case OFPUTIL_ACTION_INVALID:
#define OFPAT10_ACTION(ENUM, STRUCT, NAME) case OFPUTIL_##ENUM:
#define OFPAT11_ACTION(ENUM, STRUCT, EXTENSIBLE, NAME) case OFPUTIL_##ENUM:
+#define OFPAT13_ACTION(ENUM, STRUCT, EXTENSIBLE, NAME) case OFPUTIL_##ENUM:
#include "ofp-util.def"
- NOT_REACHED();
+ OVS_NOT_REACHED();
case OFPUTIL_NXAST_RESUBMIT:
resubmit_from_openflow(&a->resubmit, out);
break;
case OFPUTIL_NXAST_PUSH_MPLS:
- error = push_mpls_from_openflow(a->push_mpls.ethertype,
- OFPACT_MPLS_AFTER_VLAN, out);
+ error = push_mpls_from_openflow(a->push_mpls.ethertype, out);
break;
case OFPUTIL_NXAST_SET_MPLS_LABEL:
switch (code) {
case OFPUTIL_ACTION_INVALID:
#define OFPAT11_ACTION(ENUM, STRUCT, EXTENSIBLE, NAME) case OFPUTIL_##ENUM:
+#define OFPAT13_ACTION(ENUM, STRUCT, EXTENSIBLE, NAME) case OFPUTIL_##ENUM:
#include "ofp-util.def"
- NOT_REACHED();
+ OVS_NOT_REACHED();
case OFPUTIL_OFPAT10_OUTPUT:
return output_from_openflow10(&a->output10, out);
ds_init(&s);
ds_put_hex_dump(&s, actions, max_actions * OFP_ACTION_ALIGN, 0, false);
- VLOG_WARN("bad action at offset %#tx (%s):\n%s",
+ VLOG_WARN("bad action at offset %#"PRIxPTR" (%s):\n%s",
(char *)bad_action - (char *)actions,
ofperr_get_name(error), ds_cstr(&s));
ds_destroy(&s);
actions = ofpbuf_try_pull(openflow, actions_len);
if (actions == NULL) {
VLOG_WARN_RL(&rl, "OpenFlow message actions length %u exceeds "
- "remaining message length (%zu)",
+ "remaining message length (%"PRIu32")",
actions_len, openflow->size);
return OFPERR_OFPBRC_BAD_LEN;
}
} else { \
return OFPERR_OFPBAC_BAD_LEN; \
} \
- NOT_REACHED();
+ OVS_NOT_REACHED();
#include "ofp-util.def"
default:
} else if (oh->version == OFP10_VERSION) {
set_field_to_openflow10(sf, openflow);
} else {
- NOT_REACHED();
+ OVS_NOT_REACHED();
}
}
switch (code) {
case OFPUTIL_ACTION_INVALID:
#define OFPAT10_ACTION(ENUM, STRUCT, NAME) case OFPUTIL_##ENUM:
+#define OFPAT13_ACTION(ENUM, STRUCT, EXTENSIBLE, NAME) case OFPUTIL_##ENUM:
#include "ofp-util.def"
- NOT_REACHED();
+ OVS_NOT_REACHED();
case OFPUTIL_OFPAT11_OUTPUT:
return output_from_openflow11(&a->ofp11_output, out);
break;
case OFPUTIL_OFPAT11_PUSH_MPLS:
- /* OpenFlow 1.3 has different semantics. */
- error = push_mpls_from_openflow(a->push.ethertype,
- version >= OFP13_VERSION ?
- OFPACT_MPLS_BEFORE_VLAN :
- OFPACT_MPLS_AFTER_VLAN, out);
+ error = push_mpls_from_openflow(a->push.ethertype, out);
break;
case OFPUTIL_OFPAT11_POP_MPLS:
case OFPACT_WRITE_METADATA:
return false;
default:
- NOT_REACHED();
+ OVS_NOT_REACHED();
}
}
case OFPACT_WRITE_METADATA:
return false;
default:
- NOT_REACHED();
+ OVS_NOT_REACHED();
}
}
}
}
+enum ofperr
+ovs_instruction_type_from_inst_type(enum ovs_instruction_type *instruction_type,
+ const uint16_t inst_type)
+{
+ switch (inst_type) {
+
+#define DEFINE_INST(ENUM, STRUCT, EXTENSIBLE, NAME) \
+ case ENUM: \
+ *instruction_type = OVSINST_##ENUM; \
+ return 0;
+OVS_INSTRUCTIONS
+#undef DEFINE_INST
+
+ default:
+ return OFPERR_OFPBIC_UNKNOWN_INST;
+ }
+}
+
static inline struct ofp11_instruction *
instruction_next(const struct ofp11_instruction *inst)
{
}
if (left) {
- VLOG_WARN_RL(&rl, "bad instruction format at offset %zu",
+ VLOG_WARN_RL(&rl, "bad instruction format at offset %"PRIuSIZE,
(n_insts - left) * sizeof *inst);
return OFPERR_OFPBIC_BAD_LEN;
}
instructions = ofpbuf_try_pull(openflow, instructions_len);
if (instructions == NULL) {
VLOG_WARN_RL(&rl, "OpenFlow message instructions length %u exceeds "
- "remaining message length (%zu)",
+ "remaining message length (%"PRIu32")",
instructions_len, openflow->size);
error = OFPERR_OFPBIC_BAD_LEN;
goto exit;
return 0;
case OFPACT_POP_MPLS:
- flow->dl_type = ofpact_get_POP_MPLS(a)->ethertype;
if (!eth_type_mpls(flow->dl_type)) {
inconsistent_match(usable_protocols);
}
+ flow->dl_type = ofpact_get_POP_MPLS(a)->ethertype;
return 0;
case OFPACT_SAMPLE:
return 0;
default:
- NOT_REACHED();
+ OVS_NOT_REACHED();
}
}
case OFPACT_GOTO_TABLE:
case OFPACT_METER:
case OFPACT_SET_FIELD:
- NOT_REACHED();
+ OVS_NOT_REACHED();
}
}
\f
case OFPACT_WRITE_ACTIONS:
case OFPACT_GOTO_TABLE:
case OFPACT_METER:
- NOT_REACHED();
+ OVS_NOT_REACHED();
case OFPACT_GROUP:
ofputil_put_OFPAT11_GROUP(out)->group_id =
void
ofpact_pad(struct ofpbuf *ofpacts)
{
- unsigned int rem = ofpacts->size % OFPACT_ALIGNTO;
- if (rem) {
- ofpbuf_put_zeros(ofpacts, OFPACT_ALIGNTO - rem);
+ unsigned int pad = PAD_SIZE(ofpacts->size, OFPACT_ALIGNTO);
+ if (pad) {
+ ofpbuf_put_zeros(ofpacts, pad);
}
}