summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2013-03-28l2tp: Avoid tunnel destruction when possibleGuillaume Nault
Handle incomming messages differently depending on their Message Type: * Close tunnel only when handling tunnel establishment messages fails (SCCRP and SCCCN) and everytime a StopCCN is received. * Never close tunnel after reception of HELLO, SLI or session establishment messages (ICRQ and OCRQ). * Ignore messages with invalid first attribute type. Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
2013-03-28l2tp: Parse incoming CDN messagesGuillaume Nault
Interpret AVPs present in CDN to provide user with better diagnostic. Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
2013-03-28l2tp: Handle allocation failure in l2tp_session_connect()Guillaume Nault
Allocate PPP channel name using the string size to be stored and check for allocation failure. Use two snprintf() and a _malloc() instead of asprintf() so that allocated memory will be visible by memdebug. Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
2013-03-28l2tp: Use consistent return values for l2tp_{recv, send}*()Guillaume Nault
In all reception or sending functions, return 0 on success or if incomming message has been ignored (l2tp_recv_*() only). Return -1 upon any processing error. Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
2013-03-28l2tp: Remove some redundant log messagesGuillaume Nault
There is no need to warn about missing Challenge when handling SCCRQ comming from a host for which a secret exists: this will be done automatically upon SCCRP generation (by l2tp_tunnel_genchallresp()). Using the log message from l2tp_tunnel_genchallresp() has the advantage of working for missing Challenge AVPs in both SCCRQ and SCCRP messages. This patch also removes a redundant log message in l2tp_session_recv() when handling unknown message types. Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
2013-03-28l2tp: Simplify some function call sequencesGuillaume Nault
* Avoid retrieving tunnel and session contexts manually; use l2tp_{tunnel,session}_self() instead. * Use l2tp_session_disconnect() instead of using an l2tp_send_CDN(); l2tp_session_free() sequence. Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
2013-03-18radius: assign ipv4 either if gw-ip-address is not specified for non-ppp ↵Dmitry Kozlov
sessions
2013-03-18ipoe: make ipv4 address visible for other modulesDmitry Kozlov
2013-03-18ipoe: add support for ipaddr typeo of dhcp-mask attributeDmitry Kozlov
2013-03-18ipoe: fixed username=ifname, shared=0 modeDmitry Kozlov
2013-03-18ipoe: early drop routes when dropping sessions (V3)Dmitry Kozlov
2013-03-18Revert "ipoe: early drop routes when dropping sessions (V2)"Dmitry Kozlov
This reverts commit df6157aee109d7642a9c8c054bc9778f04007f05.
2013-03-18ipoe: early drop routes when dropping sessions (V2)Dmitry Kozlov
2013-03-18Revert "ipoe: early drop routes when dropping sessions"Dmitry Kozlov
This reverts commit 3108115ec7816c99e737d3623a2fb63875af058e.
2013-03-18ipoe: early drop routes when dropping sessionsKozlov Dmitry
2013-03-16ipoe: drop previous session when new one detected in shared=0 modeKozlov Dmitry
2013-03-16l2tp: Don't close tunnel upon error on HELLOGuillaume Nault
If a HELLO message can't be acknowledged just log an error as tunnel doesn't need to get closed. If too many HELLO messages aren't acknowledged, the peer will close the tunnel itself. Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
2013-03-16l2tp: Notify peer upon tunnel/session timeoutGuillaume Nault
If tunnel or session establishment timeout expires, send StopCCN or CDN to notify peer before closing tunnel/session. Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
2013-03-16l2tp: Don't depent on StopCCN for tunnel disconnectionGuillaume Nault
Always disconnect tunnel once l2tp_tunnel_disconnect() is called, even if sending StopCCN failed. Change the way unknown message types are handled to comply with new l2tp_tunnel_disconnect() signature. Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
2013-03-16l2tp: Improve error handling of duplicate messagesGuillaume Nault
Don't terminate tunnel in case of error while handling a duplicate message. Such errors aren't critical enough to justify termination of a tunnel and all of its sessions. Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
2013-03-16l2tp: Free tunnels that couldn't startGuillaume Nault
When starting a tunnel created upon user request, free it in case of error. Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
2013-03-16l2tp: Fix early message sending during tunnel establishmentGuillaume Nault
A side effect of setting peer port to zero when sending SCCRQ messages is that the tunnel can't send any new message before receiving first peer's answer (this doesn't apply to retransmissions as peer port is set in the original packet). It is then impossible to send StopCCN messages within this time frame. This patch fixes this issue using a new tunnel flag which indicates if tunnel's peer port has a default value or if it has been set after reception of peer's first message. Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
2013-03-16l2tp: Centralise management of tunnel establishment timersGuillaume Nault
Handle tunnel timeout timers in l2tp_tunnel_start() and l2tp_tunnel_connect(). This avoids timer code duplication across functions that are spectific to the tunnel establishment mode. Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
2013-03-16l2tp: Centralise management of session establishment timersGuillaume Nault
Start and stop session timeout timers in l2tp_tunnel_start_session() and l2tp_session_connect(). This unifies timers management across the four different ways of creating sessions. Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
2013-03-16l2tp: Dedicated function for replying to incomming callsGuillaume Nault
Define l2tp_session_incall_reply() which can be used as parameter for l2tp_tunnel_start_session(). This removes the need for updating session's state in l2tp_send_ICRP() and normalises the way incomming and outgoing sessions are handled. Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
2013-03-16l2tp: Merge incomming and outgoing session startingGuillaume Nault
Define l2tp_session_place_call() which can start either an incomming or outgoing session depending on the 'sess->lns_mode' flag. This removes the need for testing session mode before calling l2tp_tunnel_start_session(). Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
2013-03-16l2tp: Centralise new session launchingGuillaume Nault
Creating new sessions always involves the same steps: * Create new session context * Call session's first function in this context * Start session establishment timer This patch starts centralising the first two steps in l2tp_tunnel_confirm_session() (renamed l2tp_tunnel_start_session() in order to use similar ways for starting tunnels and sessions). Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
2013-03-16l2tp: Send CDN in tunnel contextGuillaume Nault
Handling ICRQ or OCRQ requests occurs in tunnel context, but if session creation is rejected, a CDN has to be sent. However, l2tp_send_CDN() is supposed to be called in session context. This means that it uselessly switches to tunnel context before sending messages and requires a session structure to work on. This patch creates a new function for sending CDN from tunnel context. It gets the session and peer session IDs from its arguments and calls l2tp_tunnel_send() directly. The l2tp_recv_ICRQ() and l2tp_recv_OCRQ() functions are modified to take advantage of this new function and will now send CDN even upon early message processing error. Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
2013-03-16l2tp: Use tunnel/session specific sending functionsGuillaume Nault
Define the l2tp_{tunnel,session}_send() functions for sending messages in tunnel or session context. Session messages have their session ID automatically set and switch to tunnel context for sending messages. Though the 'debug' parameter is removed from function prototypes, the logging mechanism is respected: HELLO and ZLB are displayed as 'debug' messages while other message types use 'info2'. Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
2013-03-16ipoe: fixed shared=1 modeKozlov Dmitry
2013-03-15l2tp: Display error message when tunnel creation fails (CLI)Guillaume Nault
Print details about errors that can occur when using the "l2tp create tunnel" command line. Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
2013-03-15l2tp: Display error message when session creation fails (CLI)Guillaume Nault
Print details about errors that can occur when using the "l2tp create session" command line. Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
2013-03-15l2tp: Strict error management in start_udp_server()Guillaume Nault
Check for errors in start_udp_server() and return exit status to calling function. Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
2013-03-15l2tp: Allocate memory with functions from memdebug.hGuillaume Nault
Use memdebug variants of {m,re}alloc() so that the corresponding _free() will work correctly if MEMDEBUG is defined. Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
2013-03-15l2tp: Handle l2tp_session_free() failuresGuillaume Nault
Update l2tp_session_free's prototype to return its error status. Do the opposite for l2tp_tunnel_cancel_session (make it return void) as it never fails. Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
2013-03-15l2tp: Use tunnel/session logging functionsGuillaume Nault
Define macros for logging tunnel or session messages with automatic context information display. Use these macros to replace most existing error messages + add missing ones. Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
2013-02-17doc: Document the [cli] section of config fileGuillaume Nault
Add entries in accel-ppp.conf.5 for configuration options defined by the CLI module. Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
2013-02-17cli: Add the sessions-columns configuration optionGuillaume Nault
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>
2013-02-17cli: Fix "show sessions" if no column to displayGuillaume Nault
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>
2013-02-13l2tp: Flush ack-ed messages from retransmission queueGuillaume Nault
When several messages are sent consecutively, the peer can reply with a single ZLB to acknowledge all messages. In this case, removing only the first message from the retransmission queue isn't enough (acknowledged messages left in the queue will be retransmitted). This case can happen when replying to an outgoing call request, wich is handled by sending two messages in a row (an OCRP and an OCCN). This patch avoids useless retransmissions by removing all messages acknowledged by peer from the retransmission queue. Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
2013-02-13l2tp: Implement outgoing call receptionGuillaume Nault
Handle OCRQ requests when operating as LAC. Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
2013-02-13l2tp: Fix Result Code AVP byte orderGuillaume Nault
Send the Result and Error fields of StopCCN and CDN messages in network byte order. Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
2013-02-13l2tp: Take StopCCN's AVPs into accountGuillaume Nault
Use the Assigned Tunnel ID and Result Code AVPs when handling StopCCN messages. The Result Code AVP is used to improve log messages, while the Assigned Tunnel ID is used to set the tunnel's peer-tid field. Setting peer-tid makes the ZLB to be sent to the right tunnel in case no Assigned Tunnel ID had been received yet (this happens when the host sends an SCCRQ but the peer directly rejects the connection with StopCCN). Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
2013-02-13l2tp: Acknowledge SLI messagesGuillaume Nault
Send a ZLB after reception of Set-Link-Info (SLI) messages to avoid retransmissions from the LNS. Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
2013-02-13l2tp: Fix RFC 2661 and RFC 3931 dictionariesGuillaume Nault
Fix a few errors in dictionary.rfc2661 and dictionary.rfc3931 (missing entries, typos, wrong type/flags, etc.) and re-generate attr_defs.h. Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
2013-02-13l2tp: Declare message receptions attributes as constGuillaume Nault
Add const qualifier to attributes pointers used for parsing incoming L2TP messages. Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
2013-02-13l2tp: Define message type attribute as constantGuillaume Nault
Add const qualifier to the Message Type variable used by the generic L2TP reception functions. Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
2013-02-13l2tp: Define packet as constant in reception functionsGuillaume Nault
Add const qualifier to packet passed to l2tp_recv_*() functions. Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
2013-02-13l2tp: Add const qualifier to packet allocation functionGuillaume Nault
Define the address parameter of l2tp_packet_alloc() as constant. Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
2013-02-13l2tp: Define option variables as constantGuillaume Nault
Add const qualifiers to the string used for reading configuration. Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>