Esempio n. 1
0
static lagopus_result_t
change_master2slave(struct channel *channel, void *val) {
  (void) val;
  if (channel_role_get(channel) == OFPCR_ROLE_MASTER) {
    channel_role_set(channel, OFPCR_ROLE_SLAVE);
  }

  return LAGOPUS_RESULT_OK;
}
Esempio n. 2
0
static void
ofp_role_check_wrap(struct channel **channels,
                    struct ofp_header *xid_headers,
                    struct pbuf *pbuf) {
  bool ret;
  int i;
  int ofp_type_num = 10;
  uint8_t type[] = {OFPT_SET_CONFIG, OFPT_TABLE_MOD,
                    OFPT_FLOW_MOD, OFPT_GROUP_MOD,
                    OFPT_PORT_MOD, OFPT_METER_MOD,
                    OFPT_PACKET_OUT, OFPT_PACKET_IN,
                    OFPT_FLOW_REMOVED, OFPT_FEATURES_REQUEST
                   };
  (void) pbuf;

  /* role is equal. */
  channel_role_set(channels[0], OFPCR_ROLE_EQUAL);
  for (i = 0; i < ofp_type_num; i++) {
    xid_headers[0].type = type[i];
    ret = ofp_role_check(channels[0], &xid_headers[0]);
    TEST_ASSERT_EQUAL_MESSAGE(true, ret, "ofp_role_check error.");
  }

  /* role is master. */
  channel_role_set(channels[0], OFPCR_ROLE_MASTER);
  for (i = 0; i < ofp_type_num; i++) {
    xid_headers[0].type = type[i];
    ret = ofp_role_check(channels[0], &xid_headers[0]);
    TEST_ASSERT_EQUAL_MESSAGE(true, ret, "ofp_role_check error.");
  }

  /* role is slave. */
  channel_role_set(channels[0], OFPCR_ROLE_SLAVE);
  for (i = 0; i < ofp_type_num; i++) {
    xid_headers[0].type = type[i];
    ret = ofp_role_check(channels[0], &xid_headers[0]);
    if (type[i] == OFPT_FEATURES_REQUEST) {
      TEST_ASSERT_EQUAL_MESSAGE(true, ret, "ofp_role_check error.");
    } else {
      TEST_ASSERT_EQUAL_MESSAGE(false, ret, "ofp_role_check error.");
    }
  }
}