On Tue, Dec 2, 2014 at 8:29 AM, Matthew Jordan <[email protected]> wrote:
> Hey George - > > This should have been caught in the review, but do you mind updating > the CHANGES notes to reflect the addition of the CLI command? > > Thanks! > > Will do. > On Mon, Dec 1, 2014 at 5:55 PM, SVN commits to the Asterisk project > <[email protected]> wrote: > > Author: gtjoseph > > Date: Mon Dec 1 17:55:05 2014 > > New Revision: 428725 > > > > URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=428725 > > Log: > > res_pjsip_endpoint_identifier_ip: Add 'show identify(ies)' cli commands > > > > While troubleshooting other things I realized there were no pjsip cli > > commands for identify. This patch adds them. It also also fixes a > > reference leak when a 'show endpoint' displayed identifies and properly > > sets the return code if load_module can't allocate a cli formatter > structure. > > > > Tested-by: George Joseph > > > > Review: https://reviewboard.asterisk.org/r/4212/ > > > > > > Modified: > > branches/12/res/res_pjsip/pjsip_cli.c > > branches/12/res/res_pjsip_endpoint_identifier_ip.c > > > > Modified: branches/12/res/res_pjsip/pjsip_cli.c > > URL: > http://svnview.digium.com/svn/asterisk/branches/12/res/res_pjsip/pjsip_cli.c?view=diff&rev=428725&r1=428724&r2=428725 > > > ============================================================================== > > --- branches/12/res/res_pjsip/pjsip_cli.c (original) > > +++ branches/12/res/res_pjsip/pjsip_cli.c Mon Dec 1 17:55:05 2014 > > @@ -144,6 +144,11 @@ > > if (!ast_ends_with(cmd2, "s")) { > > ast_copy_string(formatter_type, cmd2, > sizeof(formatter_type)); > > is_container = 0; > > + } else if (ast_ends_with(cmd2, "ies")) { > > + /* Take the plural "ies" off of the object name and > re[place with "y". */ > > + int l = strlen(cmd2); > > + snprintf(formatter_type, 64, "%*.*sy", l - 3, l - 3, > cmd2); > > + is_container = 1; > > } else { > > /* Take the plural "s" off of the object name. */ > > ast_copy_string(formatter_type, cmd2, strlen(cmd2)); > > > > Modified: branches/12/res/res_pjsip_endpoint_identifier_ip.c > > URL: > http://svnview.digium.com/svn/asterisk/branches/12/res/res_pjsip_endpoint_identifier_ip.c?view=diff&rev=428725&r1=428724&r2=428725 > > > ============================================================================== > > --- branches/12/res/res_pjsip_endpoint_identifier_ip.c (original) > > +++ branches/12/res/res_pjsip_endpoint_identifier_ip.c Mon Dec 1 > 17:55:05 2014 > > @@ -323,6 +323,7 @@ > > } > > > > ao2_callback(identifies, OBJ_NODATA, callback, args); > > + ao2_cleanup(identifies); > > > > return 0; > > } > > @@ -379,13 +380,25 @@ > > { > > struct ast_sip_cli_context *context = arg; > > int indent = CLI_INDENT_TO_SPACES(context->indent_level); > > - int filler = CLI_MAX_WIDTH - indent - 14; > > + int filler = CLI_MAX_WIDTH - indent - 22; > > > > ast_assert(context->output_buffer != NULL); > > > > ast_str_append(&context->output_buffer, 0, > > - "%*s: <MatchList%*.*s>\n", > > + "%*s: <Identify/Endpoint%*.*s>\n", > > indent, "Identify", filler, filler, CLI_HEADER_FILLER); > > + > > + if (context->recurse) { > > + context->indent_level++; > > + indent = CLI_INDENT_TO_SPACES(context->indent_level); > > + filler = CLI_LAST_TABSTOP - indent - 24; > > + > > + ast_str_append(&context->output_buffer, 0, > > + "%*s: <ip/cidr%*.*s>\n", > > + indent, "Match", filler, filler, > CLI_HEADER_FILLER); > > + > > + context->indent_level--; > > + } > > > > return 0; > > } > > @@ -395,16 +408,70 @@ > > RAII_VAR(struct ast_str *, str, > ast_str_create(MAX_OBJECT_FIELD), ast_free); > > struct ip_identify_match *ident = obj; > > struct ast_sip_cli_context *context = arg; > > + struct ast_ha *match; > > + int indent; > > > > ast_assert(context->output_buffer != NULL); > > > > - ast_str_append(&context->output_buffer, 0, "%*s: ", > > - CLI_INDENT_TO_SPACES(context->indent_level), "Identify"); > > - ast_ha_join_cidr(ident->matches, &str); > > - ast_str_append(&context->output_buffer, 0, "%s\n", > ast_str_buffer(str)); > > - > > - return 0; > > -} > > + ast_str_append(&context->output_buffer, 0, "%*s: %s/%s\n", > > + CLI_INDENT_TO_SPACES(context->indent_level), "Identify", > > + ast_sorcery_object_get_id(ident), ident->endpoint_name); > > + > > + if (context->recurse) { > > + context->indent_level++; > > + indent = CLI_INDENT_TO_SPACES(context->indent_level); > > + > > + for (match = ident->matches; match; match = match->next) > { > > + const char *addr = > ast_sockaddr_stringify_addr(&match->addr); > > + > > + ast_str_append(&context->output_buffer, 0, "%*s: > %s%s/%d\n", > > + indent, > > + "Match", > > + match->sense == AST_SENSE_ALLOW ? "!" : > "", > > + addr, > ast_sockaddr_cidr_bits(&match->netmask)); > > + } > > + > > + context->indent_level--; > > + > > + if (context->indent_level == 0) { > > + ast_str_append(&context->output_buffer, 0, "\n"); > > + } > > + } > > + > > + if (context->show_details > > + || (context->show_details_only_level_0 && > context->indent_level == 0)) { > > + ast_str_append(&context->output_buffer, 0, "\n"); > > + ast_sip_cli_print_sorcery_objectset(ident, context, 0); > > + } > > + > > + return 0; > > +} > > + > > +/* > > + * A function pointer to callback needs to be within the > > + * module in order to avoid problems with an undefined > > + * symbol when the module is loaded. > > + */ > > +static char *my_cli_traverse_objects(struct ast_cli_entry *e, int cmd, > > + struct ast_cli_args *a) > > +{ > > + return ast_sip_cli_traverse_objects(e, cmd, a); > > +} > > + > > +static struct ast_cli_entry cli_identify[] = { > > +AST_CLI_DEFINE(my_cli_traverse_objects, "List PJSIP Identifies", > > + .command = "pjsip list identifies", > > + .usage = "Usage: pjsip list identifies\n" > > + " List the configured PJSIP Identifies\n"), > > +AST_CLI_DEFINE(my_cli_traverse_objects, "Show PJSIP Identifies", > > + .command = "pjsip show identifies", > > + .usage = "Usage: pjsip show identifies\n" > > + " Show the configured PJSIP Identifies\n"), > > +AST_CLI_DEFINE(my_cli_traverse_objects, "Show PJSIP Identify", > > + .command = "pjsip show identify", > > + .usage = "Usage: pjsip show identify <id>\n" > > + " Show the configured PJSIP Identify\n"), > > +}; > > > > static struct ast_sip_cli_formatter_entry *cli_formatter; > > > > @@ -430,7 +497,7 @@ > > cli_formatter = ao2_alloc(sizeof(struct > ast_sip_cli_formatter_entry), NULL); > > if (!cli_formatter) { > > ast_log(LOG_ERROR, "Unable to allocate memory for cli > formatter\n"); > > - return -1; > > + return AST_MODULE_LOAD_DECLINE; > > } > > cli_formatter->name = "identify"; > > cli_formatter->print_header = cli_print_header; > > @@ -441,6 +508,7 @@ > > cli_formatter->retrieve_by_id = cli_retrieve_by_id; > > > > ast_sip_register_cli_formatter(cli_formatter); > > + ast_cli_register_multiple(cli_identify, ARRAY_LEN(cli_identify)); > > > > return AST_MODULE_LOAD_SUCCESS; > > } > > @@ -454,6 +522,7 @@ > > > > static int unload_module(void) > > { > > + ast_cli_unregister_multiple(cli_identify, > ARRAY_LEN(cli_identify)); > > ast_sip_unregister_cli_formatter(cli_formatter); > > > ast_sip_unregister_endpoint_formatter(&endpoint_identify_formatter); > > ast_sip_unregister_endpoint_identifier(&ip_identifier); > > > > > > -- > > _____________________________________________________________________ > > -- Bandwidth and Colocation Provided by http://www.api-digital.com -- > > > > asterisk-commits mailing list > > To UNSUBSCRIBE or update options visit: > > http://lists.digium.com/mailman/listinfo/asterisk-commits > > > > -- > Matthew Jordan > Digium, Inc. | Engineering Manager > 445 Jan Davis Drive NW - Huntsville, AL 35806 - USA > Check us out at: http://digium.com & http://asterisk.org > > -- > _____________________________________________________________________ > -- Bandwidth and Colocation Provided by http://www.api-digital.com -- > > asterisk-dev mailing list > To UNSUBSCRIBE or update options visit: > http://lists.digium.com/mailman/listinfo/asterisk-dev >
-- _____________________________________________________________________ -- Bandwidth and Colocation Provided by http://www.api-digital.com -- asterisk-dev mailing list To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/asterisk-dev
