Age | Commit message (Collapse) | Author | Files | Lines |
|
This changeset modifies the log output so that cli commands now look like:
cat /tmp/vpp-cli.log
2020/03/10 19:24:42:186: ***** Start: PID 29570 *****
/* [0] is stdin */
2020/03/10 19:24:53:518[0]: show clock
2020/03/10 19:24:56:078[0]: show clock
2020/03/10 19:25:01:983[0]: show pci
/* [1] is vppctl socket */
2020/03/10 19:26:14:372[1]: show ver
2020/03/10 19:26:23:395[1]: show hardware-interfaces
2020/03/10 19:26:28:507[1]: q
instead of:
cat /tmp/vpp-cli.log
2020/03/01 00:40:12:834: ***** Start: PID 29974 *****
2020/03/01 00:40:24:969[0]: show interface2020/03/01 00:40:31:945[0]: show clo2020/03/01 00:40:41:288[0]: show classify 2020/03/01 00:40:43:753[0]: show classify ?2020/03/01 00:40:53:392[0]: show classify tables2020/03/01 00:40:57:352[0]: quit
Type: improvement
Change-Id: I38d85535977296d174db7121ae340850b6476a39
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
|
|
Type: fix
Ticket: VPP-1837
Signed-off-by: Dave Barach <dave@barachs.net>
Change-Id: I6b1ea13fc83460bf4ee75cb9249d83dddaa64ded
|
|
For src/vnet/classify, src/vnet/cop, src/vnet/pg, and src/vlib/unix
Type: docs
Signed-off-by: Dave Barach <dave@barachs.net>
Change-Id: Ib6ab734608693a1e9562a44808246950616e8d36
|
|
Allow a plugin to override (suppress loading of) other plugins. This
mechanism allows a developer to prevent specific plugins from being
loaded.
To do so, provide an "overrides" list in the plugin definition:
VLIB_PLUGIN_REGISTER () =
{
<snip>
.overrides = "avf_plugin.so,ioam_plugin.so,dpdk_plugin.so",
};
or some such. Simply list the plugins in question as shown above. The
.overrides structure member is limited to 256 octets. The named .elf
section mechanism used to discover the vlib_plugin_registration_t's
precludes the use of a variable-length array of strings.
Use the vlib log to eliminate plugin and built-in vat plugin loader
console spew.
Added vlib_log_register_class_rate_limit(...) to allow procedural
configuration of the log rate-limit. We *never* want to rate-limit
plugin loader messages.
Type: feature
Signed-off-by: Dave Barach <dave@barachs.net>
Change-Id: I0a9327b8cf5508482f057342783252112cb44170
|
|
It's not typical for a program to core when it receives a SIGINT, so
keep this from happening.
Type: fix
Signed-off-by: Christian E. Hopps <chopps@chopps.org>
Change-Id: I2c15985a57e6ea898ff05c4001e4b30b41154eba
|
|
Type: fix
Startup config setting an i40e/ice interface
up in Debug VPP consumes more than the currently
available stack space.
Signed-off-by: GordonNoonan <gordon.noonan@intel.com>
Change-Id: I98b52c5596799017b97f802a8661b76cd1bb3245
|
|
When running exec scripts, there can be a need to wait between statements.
Type: feature
Change-Id: I2a45b390697e09fc222358c9354f28e3368a06ba
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
|
|
seen while reading through the code.
Type: style
Change-Id: I7a2f021b9f06d0eebb2ea3d0cafb6955ccb14781
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
|
|
Type: fix
Some cli processes, including configuring an test flow
on an i40e interface consume more than the currently
available stack space.
Signed-off-by: Chenmin Sun <chenmin.sun@intel.com>
Change-Id: I3df53d251cd43286f94647384d6e50a463bad15c
|
|
Some cli processes, including bringing up an i40e interface with dpdk,
consume more than the currently available stack space.
Type: fix
Fixes: VPP-1774
Signed-off-by: Aloys Augustin <aloaugus@cisco.com>
Change-Id: I86ceb9e6e07523d5e0f760b5922467f09a8d4006
|
|
Type: fix
Signed-off-by: Hiroki Shirokura <slank.dev@gmail.com>
Change-Id: I3ae7dc3858d0353764d629d6a9eff2bdab5f8768
|
|
Ensure the runtime directory is created at startup.
Default /run/vpp
Type: fix
Fixes: I53d70939c8125d04a365ac51a6cbf8926dc52adf
Change-Id: I6d70364ea756b86768c4dd1f6a9383238ed275c8
Signed-off-by: Ole Troan <ot@cisco.com>
|
|
When VPP tries to bind to stats.sock it will complain about non-existing
/run/vpp directory.
/run/vpp is created before cli socket operations are performed.
The same should be done for stat socket.
Ticket: VPP-1708
Type: fix
Change-Id: I53d70939c8125d04a365ac51a6cbf8926dc52adf
Signed-off-by: YohanPipereau <ypiperea@cisco.com>
Signed-off-by: Ole Troan <ot@cisco.com>
|
|
The CLI code, when it accepts a socket connection, ran a timer
for each session that would ensure the CLI session was started
should the TELNET negotiation stage fail to complete.
It has since transpired that this is unsafe; the timer is capable
of firing in critical sections, during a spinlock, and since we
peform non-trivial things in the handler it can cause a deadlock.
This was reported recently in VPP-1711 but a search of history
suggests this may also be (one of) the causes in VPP-1413.
This change replaces that method with an event-driven process.
The process is created when the first socket connection is
accepted.
When new connections are created the process is sent an event
to register the new session in a list. That event process has
a loop that evaluates the list of oustanding sessions and if
a deadline expires, their session is started if it has not been
already, and then removed from the list.
If we have pending sessions then the loop waits on a timer or an
event; if there are no sessions it waits on events only.
Type: fix
Ticket: VPP-1711
Change-Id: I8c6093b7d0fc1bea0eb790032ed282a0ca169194
Signed-off-by: Chris Luke <chrisy@flirble.org>
Signed-off-by: Dave Barach <dave@barachs.net>
|
|
Type:fix
Change-Id: Id7f4f6e2a2f844085f511a33aa1db3968f5d97bb
Signed-off-by: Florin Coras <fcoras@cisco.com>
|
|
- 'set terminal history off' or '... limit 0' has an incorrect
terminal condition and tries to vec_delete one-too-many times
causing a crash.
- Changing >= to > fixes this.
- In any case, a single vec_delete is more efficient, so do that
instead.
Change-Id: Ia0db63b6c5c7891d75b302e793b4e4985dd86ebb
Signed-off-by: Chris Luke <chrisy@flirble.org>
|
|
The vlib init function subsystem now supports a mix of procedural and
formally-specified ordering constraints. We should eliminate procedural
knowledge wherever possible.
The following schemes are *roughly* equivalent:
static clib_error_t *init_runs_first (vlib_main_t *vm)
{
clib_error_t *error;
... do some stuff...
if ((error = vlib_call_init_function (init_runs_next)))
return error;
...
}
VLIB_INIT_FUNCTION (init_runs_first);
and
static clib_error_t *init_runs_first (vlib_main_t *vm)
{
... do some stuff...
}
VLIB_INIT_FUNCTION (init_runs_first) =
{
.runs_before = VLIB_INITS("init_runs_next"),
};
The first form will [most likely] call "init_runs_next" on the
spot. The second form means that "init_runs_first" runs before
"init_runs_next," possibly much earlier in the sequence.
Please DO NOT construct sets of init functions where A before B
actually means A *right before* B. It's not necessary - simply combine
A and B - and it leads to hugely annoying debugging exercises when
trying to switch from ad-hoc procedural ordering constraints to formal
ordering constraints.
Change-Id: I5e4353503bf43b4acb11a45fb33c79a5ade8426c
Signed-off-by: Dave Barach <dave@barachs.net>
|
|
Fix os_get_nthreads() so that it starts returning the correct answer
as early as possible.
Change-Id: Id5292262f2c3f521b07ffbe6a9f6748dcc4dcb7d
Signed-off-by: Dave Barach <dave@barachs.net>
|
|
Otherwise, gcov data vanishes without a trace.
Add a __gcov_flush() call to the unix signal handler, under #ifdef
CLIB_GCOV. Add -DCLIB_GCOV to vpp_gcov_TAG_CFLAGS.
Change-Id: I2726e671b26dfbe7fae88f46a8207bb2b5106884
Signed-off-by: Dave Barach <dave@barachs.net>
|
|
Change-Id: I6d7589c967c5801a6a21a213723e2a895269e105
Signed-off-by: Benoît Ganne <bganne@cisco.com>
|
|
Main thread: don't bother with the barrier sync hold-down timer if
none of the worker threads are busy.
Worker threads: avoid epoll_pwait (10ms timeout) when the
control-plane has been active in the last half-second.
Change-Id: I82008d09968c65e2a4af0ebb7887389992e60603
Signed-off-by: Dave Barach <dave@barachs.net>
|
|
Change-Id: I7a3526a8fdf17afb8cc2225bdfbd57f661680992
Signed-off-by: Florin Coras <fcoras@cisco.com>
|
|
Change-Id: I320e7c2fdacb3056bc448c73fec08d9e2978ee5e
Signed-off-by: Florin Coras <fcoras@cisco.com>
|
|
File pool may be reallocated on epoll events processing.
*f* pointer shows to already freed address and corrupting
memory chunk on clib_file_t property change.
Change-Id: I751bddce27325452862b939c1a3eec2ccd9b71bb
Signed-off-by: Artem Belov <artem.belov@xored.com>
|
|
Change-Id: I2f7f3898b913c9b1a37b1c8c84a8df3799c49c5d
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
|
|
Change-Id: I53ab8d17914e6563110354e4052109ac02bf8f3b
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
|
|
Call setjmp and mark the setjmp context valid just prior to entering the
vpp main loop.
Change-Id: I26d5cd6a624cb2a497d81eb85a62365621b3b469
Signed-off-by: Dave Barach <dave@barachs.net>
|
|
Comes in handy when looking at core files from optimized images.
Signed-off-by: Dave Barach <dave@barachs.net>
Change-Id: I45c8400d15614d5a04a3dcfb9b7daccab47ab446
|
|
Change-Id: I4e836244409c98739a13092ee252542a2c5fe259
Signed-off-by: Damjan Marion <damarion@cisco.com>
|
|
Example:
buffers {
default data-size 1536
}
Change-Id: I5b4436850ca18025c9fdcfc7ed648c2c2732d660
Signed-off-by: Damjan Marion <damarion@cisco.com>
|
|
Change-Id: I3a33fb81f31ed473811e9e7a6197b81135913865
Signed-off-by: Damjan Marion <damarion@cisco.com>
|
|
Change-Id: I79b213b34c6071d14acf1922f89037a4a5a36c45
Signed-off-by: Damjan Marion <damarion@cisco.com>
|
|
Change-Id: I0ba5175be077c40556f2a3ce629c5bbcd71e0a81
Signed-off-by: Damjan Marion <damarion@cisco.com>
|
|
Change-Id: If88ccd965122b9318a39a8d71b53334cd1fd81e4
Signed-off-by: Damjan Marion <damarion@cisco.com>
|
|
Thread 1 "vpp_main" received signal SIGSEGV, Segmentation fault.
0x00007ffff670da53 in cj_dump_one_record (r=0x7ffff50f0fec)
at /home/sluong/vpp3/vpp/src/vlib/unix/cj.c:138
138 (long long unsigned int) r->data[1]);
(gdb) p *cjm
$1 = {tail = 58645908, records = 0x7fffb64646ec, num_records = 512,
enable = 1, vlib_main = 0x7ffff6953240 <vlib_global_main>}
(gdb) p /x cjm
$2 = 0x7ffff6953880
(gdb) p /x *cjm
$3 = {tail = 0x37edd94, records = 0x7fffb64646ec, num_records = 0x200,
enable = 0x1, vlib_main = 0x7ffff6953240}
(gdb)
cjm->tail is a 64 bit counter, not the total number of records. Dumping from
0 to cjm->tail can be a very large number of records which go beyond the
limit. I believe we meant to dump from 0 to index. index has been set by
this statement
index = (cjm->tail + 1) & (cjm->num_records - 1);
Change-Id: Ie1a8ba757598de9757accc1488577c15aa49726b
Signed-off-by: Steven <sluong@cisco.com>
|
|
Change-Id: Ic4c46bc733afae8bf0d8146623ed15633928de30
Signed-off-by: Damjan Marion <damarion@cisco.com>
|
|
Change-Id: Ied34720ca5a6e6e717eea4e86003e854031b6eab
Signed-off-by: Dave Barach <dave@barachs.net>
|
|
This is first part of addition of atomic macros with only macros for
__sync builtins.
- Based on earlier patch by Damjan (https://gerrit.fd.io/r/#/c/10729/)
Additionally
- clib_atomic_release macro added and used in the absence
of any memory barrier.
- clib_atomic_bool_cmp_and_swap added
Change-Id: Ie4e48c1e184a652018d1d0d87c4be80ddd180a3b
Original-patch-by: Damjan Marion <damarion@cisco.com>
Signed-off-by: Sirshak Das <sirshak.das@arm.com>
Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
Reviewed-by: Ola Liljedahl <ola.liljedahl@arm.com>
Reviewed-by: Steve Capper <steve.capper@arm.com>
|
|
Under rare scenario, epoll may still post an event to VPP although the file
descriptor is already deleted via epoll_ctl (EPOLL_CTL_DEL) and the file
descriptor is close. VPP tries to access the free file index entry and crash.
The fix is to throw away the events which the file descriptor is already deleted.
Change-Id: Ieca3a1873aecb28630c3abc42c40341f27c2faa7
Signed-off-by: Steven <sluong@cisco.com>
(cherry picked from commit aec7297ba012e1fe4bbf85cdaec8e810aa476cea)
|
|
- We deliberately ignore the return value.
Change-Id: If467911b019e7336cf9dc6d4c95c2cd53a5af33f
Signed-off-by: Chris Luke <chrisy@flirble.org>
|
|
- A check for the length of the buffer should have used the provided
'len' variable, not 'vec_len' since the buffer pointer may be
within a vector, but not the start of one. 'vec_len' reports 0
in that case, causing premature exit from the options processing
loop and a wait for further input before it checks the next option.
- Also add TCP_NODELAY to CLI sockets to disable Nagle on TCP
connections for a possible improvement in interactive response.
Change-Id: Ie1f53c003ca7d66bed51f437d298183215bad38c
Signed-off-by: Chris Luke <chrisy@flirble.org>
|
|
Configure w/ --enable-dlmalloc, see .../build-data/platforms/vpp.mk
src/vppinfra/dlmalloc.[ch] are slightly modified versions of the
well-known Doug Lea malloc. Main advantage: dlmalloc mspaces have no
inherent size limit.
Change-Id: I19b3f43f3c65bcfb82c1a265a97922d01912446e
Signed-off-by: Dave Barach <dave@barachs.net>
|
|
When creating a new - as opposed to recycled - debug CLI process node,
perform a proper barrier sync and node runtime update. Otherwise, the
graph replicas diverge for some period of time. That's not immediately
fatal, but it's not a good idea, either.
When renaming a debug cli process node, fix all of the name-vector
replicas before freeing the [one-and-only] name vector.
This fixes the so-called stats segment node runtime scraper crash,
which tripped over a replicated dangling reference to the
recently-freed debug CLI node name.
Change-Id: Ieffabd9f003139e534b9d79b88370439907930e5
Signed-off-by: Dave Barach <dbarach@cisco.com>
|
|
VPP crash happens with 'vppctl quit quit' command. The 2nd quit command
tries to access the file index which is already freed by the first quit.
This can be avoided to validate cli_file_index.
Change-Id: I880514c93523db2a727d7510c97950582cd6a6c8
Signed-off-by: Steve Shin <jonshin@cisco.com>
|
|
crash stack backtrace will be directed to syslog
1. make use of glic backtrace in execinfo.h. the old clib_backtrace is removed
2. install SIGABRT in signal handler, but have to remove it when backtrace is
done. reason is to capture stack trace caused by SIGABRT. vPP ASSERT always
call os_exit then abort(). we definitely want to know the trace of this
situation. It is a little tricky to avoid SIGABRT infinite loop
3. always load symbols by calling clib_elf_main_init () in main(). Otherwise,
PC addresses instead of symbols will be displayed.
Change-Id: I150e15b94a4620b2ea4f08c73dc3e6ad1856de1e
Signed-off-by: Kingwel Xie <kingwel.xie@ericsson.com>
|
|
Workaround for lack of driver interrupt support. Also quite handy for
home gateway, laptop/vagrant, other use-cases not requiring maximum
vectors/second for proper operation.
Change-Id: Ifc4b98112450664beef67b89ab8a6940a3bf24b5
Signed-off-by: Dave Barach <dave@barachs.net>
|
|
- CLI history forward-search is bound to ^S which is common, but
that is also the tty's default control byte to pause output.
So we disable XON/XOFF in the tty so that we can use ^S.
Change-Id: I61717c77a11733d64eed7f8119677e7cd2e20029
Signed-off-by: Chris Luke <chrisy@flirble.org>
|
|
- Terminals do not reverse-line-wrap when the cursor is at the left
edge and \b tries to make it go left.
- Instead, we have to track the cursor position if we need to emit \b's
and if we are at the left edge emit an ANSI sequence to relocate
the cursor. Previously we usually simply calculated the new cursor
position after a bunch of output had completed.
- Further trickiness is required since most xterm-like terminals also
defer moving the cursor to the next line when at the right edge[1], and
then if they receive a \b move the cursor back one character too many.
- This requires intricate reworking of everywhere that \b is emitted
by the CLI code during command line editing.
[1] Bash counters this issue by tracking the cursor position as output
is generated and forcing the cursor to the next line (by emitting
a space followed by \r) if it gets to this phantom cursor position);
here we effectively do that but only if the user tries to go left
when in this state.
Change-Id: I7c1d7c0e24c53111a5810cebb504ccfdac743086
Signed-off-by: Chris Luke <chrisy@flirble.org>
|
|
- The last line in the pager buffer was sometimes missed when
using space/pg-dn; simple off-by-one error.
Change-Id: Id4e5f7cf0e5db4f719f87b9069d75427bc66d3f7
Signed-off-by: Chris Luke <chrisy@flirble.org>
|
|
Object sizes must evenly divide alignment requests, or vice
versa. Otherwise, only the first object will be aligned as
requested.
Three choices: add CLIB_CACHE_LINE_ALIGN_MARK(align_me) at
the end of structures, manually pad to an even divisor or multiple of
the alignment request, or use plain vectors/pools.
static assert for enforcement.
Change-Id: I41aa6ff1a58267301d32aaf4b9cd24678ac1c147
Signed-off-by: Dave Barach <dbarach@cisco.com>
|