summaryrefslogtreecommitdiff
path: root/channels/chan_iax2.c
diff options
context:
space:
mode:
authorSean Bright <sean.bright@gmail.com>2017-07-05 11:29:01 -0400
committerSean Bright <sean.bright@gmail.com>2017-07-05 11:25:58 -0500
commit325eeced6a7edea019cc6a013460f617d10bfc28 (patch)
tree3484e7e9df9081ea97a003964993ff7087d558b3 /channels/chan_iax2.c
parentb62a3f0a67628e99cfceca36bafb1362788700ff (diff)
core: Remove 'Data Retrieval API'
This API was not actively maintained, was not added to new modules (such as res_pjsip), and there exist better alternatives to acquire the same information, such as the ARI. Change-Id: I4b2185a83aeb74798b4ad43ff8f89f971096aa83
Diffstat (limited to 'channels/chan_iax2.c')
-rw-r--r--channels/chan_iax2.c334
1 files changed, 0 insertions, 334 deletions
diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c
index d15b55d72..f40873e9d 100644
--- a/channels/chan_iax2.c
+++ b/channels/chan_iax2.c
@@ -106,7 +106,6 @@
#include "asterisk/timing.h"
#include "asterisk/taskprocessor.h"
#include "asterisk/test.h"
-#include "asterisk/data.h"
#include "asterisk/security_events.h"
#include "asterisk/stasis_endpoints.h"
#include "asterisk/bridge.h"
@@ -1950,19 +1949,6 @@ static int iax2_parse_allow_disallow(struct iax2_codec_pref *pref, iax2_format *
return res;
}
-static int iax2_data_add_codecs(struct ast_data *root, const char *node_name, iax2_format formats)
-{
- int res;
- struct ast_format_cap *cap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_DEFAULT);
- if (!cap) {
- return -1;
- }
- iax2_format_compatibility_bitfield2cap(formats, cap);
- res = ast_data_add_codecs(root, node_name, cap);
- ao2_ref(cap, -1);
- return res;
-}
-
/*!
* \note The only member of the peer passed here guaranteed to be set is the name field
*/
@@ -14555,129 +14541,6 @@ static struct ast_cli_entry cli_iax2[] = {
#endif /* IAXTESTS */
};
-#ifdef TEST_FRAMEWORK
-AST_TEST_DEFINE(test_iax2_peers_get)
-{
- struct ast_data_query query = {
- .path = "/asterisk/channel/iax2/peers",
- .search = "peers/peer/name=test_peer_data_provider"
- };
- struct ast_data *node;
- struct iax2_peer *peer;
-
- switch (cmd) {
- case TEST_INIT:
- info->name = "iax2_peers_get_data_test";
- info->category = "/main/data/iax2/peers/";
- info->summary = "IAX2 peers data providers unit test";
- info->description =
- "Tests whether the IAX2 peers data provider implementation works as expected.";
- return AST_TEST_NOT_RUN;
- case TEST_EXECUTE:
- break;
- }
-
- /* build a test peer */
- peer = build_peer("test_peer_data_provider", NULL, NULL, 0);
- if (!peer) {
- return AST_TEST_FAIL;
- }
- peer->expiry= 1010;
- ao2_link(peers, peer);
-
- node = ast_data_get(&query);
- if (!node) {
- ao2_unlink(peers, peer);
- peer_unref(peer);
- return AST_TEST_FAIL;
- }
-
- /* check returned data node. */
- if (strcmp(ast_data_retrieve_string(node, "peer/name"), "test_peer_data_provider")) {
- ao2_unlink(peers, peer);
- peer_unref(peer);
- ast_data_free(node);
- return AST_TEST_FAIL;
- }
-
- if (ast_data_retrieve_int(node, "peer/expiry") != 1010) {
- ao2_unlink(peers, peer);
- peer_unref(peer);
- ast_data_free(node);
- return AST_TEST_FAIL;
- }
-
- /* release resources */
- ast_data_free(node);
-
- ao2_unlink(peers, peer);
- peer_unref(peer);
-
- return AST_TEST_PASS;
-}
-
-AST_TEST_DEFINE(test_iax2_users_get)
-{
- struct ast_data_query query = {
- .path = "/asterisk/channel/iax2/users",
- .search = "users/user/name=test_user_data_provider"
- };
- struct ast_data *node;
- struct iax2_user *user;
-
- switch (cmd) {
- case TEST_INIT:
- info->name = "iax2_users_get_data_test";
- info->category = "/main/data/iax2/users/";
- info->summary = "IAX2 users data providers unit test";
- info->description =
- "Tests whether the IAX2 users data provider implementation works as expected.";
- return AST_TEST_NOT_RUN;
- case TEST_EXECUTE:
- break;
- }
-
- user = build_user("test_user_data_provider", NULL, NULL, 0);
- if (!user) {
- ast_test_status_update(test, "Failed to build a test user\n");
- return AST_TEST_FAIL;
- }
- user->amaflags = 1010;
- ao2_link(users, user);
-
- node = ast_data_get(&query);
- if (!node) {
- ast_test_status_update(test, "The data query to find our test user failed\n");
- ao2_unlink(users, user);
- user_unref(user);
- return AST_TEST_FAIL;
- }
-
- if (strcmp(ast_data_retrieve_string(node, "user/name"), "test_user_data_provider")) {
- ast_test_status_update(test, "Our data results did not return the test user created in the previous step.\n");
- ao2_unlink(users, user);
- user_unref(user);
- ast_data_free(node);
- return AST_TEST_FAIL;
- }
-
- if (ast_data_retrieve_int(node, "user/amaflags/value") != 1010) {
- ast_test_status_update(test, "The amaflags field in our test user was '%d' not the expected value '1010'\n", ast_data_retrieve_int(node, "user/amaflags/value"));
- ao2_unlink(users, user);
- user_unref(user);
- ast_data_free(node);
- return AST_TEST_FAIL;
- }
-
- ast_data_free(node);
-
- ao2_unlink(users, user);
- user_unref(user);
-
- return AST_TEST_PASS;
-}
-#endif
-
static void cleanup_thread_list(void *head)
{
AST_LIST_HEAD(iax2_thread_list, iax2_thread);
@@ -14743,11 +14606,6 @@ static int __unload_module(void)
ast_manager_unregister( "IAXnetstats" );
ast_manager_unregister( "IAXregistry" );
ast_unregister_application(papp);
-#ifdef TEST_FRAMEWORK
- AST_TEST_UNREGISTER(test_iax2_peers_get);
- AST_TEST_UNREGISTER(test_iax2_users_get);
-#endif
- ast_data_unregister(NULL);
ast_cli_unregister_multiple(cli_iax2, ARRAY_LEN(cli_iax2));
ast_unregister_switch(&iax2_switch);
ast_channel_unregister(&iax2_tech);
@@ -14889,191 +14747,6 @@ container_fail:
return -1;
}
-
-#define DATA_EXPORT_IAX2_PEER(MEMBER) \
- MEMBER(iax2_peer, name, AST_DATA_STRING) \
- MEMBER(iax2_peer, username, AST_DATA_STRING) \
- MEMBER(iax2_peer, secret, AST_DATA_PASSWORD) \
- MEMBER(iax2_peer, dbsecret, AST_DATA_PASSWORD) \
- MEMBER(iax2_peer, outkey, AST_DATA_STRING) \
- MEMBER(iax2_peer, regexten, AST_DATA_STRING) \
- MEMBER(iax2_peer, context, AST_DATA_STRING) \
- MEMBER(iax2_peer, peercontext, AST_DATA_STRING) \
- MEMBER(iax2_peer, mailbox, AST_DATA_STRING) \
- MEMBER(iax2_peer, mohinterpret, AST_DATA_STRING) \
- MEMBER(iax2_peer, mohsuggest, AST_DATA_STRING) \
- MEMBER(iax2_peer, inkeys, AST_DATA_STRING) \
- MEMBER(iax2_peer, cid_num, AST_DATA_STRING) \
- MEMBER(iax2_peer, cid_name, AST_DATA_STRING) \
- MEMBER(iax2_peer, zonetag, AST_DATA_STRING) \
- MEMBER(iax2_peer, parkinglot, AST_DATA_STRING) \
- MEMBER(iax2_peer, expiry, AST_DATA_SECONDS) \
- MEMBER(iax2_peer, callno, AST_DATA_INTEGER) \
- MEMBER(iax2_peer, lastms, AST_DATA_MILLISECONDS) \
- MEMBER(iax2_peer, maxms, AST_DATA_MILLISECONDS) \
- MEMBER(iax2_peer, pokefreqok, AST_DATA_MILLISECONDS) \
- MEMBER(iax2_peer, pokefreqnotok, AST_DATA_MILLISECONDS) \
- MEMBER(iax2_peer, historicms, AST_DATA_INTEGER) \
- MEMBER(iax2_peer, smoothing, AST_DATA_BOOLEAN) \
- MEMBER(iax2_peer, maxcallno, AST_DATA_INTEGER)
-
-AST_DATA_STRUCTURE(iax2_peer, DATA_EXPORT_IAX2_PEER);
-
-static int peers_data_provider_get(const struct ast_data_search *search,
- struct ast_data *data_root)
-{
- struct ast_data *data_peer;
- struct iax2_peer *peer;
- struct ao2_iterator i;
- char status[20];
- struct ast_str *encmethods = ast_str_alloca(256);
-
- i = ao2_iterator_init(peers, 0);
- while ((peer = ao2_iterator_next(&i))) {
- data_peer = ast_data_add_node(data_root, "peer");
- if (!data_peer) {
- peer_unref(peer);
- continue;
- }
-
- ast_data_add_structure(iax2_peer, data_peer, peer);
-
- iax2_data_add_codecs(data_peer, "codecs", peer->capability);
-
- peer_status(peer, status, sizeof(status));
- ast_data_add_str(data_peer, "status", status);
-
- ast_data_add_str(data_peer, "host", ast_sockaddr_stringify_host(&peer->addr));
-
- ast_data_add_str(data_peer, "mask", ast_sockaddr_stringify_addr(&peer->mask));
-
- ast_data_add_int(data_peer, "port", ast_sockaddr_port(&peer->addr));
-
- ast_data_add_bool(data_peer, "trunk", ast_test_flag64(peer, IAX_TRUNK));
-
- ast_data_add_bool(data_peer, "dynamic", ast_test_flag64(peer, IAX_DYNAMIC));
-
- encmethods_to_str(peer->encmethods, &encmethods);
- ast_data_add_str(data_peer, "encryption", peer->encmethods ? ast_str_buffer(encmethods) : "no");
-
- peer_unref(peer);
-
- if (!ast_data_search_match(search, data_peer)) {
- ast_data_remove_node(data_root, data_peer);
- }
- }
- ao2_iterator_destroy(&i);
-
- return 0;
-}
-
-#define DATA_EXPORT_IAX2_USER(MEMBER) \
- MEMBER(iax2_user, name, AST_DATA_STRING) \
- MEMBER(iax2_user, dbsecret, AST_DATA_PASSWORD) \
- MEMBER(iax2_user, accountcode, AST_DATA_STRING) \
- MEMBER(iax2_user, mohinterpret, AST_DATA_STRING) \
- MEMBER(iax2_user, mohsuggest, AST_DATA_STRING) \
- MEMBER(iax2_user, inkeys, AST_DATA_STRING) \
- MEMBER(iax2_user, language, AST_DATA_STRING) \
- MEMBER(iax2_user, cid_num, AST_DATA_STRING) \
- MEMBER(iax2_user, cid_name, AST_DATA_STRING) \
- MEMBER(iax2_user, parkinglot, AST_DATA_STRING) \
- MEMBER(iax2_user, maxauthreq, AST_DATA_INTEGER) \
- MEMBER(iax2_user, curauthreq, AST_DATA_INTEGER)
-
-AST_DATA_STRUCTURE(iax2_user, DATA_EXPORT_IAX2_USER);
-
-static int users_data_provider_get(const struct ast_data_search *search,
- struct ast_data *data_root)
-{
- struct ast_data *data_user, *data_authmethods, *data_enum_node;
- struct iax2_user *user;
- struct ao2_iterator i;
- struct ast_str *auth;
- char *pstr = "";
-
- if (!(auth = ast_str_create(90))) {
- ast_log(LOG_ERROR, "Unable to create temporary string for storing 'secret'\n");
- return 0;
- }
-
- i = ao2_iterator_init(users, 0);
- for (; (user = ao2_iterator_next(&i)); user_unref(user)) {
- data_user = ast_data_add_node(data_root, "user");
- if (!data_user) {
- continue;
- }
-
- ast_data_add_structure(iax2_user, data_user, user);
-
- iax2_data_add_codecs(data_user, "codecs", user->capability);
-
- if (!ast_strlen_zero(user->secret)) {
- ast_str_set(&auth, 0, "%s", user->secret);
- } else if (!ast_strlen_zero(user->inkeys)) {
- ast_str_set(&auth, 0, "Key: %s", user->inkeys);
- } else {
- ast_str_set(&auth, 0, "no secret");
- }
- ast_data_add_password(data_user, "secret", ast_str_buffer(auth));
-
- ast_data_add_str(data_user, "context", user->contexts ? user->contexts->context : DEFAULT_CONTEXT);
-
- /* authmethods */
- data_authmethods = ast_data_add_node(data_user, "authmethods");
- if (!data_authmethods) {
- ast_data_remove_node(data_root, data_user);
- continue;
- }
- ast_data_add_bool(data_authmethods, "rsa", user->authmethods & IAX_AUTH_RSA);
- ast_data_add_bool(data_authmethods, "md5", user->authmethods & IAX_AUTH_MD5);
- ast_data_add_bool(data_authmethods, "plaintext", user->authmethods & IAX_AUTH_PLAINTEXT);
-
- /* amaflags */
- data_enum_node = ast_data_add_node(data_user, "amaflags");
- if (!data_enum_node) {
- ast_data_remove_node(data_root, data_user);
- continue;
- }
- ast_data_add_int(data_enum_node, "value", user->amaflags);
- ast_data_add_str(data_enum_node, "text", ast_channel_amaflags2string(user->amaflags));
-
- ast_data_add_bool(data_user, "access-control", ast_acl_list_is_empty(user->acl) ? 0 : 1);
-
- if (ast_test_flag64(user, IAX_CODEC_NOCAP)) {
- pstr = "REQ only";
- } else if (ast_test_flag64(user, IAX_CODEC_NOPREFS)) {
- pstr = "disabled";
- } else {
- pstr = ast_test_flag64(user, IAX_CODEC_USER_FIRST) ? "caller" : "host";
- }
- ast_data_add_str(data_user, "codec-preferences", pstr);
-
- if (!ast_data_search_match(search, data_user)) {
- ast_data_remove_node(data_root, data_user);
- }
- }
- ao2_iterator_destroy(&i);
-
- ast_free(auth);
- return 0;
-}
-
-static const struct ast_data_handler peers_data_provider = {
- .version = AST_DATA_HANDLER_VERSION,
- .get = peers_data_provider_get
-};
-
-static const struct ast_data_handler users_data_provider = {
- .version = AST_DATA_HANDLER_VERSION,
- .get = users_data_provider_get
-};
-
-static const struct ast_data_entry iax2_data_providers[] = {
- AST_DATA_ENTRY("asterisk/channel/iax2/peers", &peers_data_provider),
- AST_DATA_ENTRY("asterisk/channel/iax2/users", &users_data_provider),
-};
-
/*!
* \brief Load the module
*
@@ -15173,13 +14846,6 @@ static int load_module(void)
return AST_MODULE_LOAD_DECLINE;
}
-#ifdef TEST_FRAMEWORK
- AST_TEST_REGISTER(test_iax2_peers_get);
- AST_TEST_REGISTER(test_iax2_users_get);
-#endif
-
- /* Register AstData providers */
- ast_data_register_multiple(iax2_data_providers, ARRAY_LEN(iax2_data_providers));
ast_cli_register_multiple(cli_iax2, ARRAY_LEN(cli_iax2));
ast_register_application_xml(papp, iax2_prov_app);