for (i = 0; i < p->n_tables; i++) {
ots[i].table_id = i;
sprintf(ots[i].name, "table%zu", i);
- ots[i].match = htonll(OFPXMT12_MASK);
- ots[i].wildcards = htonll(OFPXMT12_MASK);
+ ots[i].match = htonll(OFPXMT13_MASK);
+ ots[i].wildcards = htonll(OFPXMT13_MASK);
ots[i].write_actions = htonl(OFPAT11_OUTPUT);
ots[i].apply_actions = htonl(OFPAT11_OUTPUT);
- ots[i].write_setfields = htonll(OFPXMT12_MASK);
- ots[i].apply_setfields = htonll(OFPXMT12_MASK);
+ ots[i].write_setfields = htonll(OFPXMT13_MASK);
+ ots[i].apply_setfields = htonll(OFPXMT13_MASK);
ots[i].metadata_match = htonll(UINT64_MAX);
ots[i].metadata_write = htonll(UINT64_MAX);
ots[i].instructions = htonl(OFPIT11_ALL);
ovs_assert(provider_meter_id.uint32 != UINT32_MAX);
*meterp = meter_create(&mm->meter, provider_meter_id);
}
- return 0;
+ return error;
}
static enum ofperr
{
struct meter *meter = ofproto->meters[mm->meter.meter_id];
enum ofperr error;
+ uint32_t provider_meter_id;
if (!meter) {
return OFPERR_OFPMMFC_UNKNOWN_METER;
}
+ provider_meter_id = meter->provider_meter_id.uint32;
error = ofproto->ofproto_class->meter_set(ofproto,
&meter->provider_meter_id,
&mm->meter);
- ovs_assert(meter->provider_meter_id.uint32 != UINT32_MAX);
+ ovs_assert(meter->provider_meter_id.uint32 == provider_meter_id);
if (!error) {
meter_update(meter, &mm->meter);
}