Age | Commit message (Collapse) | Author |
|
* 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
|
|
session: don't accept new sessions in shutdown mode
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[BConflicts:
accel-pppd/ctrl/openvpn/openvpn.c
|
|
|
|
|
|
|
|
|
|
Use a triton context per session so that log_ppp_*() functions can
prepend log messages with PPP session information.
Since functions must now be called within the right context,
allocating and freeing sessions is done in the following manner:
* Tunnels allocate new sessions within their own context and
activate the new session's context just before answering
the ICRQ.
* Freeing sessions is slightly more complex. The session is
first removed from its tunnel session list (done within the
tunnel context), then the session itself if disconnected and
freed (done within the session context).
The l2tp_tunnel_*() and the l2tp_session_*() functions must now be
used within tunnel and session contexts respectively.
Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
|
|
Accept to create several sessions for each tunnel. Session IDs
are generated randomly and stored in a binary search tree in
their corresponding tunnel (i.e. field "sessions" of the
l2tp_conn_t structure). A new mempool is defined for session
allocations.
Generation of the session IDs is simple but quite limited: it
selects a 16 bits random ID and checks if a session with this
ID already exists. If so the allocation fails and the session
is closed. Otherwise the selected ID is used for the new
session. So tunnels that handle many sessions may reject new
ones, even if unused session IDs are available (just because
the randomly choosen ID is already in use).
Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
|
|
Deactivate the tunnel connection establishment timer upon
reception of SCCCN messages and use a new session specific
timer for session establishment.
This new session timer follows the same behaviour as the
tunnel timeout timer: it is activated when sending the ICRP
message and deactivated upon reception of the corresponding
ICCN message.
This approach is necessary for handling several sessions per
tunnel, but it generates the following side effect: if a
tunnel is created but no session establishment is requested
from the LAC, the tunnel will no longer be automatically torn
down (since the tunnel is correctly set up, its timer is no
longer running, but since no session establishment process
has been started, there is no session timer neither).
Later on, tunnel and session timers could be turned into
inactivity timeouts to address this limitation.
Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
|
|
Separate tunnels and sessions allocation: initialise tunnels
after receiving SCCRQ messages (with no session inside), then
initialise sessions upon reception of ICRQ messages.
Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
|
|
Pass a struct l2tp_sess_t as parameter of functions acting on
sessions, instead of retrieving the session from an l2tp_conn_t
structure (which will no longer be possible once tunnels will
handle several sessions).
Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
|
|
When a PPP connection is torn down, close the underlying session
but not the tunnel (unless its last session has been closed).
Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
|
|
Make HELLO messages independent from PPP connections (HELLO
messages are tunnel specific).
Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
|
|
Split StopCCN message building/sending from l2tp_terminate to
make it re-usable.
Rename l2tp_terminate() to l2tp_tunnel_disconnect() for
consistency with other tunnel/session management functions.
Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
|
|
Implement CDN message sending in order to give the possibility
to close a session without closing the underlying tunnel (close
a tunnel only when closing its last session, which is always the
case as long as session-multiplexing is not implemented).
Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
|
|
Use the "state" field (struct l2tp_conn_t) for tracking tunnel
states and "state1" (struct l2tp_sess_t) for sessions. The
meaning of the STATE_* has been slightly modified:
* STATE_WAIT_SCCN (tunnel): no modification.
* STATE_WAIT_ICRQ (session): now unused. Acceptation of ICRQ
messages now depend on the tunnel state (STATE_ESTB).
* STATE_WAIT_ICCN (session): no modification.
* STATE_ESTB (tunnel and session): for tunnels, means that the
tunnel is ready to accept new sessions. For sessions, means
that the L2TP session is established, but that it doesn't
carry any PPP session yet.
* STATE_PPP (session): the session is in use (i.e. it is
established and carries a PPP session).
* STATE_FIN (tunnel): the tunnel is being closed.
* STATE_CLOSE (tunnel and session): default state after
allocation/free. For session, this is also the state
used once disconnected.
Since outgoing calls are not implemented yet, STATE_WAIT_OCRP and
STATE_WAIT_OCCN are not used.
Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
|
|
Establish tunnel and session connections upon reception of SCCCN
and ICCN messages respectively.
Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
|
|
Rename l2tp_disconnect() to l2tp_tunnel_free() for consistency
with the new l2tp_session_free() function.
Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
|
|
Move session specific operations out of l2tp_disconnect().
Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
|
|
Separate session allocation from the rest of tunnel allocation
operations. This implies a few extra modifications:
* Store destination address of the SCCRQ message in the
connection structure (and rename the "addr" field to
"lac_addr" for consistency). This information is required
for allocating the session.
* No more PPP information in log prefix: with session
multiplexing, tunnels are no longer tied to a single PPP
session, so there is no struct ppp_t to pass as parameter
to the log_switch() function.
Session allocation is currently still done inside
l2tp_tunnel_alloc(). It should rather be done at session
establishment once tunnel/session separation will be terminated.
Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
|
|
Use struct l2tp_sess_t to separate session data from other
connection information. This is required in order to implement
session multiplexing.
Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
|
|
|
|
|
|
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>
|
|
|
|
Conflicts:
accel-pppd/ppp/ppp_auth.c
|
|
ssh://accel-ppp.git.sourceforge.net/gitroot/accel-ppp/accel-ppp
|
|
|
|
Stop sending messages on tunnels for which no peer is listening.
Discard retransmissions too.
Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ipoe: use user paaword same is user name
|
|
Conflicts:
accel-pppd/ppp/ppp_ccp.c
|
|
|
|
|
|
|
|
|