diff options
author | George Joseph <george.joseph@fairview5.com> | 2015-10-20 15:02:30 -0600 |
---|---|---|
committer | George Joseph <george.joseph@fairview5.com> | 2015-10-24 10:00:30 -0600 |
commit | 162acd45f744395c19ec5686af30d0abd61ef897 (patch) | |
tree | 66f8aea2d3c63ed344dc5f3bc7b72e038e501db7 /res/res_pjsip/config_transport.c | |
parent | d818e6edceee45ffeeb1b536098d93d3c001aa9e (diff) |
res_pjsip: Add "like" processing to pjsip list and show commands
Add the ability to filter output from pjsip list and show commands
using the "like" predicate like chan_sip.
For endpoints, aors, auths, registrations, identifyies and transports,
the modification was a simple change of an ast_sorcery_retrieve_by_fields
call to ast_sorcery_retrieve_by_regex. For channels and contacts a
little more work had to be done because neither of those objects are
true sorcery objects. That was just removing the non-matching object
from the final container. Of course, a little extra plumbing in the
common pjsip_cli code was needed to parse the "like" and pass the regex
to the get_container callbacks.
Some of the get_container code in res_pjsip_endpoint_identifier was also
refactored for simplicity.
ASTERISK-25477 #close
Reported by: Bryant Zimmerman
Tested by: George Joseph
Change-Id: I646d9326b778aac26bb3e2bcd7fa1346d24434f1
Diffstat (limited to 'res/res_pjsip/config_transport.c')
-rw-r--r-- | res/res_pjsip/config_transport.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/res/res_pjsip/config_transport.c b/res/res_pjsip/config_transport.c index 73030b155..e9986612c 100644 --- a/res/res_pjsip/config_transport.c +++ b/res/res_pjsip/config_transport.c @@ -633,13 +633,13 @@ static int tos_to_str(const void *obj, const intptr_t *args, char **buf) return 0; } -static struct ao2_container *cli_get_container(void) +static struct ao2_container *cli_get_container(const char *regex) { RAII_VAR(struct ao2_container *, container, NULL, ao2_cleanup); struct ao2_container *s_container; - container = ast_sorcery_retrieve_by_fields(ast_sip_get_sorcery(), "transport", - AST_RETRIEVE_FLAG_MULTIPLE | AST_RETRIEVE_FLAG_ALL, NULL); + container = ast_sorcery_retrieve_by_regex(ast_sip_get_sorcery(), "transport", + regex); if (!container) { return NULL; } @@ -720,12 +720,14 @@ static struct ast_cli_entry cli_commands[] = { AST_CLI_DEFINE(handle_pjsip_list_ciphers, "List available OpenSSL cipher names"), AST_CLI_DEFINE(ast_sip_cli_traverse_objects, "List PJSIP Transports", .command = "pjsip list transports", - .usage = "Usage: pjsip list transports\n" - " List the configured PJSIP Transports\n"), + .usage = "Usage: pjsip list transports [ like <pattern> ]\n" + " List the configured PJSIP Transports\n" + " Optional regular expression pattern is used to filter the list.\n"), AST_CLI_DEFINE(ast_sip_cli_traverse_objects, "Show PJSIP Transports", .command = "pjsip show transports", - .usage = "Usage: pjsip show transports\n" - " Show the configured PJSIP Transport\n"), + .usage = "Usage: pjsip show transports [ like <pattern> ]\n" + " Show the configured PJSIP Transport\n" + " Optional regular expression pattern is used to filter the list.\n"), AST_CLI_DEFINE(ast_sip_cli_traverse_objects, "Show PJSIP Transport", .command = "pjsip show transport", .usage = "Usage: pjsip show transport <id>\n" |