lagopus_result_t channel_mgr_controller_set(const char *channel_name, datastore_controller_role_t role, datastore_controller_connection_type_t type) { uint32_t ofp_role, prev_role; lagopus_result_t ret; struct channel *chan; ret = channel_mgr_channel_lookup_by_name(channel_name, &chan); if (ret != LAGOPUS_RESULT_OK) { return ret; } prev_role = channel_role_get(chan); switch (role) { case DATASTORE_CONTROLLER_ROLE_EQUAL: ofp_role = OFPCR_ROLE_EQUAL; break; case DATASTORE_CONTROLLER_ROLE_MASTER: ofp_role = OFPCR_ROLE_MASTER; break; case DATASTORE_CONTROLLER_ROLE_SLAVE: ofp_role = OFPCR_ROLE_SLAVE; break; default: return LAGOPUS_RESULT_INVALID_ARGS; } channel_role_set(chan, ofp_role); if (type == DATASTORE_CONTROLLER_CONNECTION_TYPE_MAIN) { ret = channel_auxiliary_set(chan, false); } else if (type == DATASTORE_CONTROLLER_CONNECTION_TYPE_AUXILIARY) { ret = channel_auxiliary_set(chan, true); } else { channel_role_set(chan, prev_role); return LAGOPUS_RESULT_INVALID_ARGS; } if (ret != LAGOPUS_RESULT_OK) { channel_role_set(chan, prev_role); return ret; } return LAGOPUS_RESULT_OK; }
void test_channel_auxiliary_get_set(void) { bool is_auxiliary; lagopus_result_t ret; struct channel *channel; channel = s_create_data_channel(); /* Call func. */ ret = channel_auxiliary_set(channel, true); TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret, "channel_auxiliary_set() error."); ret = channel_auxiliary_get(channel, &is_auxiliary); TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret, "channel_auxiliary_get() error."); TEST_ASSERT_EQUAL_MESSAGE(is_auxiliary, true, "auxiliary error."); session_destroy(channel_session_get(channel)); free(channel); }