History log of /seL4-camkes-master/projects/lwip/src/netif/ppp/pppol2tp.c
Revision Date Author Comments
# f31160a6 15-Jun-2018 Sylvain Rochet <gradator@gradator.net>

PPP, PPPoL2TP: properly ack receipt of duplicate packets

Managed to find the spirit behind the RFC. Looks like we need to send
a ZLB packet with counters as is to the packet (ZLB or not) we
previously sent to ack the message. Luckily we don't need more than
received NS/NR counters to forge the resent ack.

Signed-off-by: Sylvain Rochet <gradator@gradator.net>


# 738a2fe8 15-Jun-2018 Sylvain Rochet <gradator@gradator.net>

PPP, PPPoL2TP: stop ICCN timeout when receiving ICCN ack

Remove spurious and hitless timeout function call once L2TP reach "data"
state.

Signed-off-by: Sylvain Rochet <gradator@gradator.net>


# 98008cb1 15-Jun-2018 Sylvain Rochet <gradator@gradator.net>

PPP, PPPoL2TP: use expected peer NS instead of current peer NS

We never use the current peer NS value but always the next expected peer
NS value (current value plus one).

Signed-off-by: Sylvain Rochet <gradator@gradator.net>


# a5651903 15-Jun-2018 Sylvain Rochet <gradator@gradator.net>

PPP, PPPoL2TP: drop unexpected packets from peer

Conform a little bit more to the RFC by dropping duplicate received
packets. It might help discover Ns sequence issues.

Signed-off-by: Sylvain Rochet <gradator@gradator.net>


# 047c3c65 14-Jun-2018 Sylvain Rochet <gradator@gradator.net>

PPP, PPPoL2TP: take care of Ns/Nr wraparounds

It can't be an issue since we only send and receive a few L2TP control
packets and we don't care about anything received next other than
sending Ack packet. For the sake of correctness properly handle Ns/Nr
counters wraparounds, it doesn't add more code anyway.

Signed-off-by: Sylvain Rochet <gradator@gradator.net>


# 5b876060 14-Jun-2018 Sylvain Rochet <gradator@gradator.net>

PPP, PPPoL2TP: wait for ICCN ack before starting PPP

L2TP tunnel is really UP only once we received the ICCN Ack packet,
generally with a ZLB packet. We actually drop all data packets until
we reach the "data" L2TP state, which is a sane thing to do, therefore
it makes no sense at all to start the PPP session a bit earlier.

Signed-off-by: Sylvain Rochet <gradator@gradator.net>


# b9fe13c1 14-Jun-2018 Sylvain Rochet <gradator@gradator.net>

PPP, PPPoL2TP: fix ZLB packets Ns value

Our Ns counter is the current slot rather than the next to ease packet
retransmission. Therefore we increment the Ns counter before using the
next slot instead of after. The RFC is written with post-increment in
mind rather than pre-increment, thus when the RFC says that Ns in not
incremented for ZLB packets it actually means that ZLB packets are sent
with the next Ns without post-incrementing the Ns value, meaning the
ZLB packet does not take a slot. Since we are using a pre-incremented
value for real slots we need to send ZLB packets with our current Ns
value plus one.

Signed-off-by: Sylvain Rochet <gradator@gradator.net>


# 991f7513 08-Aug-2017 goldsimon <goldsimon@gmx.de>

Even more pbuf_header -> pbuf_add/remove_header replacements (also in strings)


# 07434aa7 08-Aug-2017 goldsimon <goldsimon@gmx.de>

More pbuf_header -> pbuf_add/remove_header replacements


# 4171f39a 05-May-2017 Sylvain Rochet <gradator@gradator.net>

PPP: remove ppp_singlebuf

We don't have to keep a helper function just for the sake of a PBUF_RAW
constant. Inline ppp_singlebuf function.

Signed-off-by: Sylvain Rochet <gradator@gradator.net>


# f00d7db4 03-May-2017 goldsimon <goldsimon@gmx.de>

backport of "variable assigned but not used" warnings from STM (why don't people report such things?)


# e16d10ad 08-Mar-2017 Sylvain Rochet <gradator@gradator.net>

PPP: remove unused and confusing return values other than ERR_OK for ppp_connect and ppp_listen

User should not use ppp_connect or ppp_listen return value to retry
later, it must wait for the callback to be called. This is primarily
done this way to have a consistent behavior with and without the
holdoff feature.

Remove returned error value from PPP link level API connect and listen
callbacks because we are not using them anymore, then make ppp_connect
or ppp_listen to always return ERR_OK, thus we are not breaking the PPP
user API.

We don't need the return code here, all PPP link level drivers can't
fail at all (e.g. PPPoS) or retry if necessary (PPPoE and PPPoL2TP).


# 16877216 05-Dec-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Fix compile when IPv4 is disabled


# 8c3c96ba 22-Nov-2016 Sylvain Rochet <gradator@gradator.net>

PPP, L2TP: fix PPPOL2TP_AUTH_SUPPORT == 0 support

Fix compiler warnings on unused parameters and a function signature
mismatch in PPPAPI.


# 633696c1 27-Sep-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Implement consistent IPx_ADDR_ANYx macro naming between IPv4 and IPv6
- rename IP4_ADDR_ANY to IP4_ADDR_ANY4
- IP4_ADDR_ANY (= IP_ADDR_ANY) is now IPv4 any address in ip_addr_t format


# 455a4182 07-Aug-2016 Sylvain Rochet <gradator@gradator.net>

PPP, PPPoL2TP: cleanup connection state reset

Remove unnecessary cleanup at the end of session, cleanup as much as
possible in the connect callback instead. It follows what PPPoE is
currently doing and it makes everything simpler to read.


# c2a5480a 04-Aug-2016 Sylvain Rochet <gradator@gradator.net>

PPP: remove useless ppp_link_start function

This function only set PPP to initialize phase, and it is only called at
the very beginning of functions where it is called. It means we could
as well set the initialize phase before calling those functions in the
PPP core.


# e8d8c5dc 04-Aug-2016 Sylvain Rochet <gradator@gradator.net>

PPP, L2TP: remove useless L2TP state conditions

L2TP state can't be anything else than initial state in
pppol2tp_connect, this function is called from PPP core only when PPP
is in the dead phase, if PPP is in the dead phase it means the link
protocol is dead as well.

L2TP can't be anything else than data phase in pppol2tp_xmit, this
function is only called by pppol2tp_write and pppol2tp_netif_output
which are both called by PPP core only when PPP session is up, if
PPP session is UP it means the link protocol is UP as well.

L2TP can't be anything else than data phase in pppol2tp_disconnect,
this function is only called by PPP core only when PPP session is up,
if PPP session is UP it means the link protocol is UP as well.


# f0dbba64 02-Jul-2016 Sylvain Rochet <gradator@gradator.net>

PPP, PPPoE, PPPoL2TP: enforce disabling of silent and passive modes

PPP is just the upper protocol for PPPoE and PPPoL2TP, meaning it is only
started once "E" or L2TP is established. Therefore waiting indefinitely
for LCP packets on the PPP side does not make sense at all, if the lower
level protocol is UP, PPP *MUST* comes up as well or we should restart from
the beginning.


# b77fcef1 26-Jun-2016 Sylvain Rochet <gradator@gradator.net>

PPP, L2TP: remove unnecessary l2tp->udp null check

l2tp->udp can't be null here, pppol2tp_create returns a NULL L2TP PCB
if UDP PCB failed to be created. Remove useless null check.


# 7b4bd334 19-Jun-2016 Sylvain Rochet <gradator@gradator.net>

PPP, rename ppp_clear function to ppp_link_start

This function does not clear anything anymore. What it is now is an
optional way to notify PPP that link layer is started, changing the
PPP state from "dead" to "initialize". Rename it accordingly to what
the function really is.


# 33fc20cc 08-May-2016 Sylvain Rochet <gradator@gradator.net>

PPP: use mbed TLS sanitize functions if available

mbed TLS offers sanitize functions to zero-ise memory containing
cryptographic keys, use them if built with external mbed TLS library.


# 3417a02b 08-May-2016 Sylvain Rochet <gradator@gradator.net>

PPP: add a function map for hashes and ciphers to prepare for mbed TLS support

Unfortunately, all functions were renamed when PolarSSL was renamed to
mbed TLS, breaking the API. In order to continue supporting our embedded
PolarSSL copy while allowing our users to use mbed TLS, we need a function
map to deal with the API break.

This commit add a function map for all hashes and ciphers we are currently
using.


# 2b5250dd 25-Apr-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Fix bug #47507: PPP API does not support LWIP_MPU_COMPATIBLE
I'd be glad if someone would test it :-)
Sylvain, if you don't like this patch feel free to revert it


# ffa340a6 25-Apr-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

task #13907: PPP cleanups: Move PPP mempools out of lwIP core to PPP code


# 76d25bef 21-Apr-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Work on task #13907 PPP cleanups: Move PPP options from opt.h to dedicated ppp_opts.h file


# 2b3db52c 11-Mar-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

pppol2tp.c: Avoid an #ifdef - there is a new UDP API function that can be used here


# 953b7bdd 24-Feb-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Implement UDP dual-stack PCB support
Create special IP address type "IPADDR_TYPE_ANY" for it.
SNMP uses new feature in non-netconn mode.

TODO: Same for TCP & RAW, adapt NETCONN to use this feature


# 17fad79f 22-Feb-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Two compile fixes after eliminating isipv6 member in PCBs


# c4d78e64 20-Jan-2016 Sylvain Rochet <gradator@gradator.net>

PPP, PPPoL2TP, fix double free of L2TP pcb in pppol2tp_create error path

ppp_free() calls the low level protocol destroy function, pppol2tp_destroy()
here, which freed the l2tp pcb, followed by pppol2tp_create which also freed
the pcb.

Fixing it by reordering the L2TP init so we don't have to call ppp_free()
anymore.

Signed-off-by: Sylvain Rochet <gradator@gradator.net>


# 62037370 12-Nov-2015 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Rename snmp_mib2.h to snmp.h so source compatibility for user netif implementations is preserved


# 83cddd89 18-Sep-2015 Sylvain Rochet <gradator@gradator.net>

PPP: more const and mixed u_char/char types fixes


# c15b3578 13-Sep-2015 Sylvain Rochet <gradator@gradator.net>

PPP, merged ppp_link_set_callbacks() into ppp_new()


# 46204a9f 13-Sep-2015 Sylvain Rochet <gradator@gradator.net>

PPP, reorder initialisation of low level protocols to call ppp_link_set_callbacks() just after PPP control block allocation


# 5b07569e 13-Sep-2015 Sylvain Rochet <gradator@gradator.net>

PPP, remove now unused ioctl callback from link_callbacks structure


# 8a0fb03e 08-Sep-2015 goldsimon <goldsimon@gmx.de>

Separate mib2 counter/table callbacks from snmp agent. This both cleans up the code and should allow integration of a 3rd party agent/mib2.


# e8399416 30-Aug-2015 Sylvain Rochet <gradator@gradator.net>

PPP, magic, renamed random_bytes() to magic_random_bytes() for API coherency


# fa44cef2 30-Apr-2015 Sylvain Rochet <gradator@gradator.net>

PPP, L2TP, added configurable L2TP MRU using opt.h


# 0a8b1c19 26-Apr-2015 Sylvain Rochet <gradator@gradator.net>

PPP, added missing cast on pbuf_header()


# 0de0942f 22-Apr-2015 goldsimon <goldsimon@gmx.de>

fixed pppol2tp (IP_IS_V6_L -> IP_IS_V6_VAL)


# 5e43e2d3 21-Apr-2015 Sylvain Rochet <gradator@gradator.net>

PPP, L2TP, minor fixes

Check tot_len for ZLB instead of len, it might happens we are just
between 2 pbuf, although almost impossible.

Check buffer is at least 2 byte long before checking address & flags
header.


# b302cad4 19-Apr-2015 Sylvain Rochet <gradator@gradator.net>

PPP, VJ, CCP: rework to fix protocol order

We need to do VJ compression before CCP/MPPE compression and VJ
decompression after CCP/MPPE decompression. This leads to a massive
rewrite of how we currently handled VJ only in the PPPoS lower protocol
handler.

Moved VJ structures from pppos to ppp_pcb because we need them back in
PPP core. This is a bit unfortunate because that's not necessary for
PPPoE or PPPoL2TP, but, hey!. Fixed CCP+MPPE+VJ order.


# bc99f75b 12-Apr-2015 Sylvain Rochet <gradator@gradator.net>

PPP, PPPoL2TP, removed unnecessary single pbuf

Removed ppp_singlebuf() in pppol2tp_input(), chained pbuf are perfectly
acceptable for IP data and we are currently supporting them perfectly
for PPPoS. The PPP stack itself (LCP, IPCP et al.) does not support
chained pbuf and is already calling ppp_singlebuf() just before passing
packet to the protocol handler.

Added ppp_singlebuf() in pppol2tp_dispatch_control_packet() because we
do not support chained pbuf in L2TP control packet.


# 8a73990f 11-Apr-2015 Sylvain Rochet <gradator@gradator.net>

PPP, PPPoL2TP, improved pppol2tp_create() error path


# efe229a5 11-Apr-2015 Sylvain Rochet <gradator@gradator.net>

PPP, PPPoL2TP, merged pppol2tp_input_ip() to pppol2tp_input()

We don't need anymore an input function for ip4 and an input function
for ip6, work to achieve that was partially done by ce7e31cd.
pppol2tp_input() is now only called by pppol2tp_input_ip(), finishing
dual stack support by merging pppol2tp_input_ip() into pppol2tp_input().


# d6fdf7d4 11-Apr-2015 Sylvain Rochet <gradator@gradator.net>

PPP, PPPoL2TP, switched to dual stack IPv4/IPv6

Replaced ip4_addr_t to ip_addr_t in pppapi_pppol2tp_create() prototype,
now binding to UDPv6 or UDPv4 depending on the passed ip_addr_t type.

Removed pppol2tp_create_ip6() and pppapi_pppol2tp_create_ip6().


# ce7e31cd 09-Apr-2015 sg <goldsimon@gmx.de>

task #12722 (improve IPv4/v6 address handling): renamed ip_addr_t to ip4_addr_t, renamed ipX_addr_t to ip_addr_t and added IP version;
ip_addr_t is used for all generic IP addresses for the API, ip(4/6)_addr_t are only used internally or when initializing netifs or when calling version-related functions


# 93fa268d 24-Mar-2015 sg <goldsimon@gmx.de>

used ip6_addr_t instead of struct ip6_addr, fix const'ness in ip6_route parameters


# 4e62a888 20-Mar-2015 Sylvain Rochet <gradator@gradator.net>

PPP, PPPoL2TP, fixed build with IPv6 enabled


# 4ed34d2c 19-Mar-2015 Sylvain Rochet <gradator@gradator.net>

PPP, PPPoL2TP, fixed build without IPv6 enabled


# 5097ac05 14-Mar-2015 Sylvain Rochet <gradator@gradator.net>

PPP, fixed warnings if LWIP_SNMP is disabled


# f666e772 13-Mar-2015 Sylvain Rochet <gradator@gradator.net>

PPP, PPPoL2TP, warning fix if PPP IPv6 is enabled

lwip/src/netif/ppp/pppol2tp.c: In function ‘pppol2tp_udp_send’:
lwip/src/netif/ppp/pppol2tp.c:1229:3: warning: ‘err’ may be used uninitialized in this function [-Wmaybe-uninitialized]
return err;
^


# 50336aae 13-Mar-2015 Sylvain Rochet <gradator@gradator.net>

PPP, ppp->last_xmit is only used in PPPoS, moved to PPPoS

Only PPPoS need to keep track of last transmitted packet for HDLC flag,
removed from PPPoE and PPPoL2TP and moved to PPPoS.


# a60f2588 10-Mar-2015 Sylvain Rochet <gradator@gradator.net>

PPP, PPPoE and PPPoL2TP, removed ppp->pcomp usage

We refuse protocol compression in both PPPoE and PPPoL2TP, therefore
ppp->pcomp can't be true, removed.


# dbacfe0a 08-Mar-2015 Sylvain Rochet <gradator@gradator.net>

PPP, IPCP, fully removed VJ support from IPCP if VJ_SUPPORT is disabled


# 3ce6dd16 01-Mar-2015 Sylvain Rochet <gradator@gradator.net>

PPP, L2TP, added link-level IPv6 support


# 684bef06 01-Mar-2015 Sylvain Rochet <gradator@gradator.net>

PPP, L2TP, merged common output code

New function: pppol2tp_udp_send(), common output code.


# 52f2221b 01-Mar-2015 Sylvain Rochet <gradator@gradator.net>

PPP, L2TP, check source ip address and port

Improve L2TP defensiveness by checking source ip address and port
of input packets.


# 1bee131d 01-Mar-2015 Sylvain Rochet <gradator@gradator.net>

PPP, L2TP, using LNS chosen destination port

L2TP LNS might chose its own local port, we actually stored
the port the LNS wanted to use but we never used it.


# 371bc91d 28-Feb-2015 Sylvain Rochet <gradator@gradator.net>

PPP, SERVER: added PPPoS server support

New function: ppp_listen(), listen for an incoming PPP connection.


# 89771de6 28-Feb-2015 Sylvain Rochet <gradator@gradator.net>

PPP, remove VJ callback from link_callbacks if VJ support is not enabled


# 65095253 22-Feb-2015 Sylvain Rochet <gradator@gradator.net>

PPP, fixed warnings introduced by const pointers on ip_addr_t


# 00e8988b 21-Feb-2015 Sylvain Rochet <gradator@gradator.net>

PPP, IPv4 support is now optional

New compile time option: PPP_IPV4_SUPPORT

PPP IPv4 support can now be compiled out.


# 2c70c128 20-Feb-2015 Sylvain Rochet <gradator@gradator.net>

PPP, PPPoL2TP, removed PPPERR_ usage

Low level protocol callbacks are using err_t returns type,
don't use PPPERR_ on them.


# 29f3f2e1 19-Feb-2015 Sylvain Rochet <gradator@gradator.net>

PPP, PPPoS, moved VJ protocol handler to PPPoS

New callback, netif input, allow low level drivers to extend
ppp_input call, moved PPPoS VJ support to pppos.c.


# 729e24da 19-Feb-2015 Sylvain Rochet <gradator@gradator.net>

PPP, PPPoS, added sub-ioctl commands

Allow low level drivers to extend ioctl call, moved PPPoS ioctl
commands to pppos.c.


# ec362536 19-Feb-2015 Sylvain Rochet <gradator@gradator.net>

PPP, uniformised callbacks naming


# b92fe3ee 19-Feb-2015 Sylvain Rochet <gradator@gradator.net>

PPP, CORE, new callbacks, send_config, recv_config, vj_config

Removed some calls from PPP core to PPPoS low level protocols,
the const struct allows us to have more and more callbacks
without using more RAM.


# 985de035 19-Feb-2015 Sylvain Rochet <gradator@gradator.net>

PPP, CORE, now using const callbacks struct from lower level protocols

Saving some RAM by using callbacks struct in rodata for required
callbacks called by PPP core to PPP low level protocols.


# 8a8cba75 17-Feb-2015 Sylvain Rochet <gradator@gradator.net>

PPP, lower protocols, chained returns from local functions to callback caller

PPPoS,PPPoE,PPPoL2TP functions using non-void returns are now propagated
to callback caller (PPP core).


# 1ae3808e 17-Feb-2015 Sylvain Rochet <gradator@gradator.net>

PPP, CORE, prepared for lower protocols callbacks returning state

Until now, callbacks used void return, preparing callbacks to return
PPPERR_ status.


# ee2936ff 17-Feb-2015 Sylvain Rochet <gradator@gradator.net>

PPP, all protocols, uniformised naming

Uniformised fonction naming between and inside PPPoS, PPPoE, PPPoL2TP.


# e6465a6f 15-Feb-2015 Sylvain Rochet <gradator@gradator.net>

PPP, PPPoS, moved VJ from PPP core to PPPoS

VJ is only available for PPPoS, moved VJ from PPP CORE to PPPoS.


# 09b44858 15-Feb-2015 Sylvain Rochet <gradator@gradator.net>

PPP, generalized callbacks calls from PPP core, removed all PPPoE and PPPoL2TP references

Almost there, removed all PPPoE and PPPoL2TP references from PPP core,
using the generic callbacks interface everywhere.


# 19282d6d 15-Feb-2015 Sylvain Rochet <gradator@gradator.net>

PPP, moved low level protocol connect init to low level protocol files

Low level protocol init machine state does not belong to PPP core,
moved those init to respective low level protocol files.


# ee85aacc 15-Feb-2015 Sylvain Rochet <gradator@gradator.net>

PPP, removed low level create functions from PPP core

ppp_over_ethernet_create() moved from ppp.c to pppoe.c
ppp_over_l2tp_create() moved from ppp.c to pppol2tp.c


# 0afc34f6 15-Feb-2015 Sylvain Rochet <gradator@gradator.net>

PPP, moved ppp_write and ppp_netif_output low level protocols functions to respective low level protocol files

Moved ppp_write_over_ethernet() and ppp_netif_output_over_ethernet() to pppoe.c
Moved ppp_write_over_l2tp() and ppp_netif_output_over_l2tp() to pppol2tp.c


# 45bfccfd 15-Feb-2015 Sylvain Rochet <gradator@gradator.net>

PPP, prepare new callbacks for low level protocols

New callbacks: write and netif_output


# f8501478 15-Feb-2015 Sylvain Rochet <gradator@gradator.net>

PPP: prepared callbacks from PPP core to low level protocols

New PPP callback from PPP core to low level protocols, first
step about removing named calls to low level protocols from PPP core.


# 80809841 14-Feb-2015 Sylvain Rochet <gradator@gradator.net>

PPP: removed PPPoE and PPPoL2TP callback status notifier

Added necessary PPP core functions for PPPoE and PPPoL2TP status
notificaton (ppp_link_failed and ppp_link_end), removed callback,
low level protocol are now calling PPP core "link" functions.


# 74fd2dc9 14-Feb-2015 Sylvain Rochet <gradator@gradator.net>

PPP: moved ppp_new() to low level protocol init for PPPoE and PPPoL2TP

First step of a rework of how low level protocols are using the
PPP core. Low level protocols are now going to use the core instead
of core using the low level protocols.

Final goal: separate PPP core code from low level protocols.


# 2b3e0201 24-Dec-2014 Sylvain Rochet <gradator@gradator.net>

PPP, fixed some compiler warnings

Using -Wall -pedantic -Wparentheses -Wsequence-point
-Wswitch-default -Wextra -Wundef -Wshadow -Wpointer-arith
-Wbad-function-cast -Wc++-compat -Wwrite-strings -Wold-style-definition
-Wmissing-prototypes -Wredundant-decls -Wnested-externs -Wno-address


# da19974e 12-Oct-2014 Sylvain Rochet <gradator@gradator.net>

fixed bug #43235, cleared compiler warnings when using gcc with -Wextra option


# 44b52741 22-Apr-2013 Sylvain Rochet <gradator@gradator.net>

PPP, slight API change, great code factorisation

Created new ppp_over_X_create() functions which only prepare the PPP session without starting it
Removed ppp_reopen() and all of its sub ppp_over_X_reopen()
Removed PPPoL2TP reconnect() function, merged to connect()
Added ppp_open() able to start or restart any session


# 19864a4a 25-Aug-2012 Sylvain Rochet <gradator@gradator.net>

PPP L2TP, only skip HDLC header if necessary

RFC 2661 does not specify whether the PPP frame in the L2TP payload should
have a HDLC header or not. We handle both cases for compatibility.


# 1ddebcc8 18-Aug-2012 Sylvain Rochet <gradator@gradator.net>

Moved PPP headers into include/netif/ppp/, fixing bug #37040.


# c58c27ed 24-Jul-2012 Sylvain Rochet <gradator@gradator.net>

removed time-based PPP phase state machine hacks from PPPoE dans PPPoL2TP

Our PPP phase state machine is now clean, we can safely remove time based
hacks in PPPoE dans PPPoL2TP.


# 3c122117 22-Jul-2012 Sylvain Rochet <gradator@gradator.net>

improved PPP API, added ppp_reopen()

This is now the user choice to re-establish the session in the link status callback
by either calling the ppp_reopen() to re-establish or ppp_delete() to free the PPP
control block. Without user intervention, the PPP control block now stay in the dead
phase, allowing the user to re-establish or delete the control block later.


# bc724ea2 22-Jul-2012 Sylvain Rochet <gradator@gradator.net>

Do not destroy the PPP control block automatically anymore, added ppp_delete() API function.

Without that, PPP user don't know when and how the PPP control block is free()ed, which
can lead to hard fault.


# c65883a7 16-Jul-2012 Sylvain Rochet <gradator@gradator.net>

UCHAR_MAX is defined in limits.h, I do not want to add any system include, replaced to 0xff


# 94c35184 14-Jul-2012 Sylvain Rochet <gradator@gradator.net>

replaced PPPoL2TP printf() used to debug to PPPDEBUG a/o deletion


# 78565026 11-Jul-2012 Sylvain Rochet <gradator@gradator.net>

L2TP output netif is now selectable, making it useful to select a default route for the L2TP tunnel, in case the default interface is set to the L2TP PPP interface


# de6be743 11-Jul-2012 Sylvain Rochet <gradator@gradator.net>

added holdoff support for PPPoE and PPPoL2TP when persist mode is used


# f534e80c 09-Jul-2012 Sylvain Rochet <gradator@gradator.net>

added L2TPv2 (PPP over L2TP, a.k.a. UDP tunnels) support

Supported:
- L2TPv2 (PPP over L2TP, a.k.a. UDP tunnels)
- LAC

Not supported:
- LNS (require PPP server support)
- L2TPv3 ethernet pseudowires
- L2TPv3 VLAN pseudowire
- L2TPv3 PPP pseudowires
- L2TPv3 IP encapsulation
- L2TPv3 IP pseudowire
- L2TP tunnel switching - http://tools.ietf.org/html/draft-ietf-l2tpext-tunnel-switching-08
- Multiple tunnels per UDP socket, as well as multiple sessions per tunnel
- Hidden AVPs