error = parse_ofp_flow_stats_request_str(&fsr, aggregate,
argc > 2 ? argv[2] : "",
- &usable_protocols);
+ &usable_protocols,
+ !(allowed_protocols
+ & OFPUTIL_P_OF10_ANY));
if (error) {
ovs_fatal(0, "%s", error);
}
char *error;
error = parse_ofp_flow_mod_file(argv[2], command, &fms, &n_fms,
- &usable_protocols);
+ &usable_protocols,
+ !(allowed_protocols & OFPUTIL_P_OF10_ANY));
if (error) {
ovs_fatal(0, "%s", error);
}
enum ofputil_protocol usable_protocols;
error = parse_ofp_flow_mod_str(&fm, argc > 2 ? argv[2] : "", command,
- &usable_protocols);
+ &usable_protocols,
+ !(allowed_protocols
+ & OFPUTIL_P_OF10_ANY));
if (error) {
ovs_fatal(0, "%s", error);
}
char *error;
enum ofputil_protocol usable;
- error = parse_ofp_str(&fm, OFPFC_ADD, ds_cstr(&s), &usable);
+ error = parse_ofp_str(&fm, OFPFC_ADD, ds_cstr(&s), &usable,
+ !(allowed_protocols & OFPUTIL_P_OF10_ANY));
if (error) {
ovs_fatal(0, "%s:%d: %s", filename, line_number, error);
}
struct ofputil_flow_mod fm;
char *error;
- error = parse_ofp_flow_mod_str(&fm, argv[1], OFPFC_ADD, &usable_protocols);
+ error = parse_ofp_flow_mod_str(&fm, argv[1], OFPFC_ADD, &usable_protocols,
+ !(allowed_protocols & OFPUTIL_P_OF10_ANY));
if (error) {
ovs_fatal(0, "%s", error);
}
char *error;
error = parse_ofp_flow_mod_file(argv[1], OFPFC_ADD, &fms, &n_fms,
- &usable_protocols);
+ &usable_protocols,
+ !(allowed_protocols & OFPUTIL_P_OF10_ANY));
if (error) {
ovs_fatal(0, "%s", error);
}
error = ofpacts_pull_openflow11_instructions(&of11_in, OFP11_VERSION,
of11_in.size, &ofpacts);
if (!error) {
- /* Verify actions. */
+ /* Verify actions, enforce consistency. */
struct flow flow;
memset(&flow, 0, sizeof flow);
error = ofpacts_check(ofpacts.data, ofpacts.size, &flow, OFPP_MAX,
- table_id ? atoi(table_id) : 0);
+ table_id ? atoi(table_id) : 0, true);
}
if (error) {
printf("bad OF1.1 instructions: %s\n\n", ofperr_get_name(error));
string_s = match_to_string(&match, OFP_DEFAULT_PRIORITY);
printf("%s -> ", string_s);
fflush(stdout);
- error_s = parse_ofp_str(&fm, -1, string_s, &usable_protocols);
+ error_s = parse_ofp_str(&fm, -1, string_s, &usable_protocols,
+ !(allowed_protocols & OFPUTIL_P_OF10_ANY));
if (error_s) {
ovs_fatal(0, "%s", error_s);
}