126 lines
4.3 KiB
ReStructuredText
126 lines
4.3 KiB
ReStructuredText
|
.. _cli_getting_started:
|
||
|
|
||
|
Getting Started with the debug CLI
|
||
|
==================================
|
||
|
|
||
|
The VPP network stack comes equipped with a set of commands that are useful
|
||
|
for debugging.
|
||
|
|
||
|
The easiest way to access the CLI (with proper permissions) is to use the
|
||
|
vppctl command:
|
||
|
|
||
|
.. code-block:: console
|
||
|
|
||
|
sudo vppctl <cli-command>
|
||
|
|
||
|
|
||
|
The CLI parser matches static keyword strings, eventually invoking an action
|
||
|
function. Unambiguous partial keyword matching always occurs. The action
|
||
|
functions consume input until satisfied or until they fail. This model makes
|
||
|
for easy coding, but does not guarantee useful "help" output. It's up to the
|
||
|
CLI command writer to add useful help strings.
|
||
|
|
||
|
You can find the source code of CLI commands by searching for instances of the
|
||
|
``VLIB_CLI_COMMAND`` macro in the code source files.
|
||
|
|
||
|
Please help maintain and improve this document to make and keep these commands
|
||
|
clear and useful!
|
||
|
|
||
|
.. _debug_telnet_cli:
|
||
|
|
||
|
Debug and Telnet CLI
|
||
|
--------------------
|
||
|
|
||
|
The debug CLI is enabled with the unix interactive parameter or startup
|
||
|
configuration option. This causes VPP to start without daemonizing and
|
||
|
presents a command line interface on the terminal where it is run.
|
||
|
|
||
|
The Telnet CLI is enabled with the ``cli-listen localhost:5002`` option which
|
||
|
will cause VPP to listen for TCP connections on the localhost address port
|
||
|
``5002``. A Telnet client can then connect to this port (for example, ``telnet
|
||
|
localhost 5002``) and will receive a command line prompt.
|
||
|
|
||
|
This configuration will enable both mechanisms:
|
||
|
|
||
|
.. code-block:: console
|
||
|
|
||
|
unix {
|
||
|
interactive
|
||
|
cli-listen localhost:5002
|
||
|
}
|
||
|
|
||
|
|
||
|
The debug CLI can operate in line mode, which may be useful when running
|
||
|
inside an IDE like Emacs. This is enabled with the option
|
||
|
``unix cli-line-mode``. Several other options exist that alter how this
|
||
|
CLI works, see the @ref syscfg section for details.
|
||
|
|
||
|
The CLI starts with a banner graphic (which can be disabled) and a prompt. The
|
||
|
prompt will typically read ``vpp`` for a release version of VPP and ``DBGvpp#``
|
||
|
for a development version with debugging enabled, for example:
|
||
|
|
||
|
.. code-block:: console
|
||
|
|
||
|
_______ _ _ _____ ___
|
||
|
__/ __/ _ \ (_)__ | | / / _ \/ _ \
|
||
|
_/ _// // / / / _ \ | |/ / ___/ ___/
|
||
|
/_/ /____(_)_/\___/ |___/_/ /_/
|
||
|
|
||
|
vpp#
|
||
|
|
||
|
|
||
|
|
||
|
versus:
|
||
|
|
||
|
.. code-block:: console
|
||
|
|
||
|
_______ _ _ _____ ___
|
||
|
__/ __/ _ \ (_)__ | | / / _ \/ _ \
|
||
|
_/ _// // / / / _ \ | |/ / ___/ ___/
|
||
|
/_/ /____(_)_/\___/ |___/_/ /_/
|
||
|
|
||
|
DBGvpp#
|
||
|
|
||
|
|
||
|
This prompt can be configured with the ``unix cli-prompt`` setting and the
|
||
|
banner is disabled with ``unix cli-no-banner``.
|
||
|
|
||
|
.. _cli_features:
|
||
|
|
||
|
CLI features
|
||
|
------------
|
||
|
|
||
|
The CLI has several editing features that make it easy to use.
|
||
|
|
||
|
- Cursor keys ``left/right`` will move the cursor within a command line;
|
||
|
typing will insert at the cursor; erase will erase at the cursor.
|
||
|
|
||
|
- ``Ctrl-left/right`` will search for the start of the next word to
|
||
|
the left or right.
|
||
|
- ``Home/end`` will jump the cursor to the start and end of the line.
|
||
|
- Cursor keys up/down and ``^P/^N`` iterate through the command history
|
||
|
buffer. Lines from the history buffer may be edited. New commands
|
||
|
are added to the end of the buffer when executed; though
|
||
|
duplicates of the previous command are not added.
|
||
|
- ``^U`` erases the line contents from the left of the cursor to the
|
||
|
start.
|
||
|
- ``^K`` erases the contents from the cursor to the end.
|
||
|
- ``^S/^R`` will search the command history forwards or in reverse for
|
||
|
a command; start typing for matches to auto complete.
|
||
|
- ``^L`` will clear the screen (if supported by the terminal) and repaint
|
||
|
the prompt and any current line. The cursor position is also
|
||
|
retained.
|
||
|
- The CLI can be closed with the quit command. Alternatively, ``^D`` on
|
||
|
an empty input line will also close the session. Closing the debug
|
||
|
session will also shutdown VPP.
|
||
|
|
||
|
Output that exceeds the length of a terminal page will be buffered, up to a
|
||
|
limit.
|
||
|
|
||
|
- ``Space`` or ``page-down`` displays the next page.
|
||
|
- ``Enter`` or ``down-arrow`` displays the next line.
|
||
|
- ``Page-up`` goes back a page.
|
||
|
- ``Up-arrow`` goes up a line.
|
||
|
- ``Home/end`` jump to the start/end of the buffered output.
|
||
|
- The key ``q`` quits the pager. ``Space`` and ``enter`` will also quit the
|
||
|
pager if the end of the buffer has been reached.
|