Application specific VTY attributes

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/OpenBSC@lists.osmocom.org/.

Vadim Yanitskiy vyanitskiy at sysmocom.de
Wed Sep 23 10:40:39 UTC 2020


Hi Philipp,

while reading your comments to:

https://gerrit.osmocom.org/c/osmo-bsc/+/19670
https://gerrit.osmocom.org/c/osmo-mgw/+/20250

I realized that it would be better to discuss here.

My initial idea was that the absence of attributes (in the command
definition and thus in the VTY reference) implicitly indicates that a
given VTY command in the 'config' node comes into effect immediately.
This way we would only need to add attributes to commands requiring
program restart or reestablishment of some link(s) / connection(s).

However, in some applications *most* of the commands may require full
program restart. Or the opposite: most commands may apply immediately.
Adding same attributes to every command is annoying, so I came up with a
concept of default 'applies when' policy: what if we add a new field to
'struct cmd_node' indicating default attributes of all commands
belonging to it?

  struct cmd_node foo_node = {
    .node = FOO_NODE,
    .prompt = "%s(config-net)# ",
    .vtysh = 1,
    .usrattr = (1 << FOO_VTY_ATTR_RESTART_FULL),  // (!)
  };

This way a DEFUN() command definition would inherit foo_node.usrattr,
and a DEFUN_USRATTR() command definition would override it.

dexter wrote:
> I just wonder if there could be a VTY_ATTR_RESTART_FULL predefined in
> libosmore. Almost any of the osmo program will need it. Maybe also an
> VTY_ATTR_RESTART_IMMEDIATE?

ACK.  I think they could be even moved to generic attributes:

  /*! Attributes (flags) for \ref cmd_element */
  enum {
    CMD_ATTR_DEPRECATED          = (1 << 0),
    CMD_ATTR_HIDDEN              = (1 << 1),
    CMD_ATTR_APPLY_IMMEDIATE     = (1 << 2),
    CMD_ATTR_APPLY_FULL_RESTART  = (1 << 3),
  };

dexter wrote:
> Maybe we could have some standard letters defined in libosmocore
> for standard situations:
> F = Full restart required
> I = Applied Immediately

ACK.  We can also agree that generic (pre-defined) attributes use upper
case letters, while the application specific ones use lower case?

What do you think about these ideas?  If you agree, and nobody has any
objections, I can quickly implement them in libosmocore.  Would be also
nice to know what other developers think. Neels, Harald, Pau, Daniel?

Best regards,
Vadim.

-- 
- Vadim Yanitskiy <vyanitskiy at sysmocom.de>    http://www.sysmocom.de/
=======================================================================
* sysmocom - systems for mobile communications GmbH
* Alt-Moabit 93
* 10559 Berlin, Germany
* Sitz / Registered office: Berlin, HRB 134158 B
* Geschaeftsfuehrer / Managing Director: Harald Welte



More information about the OpenBSC mailing list