static void create_data(struct meter_config_list *meter_config_list) { struct meter_config *meter_config; struct ofp_meter_band_drop band; struct meter_band *meter_band; int i; int j; TAILQ_INIT(meter_config_list); for (i = 0; i < meter_config_num; i++) { meter_config = meter_config_alloc(OFP_PACKET_MAX_SIZE); if (meter_config != NULL) { meter_config->ofp.length = meter_config_length; meter_config->ofp.flags = (uint16_t) (0x01 + i); meter_config->ofp.meter_id = (uint32_t) (0x02 + i); TAILQ_INIT(&meter_config->band_list); for (j = 0; j < band_num; j++) { band.type = OFPMBT_DROP; band.len = 0x10; band.rate = (uint32_t) (0x03 + j); band.burst_size = (uint32_t) (0x04 + j); meter_band = meter_band_alloc((struct ofp_meter_band_header *)&band); if (meter_band != NULL) { TAILQ_INSERT_TAIL(&meter_config->band_list, meter_band, entry); } else { TEST_FAIL_MESSAGE("meter_band is NULL.") } } TAILQ_INSERT_TAIL(meter_config_list, meter_config, entry); } else {
void meter_create(uint64_t dpid, uint32_t meter_id, size_t band_num) { lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES; struct ofp_meter_mod mod; struct meter_band_list band_list; struct ofp_error error; struct ofp_meter_band_drop band; struct meter_band *meter_band; size_t i; TAILQ_INIT(&band_list); mod.command = OFPMC_ADD; mod.flags = OFPMF_KBPS | OFPMF_BURST; mod.meter_id = meter_id; for (i = 0; i < band_num; i++) { band.type = OFPMBT_DROP; band.len = 16; band.rate = (uint32_t) (1 + i); band.burst_size = (uint32_t) (2 + i); meter_band = meter_band_alloc((struct ofp_meter_band_header *)&band); TAILQ_INSERT_TAIL(&band_list, meter_band, entry); } ret = ofp_meter_mod_add(dpid, &mod, &band_list, &error); TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret, "ofp_meter_mod_add error."); }