- 08 2月, 2014 6 次提交
-
-
由 Guillaume Nault 提交于
* l2tp_session_disconnect() now always succeeds. * l2tp_tunnel_cancel_session() now can be replaced by l2tp_session_free(). Signed-off-by: NGuillaume Nault <g.nault@alphalink.fr>
-
由 Guillaume Nault 提交于
Run the control channels of L2TP sessions in their tunnel context to avoid context calls between tunnels and sessions. Tunnels and sessions now use the new state STATE_INIT as their initial state (allows to differentiate between tunnels and sessions that are starting or stopping). The STATE_CLOSE state isn't implicitely set to 0 by memset() anymore, so its value is changed for consistency with the other STATE_* values. With tunnels and sessions running in the same context, sessions can remove themselves from their tunnel without having to perform context calls. Tunnels can also remove sessions directly, without having to asynchronously notify them. So the set of l2tp_tunnel_free_session*() functions becomes useless. Sessions can also check if they're the last session of the tunnel and automatically disconnect the tunnel if need be. So the l2tp_tunnel_session_freed() callback can be removed. The 'sess_count' field is now used to track the number of sessions stored in the 'sessions' field of tunnels. It's incremented as soon as a session is added and everytime one is removed. The callback, used by data channels to notify their L2TP control session of disconnection, is now executed in the tunnel context. The session ID is used by the tunnel to find which session the disconnection applies to. The session may well get destroyed by other means between the time of the context call and the time of the callback execution. The l2tp_tunnel_start_session() function doesn't need to create a new context for the session. It now only sets the session establishment timer and directly runs the session startup callback. Since l2tp_session_free() can now handle sessions in any state and is called within the tunnel context, there is no need for a special l2tp_tunnel_cancel_session() (for now, this function is kept for patch clarity). Now that session packets are sent while in tunnel context, l2tp_session_send() only needs to set the header session ID and can directly call l2tp_tunnel_send(). For reception, the tunnel also directly calls l2tp_session_recv(). Signed-off-by: NGuillaume Nault <g.nault@alphalink.fr>
-
由 Guillaume Nault 提交于
Split L2TP control and data channels operations. The data channel of an L2TP session now runs in its own triton context. The L2TP control session initialises and launches the data channel context in l2tp_session_start_data_channel(). Then all data channel operations (e.g. PPP negociation) are performed in this context. When the data channel stops, it checks if the control channel is still running; if so, it notifies the control channel about its disconnection using the l2tp_session_apses_finished() callback. The control channel similarly checks for data channel execution and notifies about L2TP layer disconnection using apses_stop(). Since the presence of the data channel is checked using its context field, the STATE_PPP state isn't required anymore. So L2TP control sessions now automatically enter STATE_ESTB in l2tp_session_connect(). A new set of states (APSTATE_*) are defined for tracking evolution of data channels. Data channels also handle statistics using these new states. Signed-off-by: NGuillaume Nault <g.nault@alphalink.fr>
-
由 Guillaume Nault 提交于
Define a new function for initialising and starting the data channel of an L2TP session. For now, l2tp_session_start_data_channel() only gathers the data channel specific operations, previously handled by l2tp_tunnel_alloc_session() and l2tp_session_connect(). While here, move deletion of the session establishment timer to the beginning of l2tp_session_connect(), so that it will stop even if the function fails. Signed-off-by: NGuillaume Nault <g.nault@alphalink.fr>
-
由 Guillaume Nault 提交于
Use reference counters to track tunnels and sessions usage. Tunnels hold a reference to each of their sessions while sessions hold a reference to the tunnel they belong to. Tunnels and sessions also hold themselves to ensure that l2tp_{tunnel_session}_free() will be called before their reference counter drops to zero. Once the reference counter drops to zero, the tunnel or session is destroyed. Destruction may happen in any context, so context dependant operations still have to be done in l2tp_{tunnel,session}_free(). On the other hand l2tp_{tunnel,session}_free() must not free data wich may be required by their reference holders. Signed-off-by: NGuillaume Nault <g.nault@alphalink.fr>
-
由 Guillaume Nault 提交于
A triton context handler may not unregister itself while executed by the context thread, unless it returns -1 (otherwise the md thread may free the handler before the context thread stops using it). So l2tp_conn_read() must return -1 after calling l2tp_tunnel_free() (the md handler associated to l2tp_conn_read() may be unregistered by l2tp_tunnel_free()). Signed-off-by: NGuillaume Nault <g.nault@alphalink.fr>
-
- 07 2月, 2014 2 次提交
-
-
由 Dmitry Kozlov 提交于
Signed-off-by: NDmitry Kozlov <xeb@mail.ru>
-
由 Dmitry Kozlov 提交于
Signed-off-by: NDmitry Kozlov <xeb@mail.ru>
-
- 22 1月, 2014 2 次提交
-
-
由 Guillaume Nault 提交于
The "reload" command frees the variable pointed to by conf_secret in case the "secret" option gets removed from accel-ppp.conf. In such a case, conf_secret must be reset to NULL to avoid dereferencing the old pointer. Signed-off-by: NGuillaume Nault <g.nault@alphalink.fr>
-
由 Guillaume Nault 提交于
Store tunnel secret in the l2tp_conn_t structure so that different tunnels may use different secrets. The new "secret" option, added to the "l2tp create tunnel" command, let the user define the secret to be used by the new tunnel. By default, new tunnels keep using the "secret" option defined in accel-ppp.conf. Signed-off-by: NGuillaume Nault <g.nault@alphalink.fr>
-
- 20 1月, 2014 2 次提交
-
-
由 Dmitry Kozlov 提交于
Signed-off-by: NDmitry Kozlov <xeb@mail.ru>
-
由 Dmitry Kozlov 提交于
Signed-off-by: NDmitry Kozlov <xeb@mail.ru>
-
- 19 1月, 2014 3 次提交
-
-
由 Guillaume Nault 提交于
There are a few inconsistencies between TR-101 and RFC 4679. Since RFC 4679 is only informational, prefer TR-101 in case of incompatibilities and explicitely document this choice. Signed-off-by: NGuillaume Nault <g.nault@alphalink.fr>
-
由 Guillaume Nault 提交于
RFC 4679 assigns identifier 0xFE (254) to the IWF-Session attribute. This is consistent with the identifier value specified by TR-101. Signed-off-by: NGuillaume Nault <g.nault@alphalink.fr>
-
由 Dmitry Kozlov 提交于
Signed-off-by: NDmitry Kozlov <xeb@mail.ru>
-
- 17 1月, 2014 7 次提交
-
-
由 Guillaume Nault 提交于
This TR-101 sub-tag has no payload. Signed-off-by: NGuillaume Nault <g.nault@alphalink.fr>
-
由 Guillaume Nault 提交于
Some attributes, like IWF-Session (RFC 4679), may have no payload. Allow the len parameter of rad_packet_add_octets() to be 0 in order to add such attributes (and do the same for rad_packet_change_octets() for API consistency). Signed-off-by: NGuillaume Nault <g.nault@alphalink.fr>
-
由 Guillaume Nault 提交于
These are all 4 bytes integer values, except ACCESS_LOOP_ENCAP which represents three independant values of one byte each. Signed-off-by: NGuillaume Nault <g.nault@alphalink.fr>
-
由 Guillaume Nault 提交于
The length field of PPPoE TR-101 sub-tags only takes the payload size into account (as opposed to its RADIUS counterpart that stores the full sub-tag length, including the 2 bytes long header). Signed-off-by: NGuillaume Nault <g.nault@alphalink.fr>
-
由 Guillaume Nault 提交于
When a sub-tags is skipped while parsing a TR-101 tag, the ptr variable must be updated to point to the next sub-tag, otherwise the next loop iteration erroneously interprets tag information. While here, fix the range of attribute that mustn't be present in RADIUS access requests (RFC 4679, section 4). Signed-off-by: NGuillaume Nault <g.nault@alphalink.fr>
-
由 Guillaume Nault 提交于
As per TR-101 specifications and RFC 4679, 0x84 is the sub-tag number for Minimum-Data-Rate-Downstream (instead of Maximum-Data-Rate-Upstream). Signed-off-by: NGuillaume Nault <g.nault@alphalink.fr>
-
由 Guillaume Nault 提交于
Avoid parsing inconsistent PPPoE tags when handling PADR. Signed-off-by: NGuillaume Nault <g.nault@alphalink.fr>
-
- 24 12月, 2013 4 次提交
-
-
由 Vladislav Grishenko 提交于
ppp: don't unconditionaly load pppoe/pptp/l2tp modules, fixes false start warning if they're running already Signed-off-by: NVladislav Grishenko <themiron@mail.ru>
-
由 Dmitry Kozlov 提交于
Revert "ppp: don't unconditionaly load pppoe/pptp/l2tp modules, fixes false start warning if they're running already" This reverts commit c4ddc0fe.
-
由 Vladislav Grishenko 提交于
ppp: don't unconditionaly load pppoe/pptp/l2tp modules, fixes false start warning if they're running already Signed-off-by: NVladislav Grishenko <themiron@mail.ru>
-
由 Vladislav Grishenko 提交于
Signed-off-by: NVladislav Grishenko <themiron@mail.ru>
-
- 13 12月, 2013 2 次提交
-
-
由 Dmitry Kozlov 提交于
Signed-off-by: NDmitry Kozlov <xeb@mail.ru>
-
由 Dmitry Kozlov 提交于
Signed-off-by: NDmitry Kozlov <xeb@mail.ru>
-
- 08 11月, 2013 3 次提交
-
-
由 Dmitry Kozlov 提交于
Signed-off-by: NDmitry Kozlov <xeb@mail.ru>
-
由 Dmitry Kozlov 提交于
Signed-off-by: NDmitry Kozlov <xeb@mail.ru>
-
由 Dmitry Kozlov 提交于
Signed-off-by: NDmitry Kozlov <xeb@mail.ru>
-
- 06 11月, 2013 1 次提交
-
-
由 Dmitry Kozlov 提交于
Signed-off-by: NDmitry Kozlov <xeb@mail.ru>
-
- 05 11月, 2013 1 次提交
-
-
由 Dmitry Kozlov 提交于
-
- 03 11月, 2013 1 次提交
-
-
由 Kozlov Dmitry 提交于
Close netlink socket in remove_limiter function. Signed-off-by: NKozlov Dmitry <xeb@mail.ru>
-
- 31 10月, 2013 2 次提交
-
-
由 Dmitry Kozlov 提交于
Signed-off-by: NDmitry Kozlov <xeb@mail.ru>
-
由 Dmitry Kozlov 提交于
Signed-off-by: NDmitry Kozlov <xeb@mail.ru>
-
- 30 10月, 2013 4 次提交
-
-
由 Dmitry Kozlov 提交于
Signed-off-by: NVladislav Grishenko <themiron@mail.ru>
-
-
由 Dmitry Kozlov 提交于
Signed-off-by: NDmitry Kozlov <xeb@mail.ru>
-
由 Dmitry Kozlov 提交于
Signed-off-by: NDmitry Kozlov <xeb@mail.ru>
-