summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
1e7db67)
This function is related to actions to ofp-actions seems like a logical
place for it.
Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Jarno Rajahalme <jrajahalme@nicira.com>
ofp_port_t ofp_port = bundle->slaves[i];
enum ofperr error;
ofp_port_t ofp_port = bundle->slaves[i];
enum ofperr error;
- error = ofputil_check_output_port(ofp_port, max_ports);
+ error = ofpact_check_output_port(ofp_port, max_ports);
if (error) {
VLOG_WARN_RL(&rl, "invalid slave %"PRIu16, ofp_port);
return error;
if (error) {
VLOG_WARN_RL(&rl, "invalid slave %"PRIu16, ofp_port);
return error;
output->port = u16_to_ofp(ntohs(oao->port));
output->max_len = ntohs(oao->max_len);
output->port = u16_to_ofp(ntohs(oao->port));
output->max_len = ntohs(oao->max_len);
- return ofputil_check_output_port(output->port, OFPP_MAX);
+ return ofpact_check_output_port(output->port, OFPP_MAX);
- return ofputil_check_output_port(output->port, OFPP_MAX);
+ return ofpact_check_output_port(output->port, OFPP_MAX);
+/* Checks that 'port' is a valid output port for OFPACT_OUTPUT, given that the
+ * switch will never have more than 'max_ports' ports. Returns 0 if 'port' is
+ * valid, otherwise an OpenFlow error code. */
+enum ofperr
+ofpact_check_output_port(ofp_port_t port, ofp_port_t max_ports)
+{
+ switch (port) {
+ case OFPP_IN_PORT:
+ case OFPP_TABLE:
+ case OFPP_NORMAL:
+ case OFPP_FLOOD:
+ case OFPP_ALL:
+ case OFPP_CONTROLLER:
+ case OFPP_NONE:
+ case OFPP_LOCAL:
+ return 0;
+
+ default:
+ if (ofp_to_u16(port) < ofp_to_u16(max_ports)) {
+ return 0;
+ }
+ return OFPERR_OFPBAC_BAD_OUT_PORT;
+ }
+}
+
/* May modify flow->dl_type and flow->vlan_tci, caller must restore them.
*
* Modifies some actions, filling in fields that could not be properly set
/* May modify flow->dl_type and flow->vlan_tci, caller must restore them.
*
* Modifies some actions, filling in fields that could not be properly set
switch (a->type) {
case OFPACT_OUTPUT:
switch (a->type) {
case OFPACT_OUTPUT:
- return ofputil_check_output_port(ofpact_get_OUTPUT(a)->port,
- max_ports);
+ return ofpact_check_output_port(ofpact_get_OUTPUT(a)->port,
+ max_ports);
case OFPACT_CONTROLLER:
return 0;
case OFPACT_CONTROLLER:
return 0;
struct flow *, ofp_port_t max_ports,
uint8_t table_id, bool enforce_consistency);
enum ofperr ofpacts_verify(const struct ofpact ofpacts[], size_t ofpacts_len);
struct flow *, ofp_port_t max_ports,
uint8_t table_id, bool enforce_consistency);
enum ofperr ofpacts_verify(const struct ofpact ofpacts[], size_t ofpacts_len);
+enum ofperr ofpact_check_output_port(ofp_port_t port, ofp_port_t max_ports);
/* Converting ofpacts to OpenFlow. */
size_t ofpacts_put_openflow_actions(const struct ofpact[], size_t ofpacts_len,
/* Converting ofpacts to OpenFlow. */
size_t ofpacts_put_openflow_actions(const struct ofpact[], size_t ofpacts_len,
: ofp_to_u16(ofp10_port) + OFPP11_OFFSET);
}
: ofp_to_u16(ofp10_port) + OFPP11_OFFSET);
}
-/* 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
-ofputil_check_output_port(ofp_port_t port, ofp_port_t max_ports)
-{
- switch (port) {
- case OFPP_IN_PORT:
- case OFPP_TABLE:
- case OFPP_NORMAL:
- case OFPP_FLOOD:
- case OFPP_ALL:
- case OFPP_CONTROLLER:
- case OFPP_NONE:
- case OFPP_LOCAL:
- return 0;
-
- default:
- if (ofp_to_u16(port) < ofp_to_u16(max_ports)) {
- return 0;
- }
- return OFPERR_OFPBAC_BAD_OUT_PORT;
- }
-}
-
#define OFPUTIL_NAMED_PORTS \
OFPUTIL_NAMED_PORT(IN_PORT) \
OFPUTIL_NAMED_PORT(TABLE) \
#define OFPUTIL_NAMED_PORTS \
OFPUTIL_NAMED_PORT(IN_PORT) \
OFPUTIL_NAMED_PORT(TABLE) \
ofp_port_t *ofp10_port);
ovs_be32 ofputil_port_to_ofp11(ofp_port_t ofp10_port);
ofp_port_t *ofp10_port);
ovs_be32 ofputil_port_to_ofp11(ofp_port_t ofp10_port);
-enum ofperr ofputil_check_output_port(ofp_port_t ofp_port,
- ofp_port_t max_ports);
bool ofputil_port_from_string(const char *, ofp_port_t *portp);
void ofputil_format_port(ofp_port_t port, struct ds *);
void ofputil_port_to_string(ofp_port_t, char namebuf[OFP_MAX_PORT_NAME_LEN],
bool ofputil_port_from_string(const char *, ofp_port_t *portp);
void ofputil_format_port(ofp_port_t port, struct ds *);
void ofputil_port_to_string(ofp_port_t, char namebuf[OFP_MAX_PORT_NAME_LEN],