Age | Commit message (Collapse) | Author |
|
Define a new column, called "netns", that prints the network namespace
in which sessions are set.
Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
|
|
Several modules assume that if ses->ipv6 is set, then
ses->ipv6->addr_list contains at least one element. But this is not
true if ipv6 was allocated by the pseudo ipdb backend of ipv6cp
(ipv6cp_opt_intfid.c). That is, if the PPP session only has an
automatic link-local address.
This leads modules like pppd-compat and dhcpv6 to access invalid memory
when trying to retrieve the IPv6 address of a PPP session.
Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
|
|
|
|
|
|
Introduced 4 priorities:
0 - management (cli)
1 - starting sessions (default priority)
2 - active sessions
3 - finishing sessions
|
|
|
|
|
|
Hello,
small patch to avoid gcc -Wformat warnings on Debian x32 where time_t
is "long long" (64-bit signed, to be 2038 safe), not "unsigned long"
(32-bit unsigned) corresponding to "%lu" format strings.
Regards,
Marek
|
|
The telnet and tcp servers disconnect as soon as they receive the
'exit' command or see a disconnection from the client. In this case,
all data queued for transmission are lost. This can lead to truncated
output when big amount of data is being sent.
For example, on a moderately loaded server with a few thouthands
connections, the output of the 'accel-cmd show sessions' command can be
truncated.
The problem is that accel-cmd sends the 'show sessions' command,
followed by 'exit'. It does so because it has to stop running once all
data has been received from the server. But it never knows whether more
data are going to arrive. Disconnection must then come from the server,
hence the use of 'exit' (although the same effect could be achieved
with shutdown(SHUT_WR)).
The telnet and tcp modules behave very similarly and are modified in
the same way:
* For a soft disconnection, cln_read() doesn't call disconnect()
anymore if there are data queued for transmission. Instead it
sets the 'disconnect' flag and stops listening to its peer (no
need to process further messages).
* cln_write() checks the 'disconnect' flag once it has sent all
pending data and actually performs the disconnection if necessary.
Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
|
|
In tcp and telnet backends, the first buffer been queued is directly
pointed to by cln->xmit_buf. It's not added to cln->xmit_queue.
Therefore testing if ->xmit_queue is empty doesn't reliably tells
if data has already been queued.
We should test if ->xmit_buf is non-NULL instead. This is reliable
because ->xmit_buf is re-filled with the first buffer from ->xmit_queue
after every successful write().
Failure to properly check if data has already been queued can lead to
message miss-ordering because cli_client_send() or telnet_send() will
try to directly write() their input buffer, effectively bypassing the
one previously queued up in ->xmit_buf.
Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
|
|
When queueing output data for later write(), the 'n' first bytes of the
buffer have already been sent (we have n > 0 if EAGAIN was returned
after some other write() calls succeeded). Therefore, we need to skip
these bytes when initialising the buffer to be queued.
The size passed to memcpy() did already take that space into account.
Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
|
|
|
|
|
|
|
|
|
|
|
|
If verbose=0 then cli won't produce any logging
if verbose=1 then log only connections
if verbose=2 then log also executed commands
|
|
|
|
|
|
|
|
|
|
default)
|
|
Define the "sessions-columns" option (in the [cli] section) to let
the user select the default set of columns that will be displayed by
the "show sessions" command.
Unrecognised column names are silently discarded.
Configuration example:
[cli]
telnet=127.0.0.1:2000
password=secret
sessions-columns=ifname,ip,username
Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
|
|
Gracefully handle the case where no column has been selected for the
"show sessions" command. Such situation will be possible once the set
of default displayed columns will be made configurable from
accel-ppp.conf.
Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
|
|
Handle CLI_CMD_FAILED like other command errors (i.e. return 0 to the
caller and send a generic error message).
This makes the CLI handler to flush its input buffer, so that
processing of the next command will be made correctly. This also makes
the telnet handler to send its prompt message.
Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
|
|
Call regexp command handler without command line's leading spaces.
This makes leading spaces handling consistent between the exec and help
command handlers (leading spaces are already skipped before calling
help handlers).
This also gives the possibility to register an anchored regexp command
without having to manage the leading spaces in that regexp.
Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
|
|
When arguments are supplied to the "help" command, only display help
messages corresponding to the command these arguments refer to (e.g.
"help pppoe" will only show help messages for commands starting
with "pppoe").
Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
|
|
Pass a full string, instead of an array of words, to the "help" callback
of regexp command handlers. Also register these command handlers using
a regexp to apply on "help" commands, just like for exec commands. The
"help" callback will then be called only if the command matches the
"help" regexp.
As a side effect, the "help" word and its following spaces are skipped
before calling the "help" callback for both simple and regexp commands.
Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
|
|
* skip_word(): ensure the for() loop won't pass over a '\0' character
* split(): ensure the for() loop won't try to fill buf[MAX_CMD_ITEMS]
* split(): skip leading spaces.
* split(): fix exit value if no item is found (return 0 instead of 1)
Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
|
|
Split regexp and simple command handling from the generic command
processing function and handle regexp commands before simple ones.
This avoids splitting the original command line before processing
regexp command handlers, so that these handlers get the full command
line instead of only the first word.
The regexp command handlers are now only called when the command
matches the regexp (regexp handlers were called unconditionaly
before this patch). The rest of the processing properties should
remain unchanged.
Command processing summary:
-If the command starts with the "help" keyword, then all help
commands are called, starting with regexp help commands.
-Otherwise, regexp command handlers whose regexp matches the
command line are called. Then, simple command handlers whose
header matches the command line are called.
Any command handler that returns a value different from
CLI_CMD_OK stops the process, thus preventing the following
handlers from being called.
Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
|
|
Process "help" commands in a separated function with no side effect
when the command doesn't match. This avoids splitting the input
command line if not necessary (regexp command handlers need to
receive the entire command line for being useful).
Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
|
|
* Call pcre_compile2() with all mandatory arguments and
improve error message.
* Register regexp commands in regexp_cmd_list instead of
simple_cmd_list.
* Fix "help" function call.
* Interpret regexp command return codes (CLI_CMD_*) in the
same way as for simple commands.
Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
|
|
* l2tp: Fix allocation checking when adding octets AVP
* cli, tcp: Fix non-NULL terminated string reception
* Fix va_end() missing calls
* chap-secrets: implemented encryption
* auth_pap: make messages like other auth modules
* cli: check xmit_buf is not null at enter to write function
* pppoe: implemented regular expression support
* chap-secrets: implemented encryption
* ippool: fixed initialization order
* optional shaper compiling
* ppp: dns/wins code cleanup
|
|
|
|
|
|
[BConflicts:
accel-pppd/ctrl/openvpn/openvpn.c
|
|
Fix several errors and compiler warnings in format string
arguments.
Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
|
|
Append the format() __attribute__ to function prototypes which
use a format string. This allows GCC to check for consistency
between the format string and its arguments when these
functions are called.
Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
|
|
|
|
* commit '918036a3c42cb6dd5b796c52b6aaf278c466c928':
cli: telnet: check for disconnect condition while processing input chars
|
|
|
|
cli: introduced 'restart' command to restrat daemon
|
|
|
|
method
|
|
|
|
|
|
cli commands
|
|
|
|
|
|
show
|