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; }
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."); } } }