summaryrefslogtreecommitdiff
path: root/vtysh/vtysh.c
AgeCommit message (Collapse)Author
2025-04-08vtysh: clean up variable-shadow warningsMark Stapp
Clean up various variable-shadowing warnings from -Wshadow Signed-off-by: Mark Stapp <mjs@cisco.com>
2025-02-27vtysh: Add `no static-sids` commandCarmine Scarpitta
Previous commits introduced the `no` form for the `static-sids` command. This change allow users to remove all static SIDs at once. This commit makes the `no static-sids` command available in vtysh. ``` router# config router(config)# segment-routing router(sr)# srv6 router(srv6)# no static-sids ``` Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2025-02-04Merge pull request #17336 from forrestchu/sbfdRuss White
implement SBFD
2025-01-23bfdd: add vtysh commands for sbfdwumu.zsl
config examples: SBFD Initiator: peer 200::D bfd-mode sbfd-init bfd-name a-b-d multihop local-address 200::A remote-discr 456 srv6-source-ipv6 200::A srv6-encap-data 100::B 100::D SBFD Reflector: sbfd reflector source-address 200::D discriminator 456 Echo SBFD: peer 200::A bfd-mode sbfd-echo bfd-name a-b-d local-address 200::A srv6-source-ipv6 200::A srv6-encap-data 100::B 100::D Signed-off-by: wumu.zsl <wumu.zsl@alibaba-inc.com>
2025-01-18vtysh: Add SRv6 static SIDs CLI to vtyshYuqing Zhao
Signed-off-by: Yuqing Zhao <galadriel.zyq@alibaba-inc.com>
2024-12-03lib,vtysh: Use backoff setsockopt option for freebsdDonald Sharp
Commit: 9112fb367b1ae0168b4e7a81f41c2ca621979199 Introduced the idea of setting the socket buffer send/receive sizes. BSD's in general have the fun issue of not allowing nearly as large as a size as linux. Since the above commit was developed on linux and not run on bsd it was never tested. Modify the codebase to use the backoff setsockopt that we have in the code base and use the returned values to allow us to notice what was set and respond appropriately. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-10-16vtysh: make clang-SA happy about reusing stdinDavid Lamparter
While the logic here is perfectly fine, clang-SA doesn't understand that the fopen() and fclose() match up with each other. Just use a separate variable to make clang-SA happy. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2024-10-16vtysh: remove duplicate nonblocking handlingDavid Lamparter
non-blocking retries are already handled in `vtysh_client_receive()`. And by the point we're back in `vtysh_client_run()`, errno may have been overwritten by the close() call in vtysh_client_receive(). Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2024-08-27lib: Memory spike reduction for sh cmds at scaleSrujana
The output buffer vty->obuf is a linked list where each element is of 4KB. Currently, when a huge sh command like <show ip route json> is executed on a large scale, all the vty_outs are processed and the entire data is accumulated. After the entire vty execution, vtysh_flush proceeses and puts this data in the socket (131KB at a time). Problem here is the memory spike for such heavy duty show commands. The fix here is to chunkify the output on VTY shell by flushing it intermediately for every 128 KB of output accumulated and free the memory allocated for the buffer data. This way, we achieve ~25-30% reduction in the memory spike. Fixes: #16498 Note: This is a continuation of MR #16498 Signed-off-by: Srujana <skanchisamud@nvidia.com> Signed-off-by: Rajasekar Raja <rajasekarr@nvidia.com>
2024-07-31vtysh: de-conditionalize and reorder install_nodeDavid Lamparter
There is entirely no point to these being conditional. And pull them up so the upcoming pre-parse code can work on a clean slate. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2024-07-19Merge pull request #16406 from ↵Jafar Al-Gharaibeh
opensourcerouting/fix/remove_deprecation_for_show_threads Drop deprecation for `show thread ...`
2024-07-17lib, vtysh: Removed deprecated aliases for `show thread ...`Donatas Abraitis
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2024-07-16pimd, lib, vtysh: Added new 'router pim[6] [vrf NAME]' config nodeNathan Bahr
Moved all existing global/vrf PIM config to the new subnode. Existing configuration updated to be hidden and deprecated. Both versions of configuration still work together. Signed-off-by: Nathan Bahr <nbahr@atcorp.com>
2024-06-13vtysh: CLI to override default SID format configCarmine Scarpitta
Add CLI commands to support overriding default configuration of the SID format. Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2024-05-14lib, vtysh, topotests: fix 'show ip[v6] access-list ... json' formattingPiotr Suchy
Similarly to recently fixed 'show ip[v6] prefix-list ...' - PR#15750, json output is not valid for 'show ip[v6] access-list ... json' commands, as it goes through all the running daemons and for each one it calls 'filter_show' creating a new json object. To aggreagate the output and create a valid json that can later be parsed, the commands were moved to vtysh and formatted accordingly Signed-off-by: Piotr Suchy <piotrsuchy@proton.me>
2024-04-24lib,bgpd,vtysh: move bgp vty defines to libMark Stapp
Stop including a bgp header file from vtysh; move a couple of cli string defines to a library header. Signed-off-by: Mark Stapp <mjs@cisco.com>
2024-04-21vtysh, lib: fix 'show ip[v6] prefix-list ... json' formatting by moving it ↵Piotr Suchy
to vtysh Json output is not valid for 'show ip[v6] prefix-list ... json' commands, as it goes through all the running daemons and for each one it calls 'vty_show_prefix_list' creating a new json object. To aggreagate the output and create a valid json that can be parsed, the commands were moved to vtysh. Before: { "ZEBRA":{ "DEFAULT":{ "addressFamily":"IPv4", "entries":[ { "sequenceNumber":10, "type":"permit", "prefix":"0.0.0.0/0" } ] } } } { "OSPF":{ "DEFAULT":{ "addressFamily":"IPv4", "entries":[ { "sequenceNumber":10, "type":"permit", "prefix":"0.0.0.0/0" } ] } } } { "BGP":{ "DEFAULT":{ "addressFamily":"IPv4", "entries":[ { "sequenceNumber":10, "type":"permit", "prefix":"0.0.0.0/0" } ] } } } After: {"zebra":{ "DEFAULT":{ "addressFamily":"IPv4", "entries":[ { "sequenceNumber":10, "type":"permit", "prefix":"0.0.0.0/0" } ] } } ,"ospfd":{ "DEFAULT":{ "addressFamily":"IPv4", "entries":[ { "sequenceNumber":10, "type":"permit", "prefix":"0.0.0.0/0" } ] } } ,"bgpd":{ "DEFAULT":{ "addressFamily":"IPv4", "entries":[ { "sequenceNumber":10, "type":"permit", "prefix":"0.0.0.0/0" } ] } } } Signed-off-by: Piotr Suchy <piotrsuchy@proton.me>
2024-04-19vtysh: Fix `show route-map` command when calling via `do`Donatas Abraitis
Before: ``` ton(config)# do sh route-map % [ZEBRA] Unknown command: show route-map % [BGP] Unknown command: show route-map % [ISIS] Unknown command: show route-map ``` Fixes: 570fdc55fd65899cd4376193e833594af6bca093 ("lib,vtysh: fix show route map JSON output") Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2024-04-16vtysh: Check if bgpd is enabled before installing vtysh commands for RPKIDonatas Abraitis
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2024-02-14Merge pull request #15288 from donaldsharp/shell_access_removalDonatas Abraitis
vtysh: Remove deprecated shell_access code
2024-02-11lib, mgmtd: rework processing of yang notificationsIgor Ryzhov
Currently, YANG notification processing is done using a special type of callbacks registered in backend clients. In this commit, we start using regular northbound infrastructure instead, because it already has a convenient way of registering xpath-specific callbacks without the need for creating additional structures for each necessary notification. We also now pass a notification data to the callback, instead of a plain JSON. This allows to use regular YANG library functions for inspecting notification fields, instead of manually parsing the JSON. Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2024-02-07vtysh: remove resync workaround when exiting to config nodeIgor Ryzhov
When exiting from a level below the config node, like `router rip`, vtysh executes a resync by sending "end" and "conf term [file-lock]" commands to all the daemons. As statet in the description comment, it's done "in case one of the daemons is somewhere else". I don't think this actually ever happens, but even if it is, it is a bug in a daemon that needs to be fixed. This resync was okay before the introduction of mgmtd, but now it unlocks and locks back the datastores during the configuration reading process, which can lead to a failure which is explained in the previous commit. Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2024-02-05vtysh: Remove deprecated shell_access codeDonald Sharp
This code has been deprecated for over a year and frankly needs to be removed from the system. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-01-30vtysh: un-hide the show configuration nb cliMark Stapp
The "show configuration running" cli is pretty useful when doing NB work; unhide it so it's easier to use. Signed-off-by: Mark Stapp <mjs@labn.net>
2024-01-28zebra: convert to mgmtdIgor Ryzhov
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2024-01-28zebra: convert interface link-params command to NBIgor Ryzhov
Make link-params a presence container and activate it when entering the node. The "enable" command is not necessary anymore but kept hidden for backwards compatibility. Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2024-01-26ripngd: convert ripngd to mgmtdChristian Hopps
- a couple small fixes for ripd conversion as well. Signed-off-by: Christian Hopps <chopps@labn.net>
2024-01-26ripd: ripd convert to mgmtdChristian Hopps
Signed-off-by: Christian Hopps <chopps@labn.net>
2024-01-26lib: convert route-map to mgmtdChristian Hopps
Signed-off-by: Christian Hopps <chopps@labn.net>
2024-01-22Merge pull request #15052 from louis-6wind/rpki-vrf-92Donatas Abraitis
bgpd: add VRF support to RPKI
2024-01-18bgpd: add support of rpki in vrf configure contextPhilippe Guibert
Add support of RPKI commands in the VRF configure context. Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com> Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2024-01-17lib,vtysh: add per-daemon log file configMark Stapp
Add a config that specifies per-deamon log file names. Move the handy generated list of daemon names from vtysh to lib; edit the gitignore files to match. Signed-off-by: Mark Stapp <mjs@labn.net>
2024-01-09lib: zebra.h uses pwd.h when it should notDonald Sharp
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-01-07vtysh: Rename `show thread ...` to `show event ...`Donatas Abraitis
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2024-01-04lib, vtysh: Remove inclusion of grp.h for everyoneDonald Sharp
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-12-14zebra, lib, vtysh: Add CLI cmd to set/unset SRv6 encap source addressCarmine Scarpitta
- Add a new node `SRV6_ENCAP_NODE` to the CLI graph. This node allows users to configure encapsulation parameters for SRv6, including the source address of the outer encapsulating IPv6 header. - Install a new CLI command `source-address` under the `SRV6_ENCAP_NODE` node. This command is used to configure the source address of the outer encapsulating IPv6 header. - Install a new CLI command `no source-address` under the `SRV6_ENCAP_NODE` node. This command is used to unset the source address of the outer encapsulating IPv6 header and restore the default source address. Examples: ``` router# segment-routing router(sr)# srv6 router(srv6)# encapsulation router(srv6-encap)# source-address fc00:0:1::1 ``` ``` router# segment-routing router(sr)# srv6 router(srv6)# encapsulation router(srv6-encap)# no source-address ``` Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-11-24lib,vtysh: fix show route map JSON outputRafael Zalamena
Move the command from 'lib' to 'vtysh' so we can properly format the JSON output in a correct manner. Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2023-11-17vtysh: clean vtysh_file_locked when exiting config nodeIgor Ryzhov
The flag should be cleared to make sure it's not reused the next time we enter the config node. Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2023-10-10Revert "bgpd: add bgp link-state address-family configuration context"Donald Sharp
This reverts commit ae2f3bb5b4eed01df1f7a69c7710c9be519390f6.
2023-09-28vtysh: fix entering configuration node in file-lock modeIgor Ryzhov
When the config node is entered in file-lock mode, we should actually remember it to correctly apply the workaround in `vtysh_exit`. Otherwise, the file-lock mode is dropped once we exit any node one level below the config node. Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2023-09-27vty: fix configure terminal argument descriptionsIgor Ryzhov
"terminal" and "file-lock" description are mixed up. Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2023-09-18bgpd: add bgp link-state address-family configuration contextLouis Scalbert
Add the bgp link-state configuration context cli: > router bgp 65001 > address-family link-state link-state > neighbor 192.0.2.2 activate > exit-address-family Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2023-09-11vtysh: Add CLI nodes for SRv6Carmine Scarpitta
Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-07-14vtysh: track and fix file-lock use in the workaround from 2004Christian Hopps
There's a workaround in the code from a bug from back in 2004, it ends and re-enters config mode anytime an `exit` is done from a level below the top-level config node (e.g., from a `router isis` node). We need to re-enter config mode with or without a lock according to how we actually entered it to begin with. fixes #13920 Signed-off-by: Christian Hopps <chopps@labn.net>
2023-07-14lib: mgmtd: only clear pending for the in-progress commandChristian Hopps
The lock/unlocks are being done short-circuit so they are never pending; however, the handling of the unlock notification was always resuming the command if pending was set. In all cases pending is set for another command. For example implicit commit locks then when notified its done unlocks which was clearing the set-config pending flag and resuming that command incorrectly. Signed-off-by: Christian Hopps <chopps@labn.net>
2023-06-19mgmtd: KISS the locking codeChristian Hopps
Move away from things like "lock if not locked" type code, require the user has locked prior to geting to that point. For now we warn if we are taking a lock we already had; however, this should really be a failure point. New requirements: SETCFG - not implicit commit - requires user has locked candidate DS and they must unlock after implicit commit - requires user has locked candidate and running DS both locks will be unlocked on reply to the SETCFG COMMITCFG - requires user has locked candidate and running DS and they must unlock after rollback - this code now get both locks and then does an unlock and early return thing on the adapter side. It needs to be un-special cased in follow up work that would also include tests for this functionality. Signed-off-by: Christian Hopps <chopps@labn.net>
2023-06-12vtysh: stop reading config file if user `exit`s from root level.Christian Hopps
This is required to make sure that we properly send the XFRR_end_configuration tag to the daemons. Previously if the user had an `exit` at the root level the parser would just drop out of the config node and so XFRR_end_configuration, even if sent, would be ignored Signed-off-by: Christian Hopps <chopps@labn.net>
2023-04-18lib,vtysh,isisd,yang: algo cli/yang/callbacksHiroki Shirokura
Define the IS-IS flex-algo structure in yang, the CLI configuration commands and the skeletons of frontend and backend functions that are called by the CLI code. Signed-off-by: Hiroki Shirokura <hiroki.shirokura@linecorp.com> Signed-off-by: Eric Kinzie <ekinzie@labn.net> Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2023-03-28vtysh: use fork() workflow for -f tooQuentin Young
It was being used for -b only; we should be able to use it for -f as well. This also merges the codepaths for -b and -f since they have no real functional difference. Signed-off-by: Quentin Young <qlyoung@nvidia.com>
2023-03-28vtysh: use daemon type and handle multi-instance typesMark Stapp
To handle multi-instance daemons (ospf, e.g.), each forked vtysh handles all of the instances of a daemon type. Signed-off-by: Mark Stapp <mstapp@nvidia.com>