Re: optional vty items are stricter than expected

2017-08-22 Thread Neels Hofmeyr
Got no replies on this, so I guess I'll submit a patch to try and fix it.

On Sun, Aug 13, 2017 at 01:54:11AM +0200, Neels Hofmeyr wrote:
> Trying to get the newest 2G+3G developments thru the test suites (including 
> the
> vty ones), I face a problem with this VTY definition from libosmo-sccp:
> 
>   routing-key RCONTEXT DPC [si 
> (aal2|bicc|b-isup|h248|isup|sat-isup|sccp|tup)] [ssn SSN]
> 
[...]
> 
> With above command
>   routing-key RCONTEXT DPC [si 
> (aal2|bicc|b-isup|h248|isup|sat-isup|sccp|tup)] [ssn SSN]
> it seems to me it is intended as optionally providing none, si or both si and 
> ssn?

Actually it seems to be all permutations of {si, no-si}x{ssn, no-ssn}

> I guess we need separate command definitions:
> 
>   routing-key RCONTEXT DPC
>   routing-key RCONTEXT DPC si (aal2|bicc|b-isup|h248|isup|sat-isup|sccp|tup)
>   routing-key RCONTEXT DPC si (aal2|bicc|b-isup|h248|isup|sat-isup|sccp|tup) 
> ssn SSN
and
routing-key RCONTEXT DPC ssn SSN

~N


signature.asc
Description: Digital signature


optional vty items are stricter than expected

2017-08-12 Thread Neels Hofmeyr
Trying to get the newest 2G+3G developments thru the test suites (including the
vty ones), I face a problem with this VTY definition from libosmo-sccp:

  routing-key RCONTEXT DPC [si (aal2|bicc|b-isup|h248|isup|sat-isup|sccp|tup)] 
[ssn SSN]

It turns out the square braces indicating optional parameters cannot contain
spaces.

To test, I created

  foo [a] [b]

which works as

  OsmoMSC(config-msc)# foo ?
[a]  a
  OsmoMSC(config-msc)# foo b
  % Unknown command.
  OsmoMSC(config-msc)# foo a
  ok
  OsmoMSC(config-msc)# foo a ?
[b]  b
  OsmoMSC(config-msc)# foo a b
  ok

So far so good, but with:

  foo [a AA] [b]

I get

  OsmoMSC(config-msc)# foo ?
[a  a
  OsmoMSC(config-msc)# foo a
  % There is no matched command.
  OsmoMSC(config-msc)# foo a val
  % Unknown command.

The way this would work is

  foo [a] [AA] [b]

and means that I can issue either 'foo', 'foo a', 'foo a val' or 'foo a val b'.
Not that helpful really.

With above command
  routing-key RCONTEXT DPC [si (aal2|bicc|b-isup|h248|isup|sat-isup|sccp|tup)] 
[ssn SSN]
it seems to me it is intended as optionally providing none, si or both si and 
ssn?

I guess we need separate command definitions:

  routing-key RCONTEXT DPC
  routing-key RCONTEXT DPC si (aal2|bicc|b-isup|h248|isup|sat-isup|sccp|tup)
  routing-key RCONTEXT DPC si (aal2|bicc|b-isup|h248|isup|sat-isup|sccp|tup) 
ssn SSN

Does that make sense?


Until we fix it, the vty tests will not be able to match up the vty doc
parameters and the python tests will fail.

I grepped for all square brace vty definitions we have; the only ones 
attempting to include multiple args in square braces are in osmo_ss7_vty.c:

./libosmo-sccp/src/osmo_ss7_vty.c-265-  "update route POINT_CODE MASK linkset 
LS_NAME [priority PRIO] [qos-class (CLASS|default)]",
./libosmo-sccp/src/osmo_ss7_vty.c-781-  "routing-key RCONTEXT DPC [si 
(aal2|bicc|b-isup|h248|isup|sat-isup|sccp|tup)] [ssn SSN]}",

They aren't usable.

(the 'update route...' is part of the _sg vty command set and thus not caught
by osmo-msc or -bsc vty tests; osmo-stp has no vty tests so far, AFAICT)


These appear to be all square brace vty definitions, most enclose only a single
element and are fine:

▶ grep -n '\(' -A1 $(find . -name "*.c") | grep '[[]'
./osmo-sgsn/src/gprs/sgsn_vty.c-534-"show mm-context tlli HEX [pdp]",
./osmo-sgsn/src/gprs/sgsn_vty.c-553-"show mm-context imsi IMSI [pdp]",
./osmo-sgsn/src/gprs/sgsn_vty.c-570-"show mm-context all [pdp]",
./osmo-sgsn/src/gprs/gb_proxy_vty.c:461:DEFUN(show_gbproxy, show_gbproxy_cmd, 
"show gbproxy [stats]",
./osmo-sgsn/src/gprs/gb_proxy_vty.c-552-"delete-gbproxy-peer <0-65534> 
(only-bvc|only-nsvc|all) [dry-run]",
./osmo-bsc/src/osmo-bsc/osmo_bsc_vty.c-63-  "msc [<0-1000>]", "Configure 
MSC details\n" "MSC connection to configure\n")
./osmo-bsc/src/libbsc/bsc_vty.c:319:DEFUN(show_bts, show_bts_cmd, "show bts 
[<0-255>]",
./osmo-bsc/src/libbsc/bsc_vty.c:1629:DEFUN(cfg_bts_dtxu, cfg_bts_dtxu_cmd, "dtx 
uplink [force]",
./osmo-bsc/src/libbsc/bsc_vty.c-3947-   "bts <0-255> trx <0-255> timeslot <0-7> 
sub-slot <0-7> (activate|deactivate) (hr|fr|efr|amr) [<0-7>]",
./osmo-mgw/src/libosmo-legacy-mgcp/mgcp_vty.c-229-  "show mgcp [stats]",
./libosmo-sccp/src/osmo_ss7_vty.c-110-  "point-code format <1-24> [<1-23>] 
[<1-22>]",
./libosmo-sccp/src/osmo_ss7_vty.c-265-  "update route POINT_CODE MASK linkset 
LS_NAME [priority PRIO] [qos-class (CLASS|default)]",
./libosmo-sccp/src/osmo_ss7_vty.c-781-  "routing-key RCONTEXT DPC [si 
(aal2|bicc|b-isup|h248|isup|sat-isup|sccp|tup)] [ssn SSN]}",
./libosmo-sccp/examples/sccp_test_vty.c-39- "connect-req <0-16777216> 
[DATA]",
./libosmo-sccp/examples/sccp_test_vty.c-53- "connect-resp <0-16777216> 
[DATA]",
./libosmocore/src/gb/gprs_ns_vty.c:216:DEFUN(show_nse, show_nse_cmd, "show ns 
(nsei|nsvc) <0-65535> [stats]",
./libosmocore/src/gb/gprs_bssgp_vty.c:153:DEFUN(show_bvc, show_bvc_cmd, "show 
bssgp nsei <0-65535> [stats]",
./libosmocore/src/vty/command.c-2965-  "no service terminal-length 
[<0-512>]",
./libosmocore/src/vty/logging_vty.c-520-"log gsmtap [HOSTNAME]",

~N



signature.asc
Description: Digital signature