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 {
Exemple #2
0
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.");
}