summaryrefslogtreecommitdiff
path: root/channels
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
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')
-rw-r--r--channels/chan_dahdi.c233
-rw-r--r--channels/chan_iax2.c334
-rw-r--r--channels/chan_sip.c242
3 files changed, 0 insertions, 809 deletions
diff --git a/channels/chan_dahdi.c b/channels/chan_dahdi.c
index 72fbe6e0c..4f717ffac 100644
--- a/channels/chan_dahdi.c
+++ b/channels/chan_dahdi.c
@@ -119,7 +119,6 @@
#include "asterisk/devicestate.h"
#include "asterisk/paths.h"
#include "asterisk/ccss.h"
-#include "asterisk/data.h"
#include "asterisk/features_config.h"
#include "asterisk/bridge.h"
#include "asterisk/stasis_channels.h"
@@ -791,78 +790,6 @@ const char * const subnames[] = {
"Threeway"
};
-#define DATA_EXPORT_DAHDI_PVT(MEMBER) \
- MEMBER(dahdi_pvt, cid_rxgain, AST_DATA_DOUBLE) \
- MEMBER(dahdi_pvt, rxgain, AST_DATA_DOUBLE) \
- MEMBER(dahdi_pvt, txgain, AST_DATA_DOUBLE) \
- MEMBER(dahdi_pvt, txdrc, AST_DATA_DOUBLE) \
- MEMBER(dahdi_pvt, rxdrc, AST_DATA_DOUBLE) \
- MEMBER(dahdi_pvt, adsi, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, answeronpolarityswitch, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, busydetect, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, callreturn, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, callwaiting, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, callwaitingcallerid, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, cancallforward, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, canpark, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, confirmanswer, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, destroy, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, didtdd, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, dialednone, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, dialing, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, digital, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, dnd, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, echobreak, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, echocanbridged, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, echocanon, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, faxhandled, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, usefaxbuffers, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, bufferoverrideinuse, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, firstradio, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, hanguponpolarityswitch, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, hardwaredtmf, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, hidecallerid, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, hidecalleridname, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, ignoredtmf, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, immediate, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, inalarm, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, mate, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, outgoing, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, permcallwaiting, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, priindication_oob, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, priexclusive, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, pulse, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, pulsedial, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, restartpending, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, restrictcid, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, threewaycalling, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, transfer, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, use_callerid, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, use_callingpres, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, usedistinctiveringdetection, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, dahditrcallerid, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, transfertobusy, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, mwimonitor_neon, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, mwimonitor_fsk, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, mwimonitor_rpas, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, mwimonitoractive, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, mwisendactive, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, inservice, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, locallyblocked, AST_DATA_UNSIGNED_INTEGER) \
- MEMBER(dahdi_pvt, remotelyblocked, AST_DATA_UNSIGNED_INTEGER) \
- MEMBER(dahdi_pvt, manages_span_alarms, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, use_smdi, AST_DATA_BOOLEAN) \
- MEMBER(dahdi_pvt, context, AST_DATA_STRING) \
- MEMBER(dahdi_pvt, defcontext, AST_DATA_STRING) \
- MEMBER(dahdi_pvt, description, AST_DATA_STRING) \
- MEMBER(dahdi_pvt, exten, AST_DATA_STRING) \
- MEMBER(dahdi_pvt, language, AST_DATA_STRING) \
- MEMBER(dahdi_pvt, mohinterpret, AST_DATA_STRING) \
- MEMBER(dahdi_pvt, mohsuggest, AST_DATA_STRING) \
- MEMBER(dahdi_pvt, parkinglot, AST_DATA_STRING)
-
-AST_DATA_STRUCTURE(dahdi_pvt, DATA_EXPORT_DAHDI_PVT);
-
static struct dahdi_pvt *iflist = NULL; /*!< Main interface list start */
static struct dahdi_pvt *ifend = NULL; /*!< Main interface list end */
@@ -17313,7 +17240,6 @@ static int __unload_module(void)
ast_manager_unregister("PRIDebugFileSet");
ast_manager_unregister("PRIDebugFileUnset");
#endif /* defined(HAVE_PRI) */
- ast_data_unregister(NULL);
ast_channel_unregister(&dahdi_tech);
/* Hangup all interfaces if they have an owner */
@@ -19356,163 +19282,6 @@ static int setup_dahdi(int reload)
}
/*!
- * \internal
- * \brief Callback used to generate the dahdi status tree.
- * \param[in] search The search pattern tree.
- * \retval NULL on error.
- * \retval non-NULL The generated tree.
- */
-static int dahdi_status_data_provider_get(const struct ast_data_search *search,
- struct ast_data *data_root)
-{
- int ctl, res, span;
- struct ast_data *data_span, *data_alarms;
- struct dahdi_spaninfo s;
-
- ctl = open("/dev/dahdi/ctl", O_RDWR);
- if (ctl < 0) {
- ast_log(LOG_ERROR, "No DAHDI found. Unable to open /dev/dahdi/ctl: %s\n", strerror(errno));
- return -1;
- }
- for (span = 1; span < DAHDI_MAX_SPANS; ++span) {
- s.spanno = span;
- res = ioctl(ctl, DAHDI_SPANSTAT, &s);
- if (res) {
- continue;
- }
-
- data_span = ast_data_add_node(data_root, "span");
- if (!data_span) {
- continue;
- }
- ast_data_add_str(data_span, "description", s.desc);
-
- /* insert the alarms status */
- data_alarms = ast_data_add_node(data_span, "alarms");
- if (!data_alarms) {
- continue;
- }
-
- ast_data_add_bool(data_alarms, "BLUE", s.alarms & DAHDI_ALARM_BLUE);
- ast_data_add_bool(data_alarms, "YELLOW", s.alarms & DAHDI_ALARM_YELLOW);
- ast_data_add_bool(data_alarms, "RED", s.alarms & DAHDI_ALARM_RED);
- ast_data_add_bool(data_alarms, "LOOPBACK", s.alarms & DAHDI_ALARM_LOOPBACK);
- ast_data_add_bool(data_alarms, "RECOVER", s.alarms & DAHDI_ALARM_RECOVER);
- ast_data_add_bool(data_alarms, "NOTOPEN", s.alarms & DAHDI_ALARM_NOTOPEN);
-
- ast_data_add_int(data_span, "irqmisses", s.irqmisses);
- ast_data_add_int(data_span, "bpviol", s.bpvcount);
- ast_data_add_int(data_span, "crc4", s.crc4count);
- ast_data_add_str(data_span, "framing", s.lineconfig & DAHDI_CONFIG_D4 ? "D4" :
- s.lineconfig & DAHDI_CONFIG_ESF ? "ESF" :
- s.lineconfig & DAHDI_CONFIG_CCS ? "CCS" :
- "CAS");
- ast_data_add_str(data_span, "coding", s.lineconfig & DAHDI_CONFIG_B8ZS ? "B8ZS" :
- s.lineconfig & DAHDI_CONFIG_HDB3 ? "HDB3" :
- s.lineconfig & DAHDI_CONFIG_AMI ? "AMI" :
- "Unknown");
- ast_data_add_str(data_span, "options", s.lineconfig & DAHDI_CONFIG_CRC4 ?
- s.lineconfig & DAHDI_CONFIG_NOTOPEN ? "CRC4/YEL" : "CRC4" :
- s.lineconfig & DAHDI_CONFIG_NOTOPEN ? "YEL" : "");
- ast_data_add_str(data_span, "lbo", lbostr[s.lbo]);
-
- /* if this span doesn't match remove it. */
- if (!ast_data_search_match(search, data_span)) {
- ast_data_remove_node(data_root, data_span);
- }
- }
- close(ctl);
-
- return 0;
-}
-
-/*!
- * \internal
- * \brief Callback used to generate the dahdi channels tree.
- * \param[in] search The search pattern tree.
- * \retval NULL on error.
- * \retval non-NULL The generated tree.
- */
-static int dahdi_channels_data_provider_get(const struct ast_data_search *search,
- struct ast_data *data_root)
-{
- struct dahdi_pvt *tmp;
- struct ast_data *data_channel;
-
- ast_mutex_lock(&iflock);
- for (tmp = iflist; tmp; tmp = tmp->next) {
- data_channel = ast_data_add_node(data_root, "channel");
- if (!data_channel) {
- continue;
- }
-
- ast_data_add_structure(dahdi_pvt, data_channel, tmp);
-
- /* if this channel doesn't match remove it. */
- if (!ast_data_search_match(search, data_channel)) {
- ast_data_remove_node(data_root, data_channel);
- }
- }
- ast_mutex_unlock(&iflock);
-
- return 0;
-}
-
-/*!
- * \internal
- * \brief Callback used to generate the dahdi channels tree.
- * \param[in] search The search pattern tree.
- * \retval NULL on error.
- * \retval non-NULL The generated tree.
- */
-static int dahdi_version_data_provider_get(const struct ast_data_search *search,
- struct ast_data *data_root)
-{
- int pseudo_fd = -1;
- struct dahdi_versioninfo vi = {
- .version = "Unknown",
- .echo_canceller = "Unknown"
- };
-
- if ((pseudo_fd = open("/dev/dahdi/ctl", O_RDONLY)) < 0) {
- ast_log(LOG_ERROR, "Failed to open control file to get version.\n");
- return -1;
- }
-
- if (ioctl(pseudo_fd, DAHDI_GETVERSION, &vi)) {
- ast_log(LOG_ERROR, "Failed to get DAHDI version: %s\n", strerror(errno));
- }
-
- close(pseudo_fd);
-
- ast_data_add_str(data_root, "value", vi.version);
- ast_data_add_str(data_root, "echocanceller", vi.echo_canceller);
-
- return 0;
-}
-
-static const struct ast_data_handler dahdi_status_data_provider = {
- .version = AST_DATA_HANDLER_VERSION,
- .get = dahdi_status_data_provider_get
-};
-
-static const struct ast_data_handler dahdi_channels_data_provider = {
- .version = AST_DATA_HANDLER_VERSION,
- .get = dahdi_channels_data_provider_get
-};
-
-static const struct ast_data_handler dahdi_version_data_provider = {
- .version = AST_DATA_HANDLER_VERSION,
- .get = dahdi_version_data_provider_get
-};
-
-static const struct ast_data_entry dahdi_data_providers[] = {
- AST_DATA_ENTRY("asterisk/channel/dahdi/status", &dahdi_status_data_provider),
- AST_DATA_ENTRY("asterisk/channel/dahdi/channels", &dahdi_channels_data_provider),
- AST_DATA_ENTRY("asterisk/channel/dahdi/version", &dahdi_version_data_provider)
-};
-
-/*!
* \brief Load the module
*
* Module loading including tests for configuration or dependencies.
@@ -19608,8 +19377,6 @@ static int load_module(void)
#endif
ast_cli_register_multiple(dahdi_cli, ARRAY_LEN(dahdi_cli));
- /* register all the data providers */
- ast_data_register_multiple(dahdi_data_providers, ARRAY_LEN(dahdi_data_providers));
memset(round_robin, 0, sizeof(round_robin));
ast_manager_register_xml("DAHDITransfer", 0, action_transfer);
ast_manager_register_xml("DAHDIHangup", 0, action_transferhangup);
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);
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index aaeb01e13..af8267866 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -263,7 +263,6 @@
#include "asterisk/threadstorage.h"
#include "asterisk/translate.h"
#include "asterisk/ast_version.h"
-#include "asterisk/data.h"
#include "asterisk/aoc.h"
#include "asterisk/message.h"
#include "sip/include/sip.h"
@@ -34530,75 +34529,6 @@ AST_TEST_DEFINE(test_sip_mwi_subscribe_parse)
return res;
}
-AST_TEST_DEFINE(test_sip_peers_get)
-{
- struct sip_peer *peer;
- struct ast_data *node;
- struct ast_data_query query = {
- .path = "/asterisk/channel/sip/peers",
- .search = "peers/peer/name=test_peer_data_provider"
- };
-
- switch (cmd) {
- case TEST_INIT:
- info->name = "sip_peers_get_data_test";
- info->category = "/main/data/sip/peers/";
- info->summary = "SIP peers data providers unit test";
- info->description =
- "Tests whether the SIP peers data provider implementation works as expected.";
- return AST_TEST_NOT_RUN;
- case TEST_EXECUTE:
- break;
- }
-
- /* Create the peer that we will retrieve. */
- peer = build_peer("test_peer_data_provider", NULL, NULL, 0, 0);
- if (!peer) {
- return AST_TEST_FAIL;
- }
- peer->type = SIP_TYPE_USER;
- peer->call_limit = 10;
- ao2_link(peers, peer);
-
- /* retrieve the chan_sip/peers tree and check the created peer. */
- node = ast_data_get(&query);
- if (!node) {
- ao2_unlink(peers, peer);
- ao2_ref(peer, -1);
- return AST_TEST_FAIL;
- }
-
- /* compare item. */
- if (strcmp(ast_data_retrieve_string(node, "peer/name"), "test_peer_data_provider")) {
- ao2_unlink(peers, peer);
- ao2_ref(peer, -1);
- ast_data_free(node);
- return AST_TEST_FAIL;
- }
-
- if (strcmp(ast_data_retrieve_string(node, "peer/type"), "user")) {
- ao2_unlink(peers, peer);
- ao2_ref(peer, -1);
- ast_data_free(node);
- return AST_TEST_FAIL;
- }
-
- if (ast_data_retrieve_int(node, "peer/call_limit") != 10) {
- ao2_unlink(peers, peer);
- ao2_ref(peer, -1);
- ast_data_free(node);
- return AST_TEST_FAIL;
- }
-
- /* release resources */
- ast_data_free(node);
-
- ao2_unlink(peers, peer);
- ao2_ref(peer, -1);
-
- return AST_TEST_PASS;
-}
-
/*!
* \brief Imitation TCP reception loop
*
@@ -35130,170 +35060,6 @@ AST_TEST_DEFINE(get_in_brackets_const_test)
#endif
-#define DATA_EXPORT_SIP_PEER(MEMBER) \
- MEMBER(sip_peer, name, AST_DATA_STRING) \
- MEMBER(sip_peer, secret, AST_DATA_PASSWORD) \
- MEMBER(sip_peer, md5secret, AST_DATA_PASSWORD) \
- MEMBER(sip_peer, remotesecret, AST_DATA_PASSWORD) \
- MEMBER(sip_peer, context, AST_DATA_STRING) \
- MEMBER(sip_peer, subscribecontext, AST_DATA_STRING) \
- MEMBER(sip_peer, username, AST_DATA_STRING) \
- MEMBER(sip_peer, accountcode, AST_DATA_STRING) \
- MEMBER(sip_peer, tohost, AST_DATA_STRING) \
- MEMBER(sip_peer, regexten, AST_DATA_STRING) \
- MEMBER(sip_peer, fromuser, AST_DATA_STRING) \
- MEMBER(sip_peer, fromdomain, AST_DATA_STRING) \
- MEMBER(sip_peer, fullcontact, AST_DATA_STRING) \
- MEMBER(sip_peer, cid_num, AST_DATA_STRING) \
- MEMBER(sip_peer, cid_name, AST_DATA_STRING) \
- MEMBER(sip_peer, vmexten, AST_DATA_STRING) \
- MEMBER(sip_peer, language, AST_DATA_STRING) \
- MEMBER(sip_peer, mohinterpret, AST_DATA_STRING) \
- MEMBER(sip_peer, mohsuggest, AST_DATA_STRING) \
- MEMBER(sip_peer, parkinglot, AST_DATA_STRING) \
- MEMBER(sip_peer, useragent, AST_DATA_STRING) \
- MEMBER(sip_peer, mwi_from, AST_DATA_STRING) \
- MEMBER(sip_peer, engine, AST_DATA_STRING) \
- MEMBER(sip_peer, unsolicited_mailbox, AST_DATA_STRING) \
- MEMBER(sip_peer, is_realtime, AST_DATA_BOOLEAN) \
- MEMBER(sip_peer, host_dynamic, AST_DATA_BOOLEAN) \
- MEMBER(sip_peer, autoframing, AST_DATA_BOOLEAN) \
- MEMBER(sip_peer, inuse, AST_DATA_INTEGER) \
- MEMBER(sip_peer, ringing, AST_DATA_INTEGER) \
- MEMBER(sip_peer, onhold, AST_DATA_INTEGER) \
- MEMBER(sip_peer, call_limit, AST_DATA_INTEGER) \
- MEMBER(sip_peer, t38_maxdatagram, AST_DATA_INTEGER) \
- MEMBER(sip_peer, maxcallbitrate, AST_DATA_INTEGER) \
- MEMBER(sip_peer, rtptimeout, AST_DATA_SECONDS) \
- MEMBER(sip_peer, rtpholdtimeout, AST_DATA_SECONDS) \
- MEMBER(sip_peer, rtpkeepalive, AST_DATA_SECONDS) \
- MEMBER(sip_peer, lastms, AST_DATA_MILLISECONDS) \
- MEMBER(sip_peer, maxms, AST_DATA_MILLISECONDS) \
- MEMBER(sip_peer, qualifyfreq, AST_DATA_MILLISECONDS) \
- MEMBER(sip_peer, timer_t1, AST_DATA_MILLISECONDS) \
- MEMBER(sip_peer, timer_b, AST_DATA_MILLISECONDS) \
- MEMBER(sip_peer, description, AST_DATA_STRING)
-
-AST_DATA_STRUCTURE(sip_peer, DATA_EXPORT_SIP_PEER);
-
-static int peers_data_provider_get(const struct ast_data_search *search,
- struct ast_data *data_root)
-{
- struct sip_peer *peer;
- struct ao2_iterator i;
- struct ast_data *data_peer, *data_peer_mailboxes = NULL, *data_peer_mailbox, *enum_node;
- struct ast_data *data_sip_options;
- int total_mailboxes, x;
- struct sip_mailbox *mailbox;
-
- i = ao2_iterator_init(peers, 0);
- while ((peer = ao2_iterator_next(&i))) {
- ao2_lock(peer);
-
- data_peer = ast_data_add_node(data_root, "peer");
- if (!data_peer) {
- ao2_unlock(peer);
- ao2_ref(peer, -1);
- continue;
- }
-
- ast_data_add_structure(sip_peer, data_peer, peer);
-
- /* transfer mode */
- enum_node = ast_data_add_node(data_peer, "allowtransfer");
- if (!enum_node) {
- ao2_unlock(peer);
- ao2_ref(peer, -1);
- continue;
- }
- ast_data_add_str(enum_node, "text", transfermode2str(peer->allowtransfer));
- ast_data_add_int(enum_node, "value", peer->allowtransfer);
-
- /* transports */
- ast_data_add_str(data_peer, "transports", get_transport_list(peer->transports));
-
- /* peer type */
- if ((peer->type & SIP_TYPE_USER) && (peer->type & SIP_TYPE_PEER)) {
- ast_data_add_str(data_peer, "type", "friend");
- } else if (peer->type & SIP_TYPE_PEER) {
- ast_data_add_str(data_peer, "type", "peer");
- } else if (peer->type & SIP_TYPE_USER) {
- ast_data_add_str(data_peer, "type", "user");
- }
-
- /* mailboxes */
- total_mailboxes = 0;
- AST_LIST_TRAVERSE(&peer->mailboxes, mailbox, entry) {
- if (!total_mailboxes) {
- data_peer_mailboxes = ast_data_add_node(data_peer, "mailboxes");
- if (!data_peer_mailboxes) {
- break;
- }
- total_mailboxes++;
- }
-
- data_peer_mailbox = ast_data_add_node(data_peer_mailboxes, "mailbox");
- if (!data_peer_mailbox) {
- continue;
- }
- ast_data_add_str(data_peer_mailbox, "id", mailbox->id);
- }
-
- /* amaflags */
- enum_node = ast_data_add_node(data_peer, "amaflags");
- if (!enum_node) {
- ao2_unlock(peer);
- ao2_ref(peer, -1);
- continue;
- }
- ast_data_add_int(enum_node, "value", peer->amaflags);
- ast_data_add_str(enum_node, "text", ast_channel_amaflags2string(peer->amaflags));
-
- /* sip options */
- data_sip_options = ast_data_add_node(data_peer, "sipoptions");
- if (!data_sip_options) {
- ao2_unlock(peer);
- ao2_ref(peer, -1);
- continue;
- }
- for (x = 0 ; x < ARRAY_LEN(sip_options); x++) {
- ast_data_add_bool(data_sip_options, sip_options[x].text, peer->sipoptions & sip_options[x].id);
- }
-
- /* callingpres */
- enum_node = ast_data_add_node(data_peer, "callingpres");
- if (!enum_node) {
- ao2_unlock(peer);
- ao2_ref(peer, -1);
- continue;
- }
- ast_data_add_int(enum_node, "value", peer->callingpres);
- ast_data_add_str(enum_node, "text", ast_describe_caller_presentation(peer->callingpres));
-
- /* codecs */
- ast_data_add_codecs(data_peer, "codecs", peer->caps);
-
- if (!ast_data_search_match(search, data_peer)) {
- ast_data_remove_node(data_root, data_peer);
- }
-
- ao2_unlock(peer);
- ao2_ref(peer, -1);
- }
- ao2_iterator_destroy(&i);
-
- 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_entry sip_data_providers[] = {
- AST_DATA_ENTRY("asterisk/channel/sip/peers", &peers_data_provider),
-};
-
static const struct ast_sip_api_tech chan_sip_api_provider = {
.version = AST_SIP_API_VERSION,
.name = "chan_sip",
@@ -35414,15 +35180,11 @@ static int load_module(void)
}
#ifdef TEST_FRAMEWORK
- AST_TEST_REGISTER(test_sip_peers_get);
AST_TEST_REGISTER(test_sip_mwi_subscribe_parse);
AST_TEST_REGISTER(test_tcp_message_fragmentation);
AST_TEST_REGISTER(get_in_brackets_const_test);
#endif
- /* Register AstData providers */
- ast_data_register_multiple(sip_data_providers, ARRAY_LEN(sip_data_providers));
-
/* Register all CLI functions for SIP */
ast_cli_register_multiple(cli_sip, ARRAY_LEN(cli_sip));
@@ -35549,14 +35311,10 @@ static int unload_module(void)
#ifdef TEST_FRAMEWORK
ast_unregister_application(app_sipsendcustominfo);
- AST_TEST_UNREGISTER(test_sip_peers_get);
AST_TEST_UNREGISTER(test_sip_mwi_subscribe_parse);
AST_TEST_UNREGISTER(test_tcp_message_fragmentation);
AST_TEST_UNREGISTER(get_in_brackets_const_test);
#endif
- /* Unregister all the AstData providers */
- ast_data_unregister(NULL);
-
/* Unregister CLI commands */
ast_cli_unregister_multiple(cli_sip, ARRAY_LEN(cli_sip));