This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
fixeria gerrit-no-reply at lists.osmocom.orgfixeria has uploaded this change for review. ( https://gerrit.osmocom.org/c/libosmocore/+/20459 )
Change subject: vty/command: introduce a command to list attributes
......................................................................
vty/command: introduce a command to list attributes
Change-Id: I561114d7416e30cc06b7d49c0bc1217a76039c99
Related: SYS#4937
---
M src/vty/command.c
1 file changed, 88 insertions(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/59/20459/1
diff --git a/src/vty/command.c b/src/vty/command.c
index 7752c91..f35be81 100644
--- a/src/vty/command.c
+++ b/src/vty/command.c
@@ -2963,6 +2963,91 @@
return CMD_SUCCESS;
}
+enum {
+ ATTR_TYPE_GLOBAL = (1 << 0),
+ ATTR_TYPE_LIB = (1 << 1),
+ ATTR_TYPE_APP = (1 << 2),
+};
+
+static void print_attr_list(struct vty *vty, unsigned int attr_mask)
+{
+ const char *desc;
+ unsigned int i;
+ bool found;
+ char flag;
+
+ if (attr_mask & ATTR_TYPE_GLOBAL) {
+ vty_out(vty, " Global attributes:%s", VTY_NEWLINE);
+
+ for (i = 0; i < ARRAY_SIZE(cmd_attr_desc) - 1; i++) {
+ desc = cmd_attr_desc[i].str;
+ flag = '.'; /* FIXME: no flags defined */
+ vty_out(vty, " %c %s%s", flag, desc, VTY_NEWLINE);
+ }
+ }
+
+ if (attr_mask & ATTR_TYPE_LIB) {
+ vty_out(vty, " Library specific attributes:%s", VTY_NEWLINE);
+
+ for (i = 0, found = false; i < _OSMO_CORE_LIB_ATTR_COUNT; i++) {
+ if ((desc = cmd_lib_attr_desc[i]) == NULL)
+ continue;
+ found = true;
+
+ flag = cmd_lib_attr_letters[i];
+ if (flag == '\0')
+ flag = '.';
+
+ vty_out(vty, " %c %s%s", flag, desc, VTY_NEWLINE);
+ }
+
+ if (!found)
+ vty_out(vty, " (no attributes)%s", VTY_NEWLINE);
+ }
+
+ if (attr_mask & ATTR_TYPE_APP) {
+ vty_out(vty, " Application specific attributes:%s", VTY_NEWLINE);
+
+ for (i = 0, found = false; i < ARRAY_SIZE(host.app_info->usr_attr_desc); i++) {
+ if ((desc = host.app_info->usr_attr_desc[i]) == NULL)
+ continue;
+ found = true;
+
+ flag = host.app_info->usr_attr_letters[i];
+ if (flag == '\0')
+ flag = '.';
+
+ vty_out(vty, " %c %s%s", flag, desc, VTY_NEWLINE);
+ }
+
+ if (!found)
+ vty_out(vty, " (no attributes)%s", VTY_NEWLINE);
+ }
+}
+
+gDEFUN(list_attr, list_attr_cmd,
+ "list-attributes (all|application|library|global)",
+ "Print list of attributes\n"
+ "All attributes\n"
+ "Application specific attributes only\n"
+ "Library specific attributes only\n"
+ "Global attributes only\n")
+{
+ unsigned int attr_mask = 0;
+
+ if (argv[0][0] == 'g') /* global */
+ attr_mask |= ATTR_TYPE_GLOBAL;
+ else if (argv[0][0] == 'l') /* library */
+ attr_mask |= ATTR_TYPE_LIB;
+ else if (argv[0][1] == 'p') /* application */
+ attr_mask |= ATTR_TYPE_APP;
+ else if (argv[0][1] == 'l') /* all */
+ attr_mask = 0xff;
+
+ print_attr_list(vty, attr_mask);
+ return CMD_SUCCESS;
+}
+
static int write_config_file(const char *config_file, char **outpath)
{
unsigned int i;
@@ -3928,6 +4013,7 @@
{
install_lib_element(node, &config_help_cmd);
install_lib_element(node, &config_list_cmd);
+ install_lib_element(node, &list_attr_cmd);
install_lib_element(node, &config_write_terminal_cmd);
install_lib_element(node, &config_write_file_cmd);
@@ -3950,6 +4036,7 @@
{
if (cmd == &config_help_cmd
|| cmd == &config_list_cmd
+ || cmd == &list_attr_cmd
|| cmd == &config_write_terminal_cmd
|| cmd == &config_write_file_cmd
|| cmd == &config_write_memory_cmd
@@ -4030,6 +4117,7 @@
install_lib_element(VIEW_NODE, &show_online_help_cmd);
if (terminal) {
install_lib_element(VIEW_NODE, &config_list_cmd);
+ install_lib_element(VIEW_NODE, &list_attr_cmd);
install_lib_element(VIEW_NODE, &config_exit_cmd);
install_lib_element(VIEW_NODE, &config_help_cmd);
install_lib_element(VIEW_NODE, &config_enable_cmd);
--
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/20459
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Change-Id: I561114d7416e30cc06b7d49c0bc1217a76039c99
Gerrit-Change-Number: 20459
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <vyanitskiy at sysmocom.de>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20201005/c39c42f3/attachment.htm>