static qeo_retcode_t fwd_server_unregister(qeo_factory_t *factory) { qeo_retcode_t rc = QEO_OK; if (!qeocore_parameter_get_number("FWD_DISABLE_LOCATION_SERVICE")) { qeo_security_hndl qeo_sec = factory->qeo_sec; qeo_mgmt_client_retcode_t mgmt_rc = QMGMTCLIENT_EFAIL; qeo_mgmt_client_ctx_t *mgmt_client_ctx = NULL; int nrOfLocators = 0; do { if (QEO_OK != (rc = qeo_security_get_mgmt_client_ctx(qeo_sec, &mgmt_client_ctx))) { qeo_log_e("unregister_forwarder get security mgmt client failed (rc=%d)", rc); break; } /* Now register the forwarder. */ qeo_log_i("unregister the forwarder"); if ((mgmt_rc = qeo_mgmt_client_register_forwarder(mgmt_client_ctx, factory->qeo_id.url, NULL, nrOfLocators, ssl_ctx_cb, qeo_sec)) != QMGMTCLIENT_OK) { qeo_log_e("unregister forwarder failed (rc=%d)", mgmt_rc); rc = QEO_EFAIL; break; } } while (0); } return rc; }
static qeo_retcode_t fwd_server_register(qeo_factory_t *factory) { qeo_retcode_t rc = QEO_OK; if (!qeocore_parameter_get_number("FWD_DISABLE_LOCATION_SERVICE")) { qeo_security_hndl qeo_sec = factory->qeo_sec; qeo_mgmt_client_retcode_t mgmt_rc = QMGMTCLIENT_EFAIL; qeo_mgmt_client_ctx_t *mgmt_client_ctx = NULL; qeo_mgmt_client_locator_t locator={QMGMT_LOCATORTYPE_TCPV4, factory->fwd.locator->address, factory->fwd.locator->port}; int nrOfLocators = 1; do { if ((rc = qeo_security_get_mgmt_client_ctx(qeo_sec, &mgmt_client_ctx)) != QEO_OK) { qeo_log_e("register_forwarder get security mgmt client failed (rc=%d)", rc); break; } /* Now register the forwarder. */ qeo_log_i("register the forwarder with locator address %s:port %d\n", locator.address, locator.port); if ((mgmt_rc = qeo_mgmt_client_register_forwarder(mgmt_client_ctx, factory->qeo_id.url, &locator, nrOfLocators, ssl_ctx_cb, qeo_sec)) != QMGMTCLIENT_OK) { qeo_log_e("register forwarder failed (rc=%d)", mgmt_rc); rc = QEO_EFAIL; break; } } while (0); } return rc; }
END_TEST START_TEST(test_register_error_forwarders) { qeo_mgmt_client_locator_t locators[4]={}; int i = 0; for (i = 0; i < 4; i++) { locators[i].address = "212.118.224.153"; locators[i].type = QMGMT_LOCATORTYPE_TCPV4; locators[i].port = 7400; locators[i].type = QMGMT_LOCATORTYPE_UNKNOWN; ck_assert_int_eq( qeo_mgmt_client_register_forwarder(s_ctx, TEST_URL, locators, i+1, my_ssl_cb, (void*)COOKIE_MAGIC_NUMBER), QMGMTCLIENT_EINVAL); locators[i].type = QMGMT_LOCATORTYPE_TCPV4; locators[i].port = -1; ck_assert_int_eq( qeo_mgmt_client_register_forwarder(s_ctx, TEST_URL, locators, i+1, my_ssl_cb, (void*)COOKIE_MAGIC_NUMBER), QMGMTCLIENT_OK); locators[i].port = 0xFFFF; ck_assert_int_eq( qeo_mgmt_client_register_forwarder(s_ctx, TEST_URL, locators, i+1, my_ssl_cb, (void*)COOKIE_MAGIC_NUMBER), QMGMTCLIENT_OK); locators[i].port = -2; ck_assert_int_eq( qeo_mgmt_client_register_forwarder(s_ctx, TEST_URL, locators, i+1, my_ssl_cb, (void*)COOKIE_MAGIC_NUMBER), QMGMTCLIENT_EINVAL); locators[i].port = 0x10000; ck_assert_int_eq( qeo_mgmt_client_register_forwarder(s_ctx, TEST_URL, locators, i+1, my_ssl_cb, (void*)COOKIE_MAGIC_NUMBER), QMGMTCLIENT_EINVAL); locators[i].port = 6666; locators[i].address = NULL; ck_assert_int_eq( qeo_mgmt_client_register_forwarder(s_ctx, TEST_URL, locators, i+1, my_ssl_cb, (void*)COOKIE_MAGIC_NUMBER), QMGMTCLIENT_EINVAL); locators[i].address = "212.118.224.153"; } }