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

PPP: improve randomization of LCP magic number after power-up

magic_init() is first time called from ppp_init(), which is called from
lwip_init(). If system has no RTC, sys_jiffies() returns same value in
this moment after every power-up or system reset. This value used in LCP
magic number generation after ppp_connect(), which leads to same magic
number after every restart. Subsequent magic_randomize() calls takes
place in ppp_input(), after magic number generation.

Call magic_randomize() somewhere near start of ppp_connect() (and
ppp_listen()) as it might be called later at a random time.

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


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

PPP: remove now unnecessary null PPP IP4 output handler

netif_null_output_ip4 dummy handler appeared in netif core, remove our
own from PPP stack.

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


# e20e9bc3 12-Feb-2018 goldsimon <goldsimon@gmx.de>

Try to fix issues reported by coverity


# 9d087ad2 03-Feb-2018 goldsimon <goldsimon@gmx.de>

Add LWIP_ASSERT_CORE_LOCKED() to ppp (see task #14780)

Signed-off-by: goldsimon <goldsimon@gmx.de>


# 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


# c094fcc0 21-Jun-2017 goldsimon <goldsimon@gmx.de>

Try to make gcc work without -Wno-address


# 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>


# 3e909baf 29-Apr-2017 Axel Lin <axel.lin@ingics.com>

PPP: use pbuf_coalesce() instead of private ppp_singlebuf()

pbuf_coalesce() creates a single pbuf out of a chain of pbufs, which is
exactly what ppp_singlebuf() need.

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Sylvain Rochet <gradator@gradator.net>


# d9b279d1 15-Mar-2017 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Cleanup documentation a bit: rename "Addons" to "NETIFs" - its a more appropriate name


# 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).


# 2e528ad5 23-Jan-2017 David van Moolenbroek <david@minix3.org>

PPP: clear address state before clearing address

netif_ip6_addr_set_state() relies on being able to access the old
address on invalidation, for example in order to invalidate PCBs
and leave the correct solicited-node MLD group.


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

Fix compile when IPv4 is disabled


# c4eb52dc 06-Nov-2016 Sylvain Rochet <gradator@gradator.net>

PPP: set protocol_list[] const

This array is a constant list of protocols, save some ram space by
adding the const modifier it deserves.


# 13fb616b 05-Oct-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Cleanup hton*/ntoh* function handling and platform abstraction
Let lwip use functions/macros prefixed by lwip_ internally to avoid naming clashes with external #includes.
Remove over-complicated #define handling in def.h
Make functions easier to override in cc.h. The following is sufficient now (no more LWIP_PLATFORM_BYTESWAP):
#define lwip_htons(x) <your_htons>
#define lwip_htonl(x) <your_htonl>


# 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


# 4af297fc 13-Aug-2016 Sylvain Rochet <gradator@gradator.net>

PPP: fix don't print valid LCP echo request/reply packets if the link is up

The check for link up was missing, meaning valid LCP echo request/reply
packets are filtered whatever the PPP state is, despite what the comment
says.

Fix it by checking the PPP state as we would like to have done when it
was written.


# 4e1f8eff 13-Aug-2016 Sylvain Rochet <gradator@gradator.net>

PPP: fix ppp_write internal documentation

This function returns an err_t, not a number of characters written.


# 282b8a2b 08-Aug-2016 Sylvain Rochet <gradator@gradator.net>

PPP: set disconnect state before closing link protocol in ppp_close

If LCP is not started yet, we are only closing the link protocol, in
this case we have to set the disconnect state ourself because PPP
is not actually started yet.


# 09c22e13 07-Aug-2016 Sylvain Rochet <gradator@gradator.net>

PPP: close link protocol if LCP is not started in ppp_close

ppp_close might try to close LCP even if LCP is not started, it happens
because because the PPP session might be waiting for the link protocol
to come up and we do not check that.

We say in the PPP documentation that ppp_close() can be called anytime,
so, if link protocol is currently trying to connect, we must cancel
the link connection.

Fix it by calling the link protocol disconnect callback if LCP is not
started yet.


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

PPP: don't restart LCP closing if termination is already in progress

We say in the PPP documentation that ppp_close() can be called anytime,
as of today, this is not entirely true, there are still conditions that
are not handled properly.

If PPP is already disconnecting, ppp_close() must do nothing and returns
ERR_INPROGRESS instead of messing up the PPP disconnection state.


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

PPP, move VJ_SUPPORT disabling if LWIP_TCP is not enabled to PPP options

Van Jacobson TCP header compression only apply if TCP is enabled,
therefore we need to disable VJ compression if TCP is disabled.

We already have conditions to enforce VJ disabling if IPv4 is disabled
or if PPPoS is disabled, add TCP to those conditions and remove
unecessary VJ_SUPPORT && LWIP_TCP conditions.


# 0a7db8a9 07-Aug-2016 Axel Lin <axel.lin@ingics.com>

PPP: remove double include for lwip/sys.h

Including it once is enough.

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Sylvain Rochet <gradator@gradator.net>


# 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.


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

PPP: set phase to establish before starting LCP

PPP is currently in initialize phase until authentication is started
or until we start IPCP negotiation.

It works, because PPP states are mostly used for user information, most
state are actually useless for PPP itself. Being in initialize state
while PPP is started is not very consistent, switch to establish phase
before starting LCP.


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

PPP: fix dead phase set too early

When we are disconnecting, we should switch to PPP dead phase at the
very end, because this is our final disconnection phase allowing
reconnect, therefore we should switch to dead phase after the link
protocol finished disconnecting.

We are currently switching to dead phase when LCP detected that the link
is down, this is obviously wrong. Fix this flaw by continuing in
disconnect phase until ppp_link_end is called from link protocol.


# 7b770dd9 26-Jul-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Document 6LoWPAN and SLIP netif


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

PPP: introduce ppp_set_passive and ppp_set_silent

There is two passive modes for PPPoS, passive more, for which we will
try to connect and then listen silently, and silent mode, for which we
will listen silently from the beginning.

Introduce ppp_set_passive and ppp_set_silent so the mode can be chosen
before connecting/listening.


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

PPP: don't build ppp_set_auth if no authenticator are enabled

For our few users which might disable all authenticators to save some
flash, ensure that everything using authentication is build out.


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

PPP: introduce ppp_set_mppe

Helper function to setup MPPE (Microsoft Point to Point Encryption) for
a PPP link. Allows enabling/disabled MPPE itself, enabling/disabling
stateless support, and whether we are willing to negotiate 40-bit
and/or 128-bit encryptions.


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

PPP, SERVER: move silent mode set from pppos_listen to ppp_listen

This flag would be required for any low level protocol used. Move it
from pppos_listen to ppp_listen.


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

PPP, DNS: introduce ppp_set_usepeerdns macro

PPP use peer DNS setting is currently hardcoded to true if PPP is
acting as a client and set to false if PPP is actinf as a server.

This is probably the most wanted behavior, but since we now have the
ability to change that at runtime, allow users to do it.

We don't have a way to have a different default configuration if the
PPP PCB is going to be used as a client or as a server, therefore the
default configuration should be fine for both of them. Since enabling
peer DNS by default is dangerous for server mode, the default is now
not to ask for DNS servers and it should now be explicitely enabled
if needed, update the documentation accordingly.


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

PPP, PPPoS, SERVER: remove useless struct ppp_addrs* argument from pppos_listen

Now that we have helpers to set those members externaly, pppos_listen
struct ppp_addrs* argument does not add any value. In addition it
was not a well chosen design choice because the user needed to keep a
copy of struct ppp_addrs when listening again for a new connection.


# 2040f4f0 19-Jun-2016 Sylvain Rochet <gradator@gradator.net>

PPP, trivial debug messages fixes/add

This change only add one debug message to ppp_link_start function
and fix the message debug string of ppp_link_failed and ppp_link_end.


# 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.


# 1d108b40 19-Jun-2016 Sylvain Rochet <gradator@gradator.net>

PPP, move various connect cleanup from ppp_clear to ppp_start

What we really need here is to cleanup the PPP environment before
starting LCP, we don't care about the PPP state before LCP is
started. Move cleanups from ppp_clear to ppp_start to clean them
just before we need them cleaned.


# 42d50eba 19-Jun-2016 Sylvain Rochet <gradator@gradator.net>

PPP, move protocols initialization from ppp_clear to ppp_new

What protocols init functions are meant to is to be called once to set
the default configuration before user specific configuration is set.

Until now, we reset to the default configuration just before
reconnecting, thus without allowing any time frame to let users change
it. That was fine until one user asked to be able to do that.

This change move protocols init functions calls from ppp_clear to
ppp_new, meaning user configuration is not overwritten anymore.


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

PPP, rework initial/reconnect cleanup

Our previous way of doing it was to clear everything except a small part
of the ppp_pcb structure and then populate the structure with default
values using protocols init functions.

But it means the user is currently not allowed to change the default
configuration except the few flags and values that are currently
available in the ppp_settings structure.

Instead of adding more and more fields to the ppp_settings structure,
actually making them duplicate of already existing structure members
of ppp_pcb, but unfortunately cleaned, we carefully checked that
everything is properly cleaned during protocol lowerdown/close and
replaced our giant memset to selective memset of the few ppp_pcb
members that are not properly cleaned.


# 25652254 13-Jun-2016 Erik Ekman <erik.ekman@verisure.com>

Update PPP after DNS api change


# b9389c6e 10-May-2016 Sylvain Rochet <gradator@gradator.net>

PPP: remove sio.h from included files

PPP is not using the SIO API anymore for quite a while. Remove now
useless sio.h from included files.


# 73b8026c 06-May-2016 Sylvain Rochet <gradator@gradator.net>

PPP, code cleaning

lwIP indentation is 2 characters, fix ppp_init indentation.


# fc2701ae 06-May-2016 Sylvain Rochet <gradator@gradator.net>

PPP, ppp_init function is back, re-add magic_init

Work on PPP MEMPOOL re-added the previously removed ppp_init function
because we considered it useless. Re-add magic_init which was
previously in ppp_init and removed in commit 15fbfb7363, it does
not hurt doing so and might fill the gap if we failed understanding
the crypto implication about removing it.


# 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


# 15fbfb73 21-Apr-2016 Sylvain Rochet <gradator@gradator.net>

PPP, remove useless ppp_init function

Simon says:

ppp_init() does not seem to be used. The only thing it does is calling
magic_init(), which is not required because it its called again later
from ppp_input().

Also, the time from startup is rather constant, so calling sys_jiffies()
from ppp_init() does not create a random number.


# 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


# f104d685 19-Feb-2016 Dirk Ziegelmeier <dirk@ziegelmeier.net>

PPP: Init SNMP members of PPP netifs


# 4beacc4c 24-Jan-2016 Sylvain Rochet <gradator@gradator.net>

PPP, VJ, fixed TCP retransmission

We used to modify in place the packet payload during compression but TCP
stack requires that we don't change the packet payload, therefore we now
copy the whole packet before compression.

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


# e31902dc 24-Jan-2016 Sylvain Rochet <gradator@gradator.net>

PPP, prepare for chained compressors (e.g. VJ+MPPE) requiring packet copy

lwIP TCP stack requires that we don't change the packet payload in netif
output functions in order to resend the pbuf if we don't receive a TCP
ACK in time, therefore we copy the whole packet before compression or
encryption.

It gets tricky because we should keep track of whether we previously
copied the buffer in PPP output netif function in order to free the
previous pbuf if necessary, BUT the first pbuf passed to the netif
output function must not be freed.

The worst case is VJ compression followed by MPPE encryption, in this
case we should free the packet allocated by VJ compressor after MPPE
encryption and we should free the packet allocated by MPPE encrypter
after calling the PPP low level output function.

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


# 53853a25 23-Jan-2016 Sylvain Rochet <gradator@gradator.net>

PPP, report full packet size in VJ debug output

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


# 31732631 20-Jan-2016 Stephan Linz <linz@li-pro.net>

PPP: CCP: add error debug messages for dropped packets due to missing transmit or receive CCP method

It might be difficult to investigate the reason of dropped packets when
there is no debug notification of what is happening, thus, add error
debug messages for dropped packets due to missing transmit or receive
CCP method.

Signed-off-by: Stephan Linz <linz@li-pro.net>
[gradator@gradator.net: improved messages]
Signed-off-by: Sylvain Rochet <gradator@gradator.net>


# 6185bf6f 19-Jan-2016 Sylvain Rochet <gradator@gradator.net>

PPP: CCP: don't drop output packets if CCP negotiated that we don't compress on our side

CCP might negotiate to not compress if peers cannot agree on a
compressor, therefore if the null compressor is chosen we must pass
packets as is instead of dropping them.

Reported-by: Stephan Linz <linz@li-pro.net>
Fixes: 987f6237c4 "PPP, MPPE, drop input/output packets if we couldn't find the chosen decompressor/compressor"
Signed-off-by: Sylvain Rochet <gradator@gradator.net>


# 9f3270af 18-Jan-2016 Stephan Linz <linz@li-pro.net>

PPP: fix typo in debug message

Signed-off-by: Stephan Linz <linz@li-pro.net>


# 98b9d31f 16-Nov-2015 goldsimon <goldsimon@gmx.de>

Fixed compiling with LWIP_TCP==0


# 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


# f62022cd 17-Sep-2015 Dirk Ziegelmeier <dirk@ziegelmeier.net>

Compiler warning fixes (mostly constness in dual-stack configurations)


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

PPP, merged ppp_link_set_callbacks() into ppp_new()


# 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.


# 0f3fbb26 31-Aug-2015 Sylvain Rochet <gradator@gradator.net>

PPP, magic, call magic_randomize() for all packets

magic_randomize() wasn't actually called for IP4/IP6 packets, fixed


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

PPP, minor coding style fix


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

PPP, MPPE, drop input/output packets if we couldn't find the chosen decompressor/compressor

Drop input/output packets if we couldn't find a decompressor/compressor,
it can't really happen because we only negotiate what we are able to
compress/decompress, but for the sake of code consistency it makes much
more sense to do so.


# b79c3aad 27-Aug-2015 Sylvain Rochet <gradator@gradator.net>

PPP, MPPE, improve dropping of unencrypted received packet

Improve dropping of unencrypted received packet by taking into account
all other data protocols (such as VJ packets) in a generic way.


# 46985bf7 27-Aug-2015 Sylvain Rochet <gradator@gradator.net>

PPP, explain better why we don't need protp->datainput callback


# 94550682 24-Aug-2015 sg <goldsimon@gmx.de>

more cleanup prework to fix bug #45029


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

PPP, display MTU set through netif_set_mtu() if debug is enabled


# fd53cad2 29-Apr-2015 Sylvain Rochet <gradator@gradator.net>

PPP, sifnpmode() is only useful if on demand is supported, build out if not

We don't support PPP on demand, don't build sifnpmode() which is only
useful for on demand if on demand is not supported.


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

PPP, added missing cast on pbuf_header()


# 53a96f69 22-Apr-2015 goldsimon <goldsimon@gmx.de>

ppp_free: fixed type of local 'err'


# 15cc4733 21-Apr-2015 Sylvain Rochet <gradator@gradator.net>

PPP, don't assert if we receive a too short packet in ppp_input(), just drop

We might actually receive too short packets through PPPoE or PPPoL2TP,
don't assert on unusal packets, just drop them.


# ced24f92 20-Apr-2015 Sylvain Rochet <gradator@gradator.net>

PPP, MPPE, drop unencrypted input packet if MPPE is required


# 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.


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

PPP, CCP, MPPE, handle CCP Reset-Request and Reset-Ack for MPPE


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

PPP, change ppp_write() return type from int to err_t

ppp_write() callback returns err_t, makes ppp_write() consistent with
the callback it is calling.


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

PPP, CORE, reworked ppp_netif_output* functions to process CCP on all protocols

Both IPv4 and IPv6 should be proccessed by CCP, reworked ppp_netif_output*
in a generic way for CCP.


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

PPP, CCP, MPPE: added packet plumbing in ppp.c to process MPPE packets


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

PPP, normalized debug messages


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

PPP, CCP, added data packet configuration in ppp_pcb


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

PPP, CCP, added receive and transmit chosen protocols in ccp_flags_set() (renamed ccp_set())

We need to know which methods were chosen when CCP is up, this used to be done
using ccp_test() which we are in the process of removing.

Using non-existing method 0 instead of -1 in CCP for unset method, allowing
type change from s16_t to u8_t for method.


# e241f880 13-Apr-2015 Sylvain Rochet <gradator@gradator.net>

PPP, code cleaning, fixed ppp_input() indentation


# 662f1355 13-Apr-2015 Sylvain Rochet <gradator@gradator.net>

PPP, fixed LWIP_IPV4=1 and PPP_IPV4_SUPPORT=0 support

If LWIP_IPV4 is true but PPP_IPV4_SUPPORT is false, we need
a dummy ppp_netif_output_ip4() callback because we don't have
a netif_null_output_ip4() by default like we have for IPv6 with
netif_null_output_ip6().


# c865211c 13-Apr-2015 Sylvain Rochet <gradator@gradator.net>

PPP, get_mask() is only used for IPCP, moved to PPP_IPV4_SUPPORT functions group


# e77e18f8 13-Apr-2015 sg <goldsimon@gmx.de>

Worked on IPv6-only stack:
- prepared DNS;
- fixed compiling ppp.c


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

PPP, using ip4_input() instead of ip_input()

In PPP, we previously know if we are dealing with a IPv4 or a IPv6 packet,
we don't need to use the ip_input() dispatch function, removing a useless
if and reducing call stack by one.


# 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


# c17594c1 21-Mar-2015 Sylvain Rochet <gradator@gradator.net>

PPP, CORE, don't build get_loop_output() if demand support (not supported) is not enabled


# 36e90a1b 19-Mar-2015 Sylvain Rochet <gradator@gradator.net>

PPP, CCP, add dummy ccp_ functions in ppp.c so it builds if CCP_SUPPORT is set


# 9fbe9009 19-Mar-2015 Sylvain Rochet <gradator@gradator.net>

PPP, MPPE, replaced #ifdef MPPE to #if MPPE_SUPPORT


# 59379323 18-Mar-2015 Sylvain Rochet <gradator@gradator.net>

PPP, CCP, various fix if MPPE is enabled


# 59d8e760 14-Mar-2015 Sylvain Rochet <gradator@gradator.net>

PPP, code cleaning, u_char to u8_t

Replaced u_char to u8_t in our PPP files.


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

PPP, PPPoS, moved pcomp and accomp only used by PPPoS to PPPoS


# 70b60bbe 09-Mar-2015 Sylvain Rochet <gradator@gradator.net>

PPP, display correct pbuf size in ppp_input() debug messages


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

PPP, IPCP, removed proxy ARP support


# 7fce9346 07-Mar-2015 Sylvain Rochet <gradator@gradator.net>

PPP, improved IPv6 address setting

Set IPv6 link local invalid before clearing it. Don't wait sif6up() to set
the link local valid, netif_ip6_addr_set_state() is only an accessor function
so it does not start any discovery whatsoever.


# b3c7e948 07-Mar-2015 Sylvain Rochet <gradator@gradator.net>

PPP, removed now useless struct ppp_addrs from ppp_pcb

Saved a few bytes of useless copy.


# c966a538 07-Mar-2015 Sylvain Rochet <gradator@gradator.net>

PPP, improved IPv6 address setting

Now setting IPv6 addresses in sif6addr() instead of sif6up(),
removed the useless copy of addresses.


# 3027a7d7 07-Mar-2015 Sylvain Rochet <gradator@gradator.net>

PPP, using DNS API for DNS servers

Now setting DNS addresses in sdns() using dns_setserver() instead
of keeping a local copy. This is probably the wanted PPP behavior,
we will see if users want this conditional.


# dd221769 07-Mar-2015 Sylvain Rochet <gradator@gradator.net>

PPP, improved IPv4 address setting

Now setting IPv4 addresses in sifaddr() instead of sifup(),
removed the useless copy of addresses.


# b3218d45 07-Mar-2015 Sylvain Rochet <gradator@gradator.net>

PPP, make DNS a little more optional if LWIP_DNS is unset


# 3ca51849 07-Mar-2015 Sylvain Rochet <gradator@gradator.net>

PPP, CORE, separated administrative status from link status of PPP netif

This was confusing, recent lwIP changes fixed the meaning as well as
how it is used everywhere, making the administrative status a user-only
controlled flag. Now that it's clear, updated PPP to follow lwIP
core change.

Using netif_set_link_{up,down} instead of netif_set_{up,down} when PPP
reaches/leaves running state. PPP interface is now set to administratively
UP when created with link state down.


# 89434f6a 05-Mar-2015 Sylvain Rochet <gradator@gradator.net>

PPP, CORE, call netif_set_up() after if4_up and if6_up flags are set, to prevent dropping packets

lwIP core might send packet when calling netif_set_up(), don't drop packets
anymore in ppp_netif_output_ip4() and ppp_netif_output_ip6() because flags
are cleared.


# 2731976a 01-Mar-2015 Sylvain Rochet <gradator@gradator.net>

PPP, renamed ppp_open to ppp_connect

Makes it clear we are initiating the PPP session with ppp_connect
(i.e. acting as a PPP client) so there is no confusion possible
between ppp_connect and ppp_listen.


# 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.


# 5ae7ee52 28-Feb-2015 Sylvain Rochet <gradator@gradator.net>

PPP, SERVER: added CHAP authentication support


# 587e0e3e 27-Feb-2015 Sylvain Rochet <gradator@gradator.net>

PPP, CORE, beautified ppp_set_auth()

Beautified, added PPPAUTHTYPE_MSCHAP_V2 choice support.


# 4bcddd72 24-Feb-2015 Sylvain Rochet <gradator@gradator.net>

PPP, CORE, cleaned ppp_close() function

Calling new_phase() instead of assigning pcb->phase directly.
Removed redundant call to link status callback.


# 00bb70a6 24-Feb-2015 Sylvain Rochet <gradator@gradator.net>

PPP, CORE, functions ppp_set_netif_statuscallback() and ppp_set_netif_linkcallback() replaced with defines

PPP is now pointerful for a while, we don't need anymore accessor functions
for the unique PPP local and static control block. Replaced
ppp_set_netif_statuscallback() and ppp_set_netif_linkcallback() functions to
defines.

Removed pppapi_do_ppp_set_netif_statuscallback() and
pppapi_do_ppp_set_netif_linkcallback(), they were useless because
netif_set_status_callback() and netif_set_link_callback() can be
safely called while PPP status is in dead (= non open) state
and even before the PPP session is actually created at all.


# ec5cf859 22-Feb-2015 sg <goldsimon@gmx.de>

Continued chrysn's work: changed nearly all functions taking 'ip(X)_addr_t' pointer to take const pointers (changed user callbacks: raw_recv_fn, udp_recv_fn; changed port callbacks: netif_output_fn, netif_igmp_mac_filter_fn)


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

PPP, code cleaning


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

PPP, PPPoS, moved advise about modem from pppos_create() to ppp_open()

pppos_create() can be called whether the modem is ready to process the
PPP session since pppos_create() does not start the PPP session anymore,
moved the advise from pppos_create() to ppp_open().


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

PPP, CORE, ppp_close() and ppp_sighup() ended up sharing almost everything, merged

Merged ppp_sighup() to ppp_close() using an optional argument "nocarrier"
on ppp_close().


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

PPP, CORE, carrier lost signal, fixed FSM mismatch

ppp_sighup() hard change the PPP FSM phase, it ends up with a FSM
mismatch if PPP is currently connecting or disconnecting.

Only do "sighup" on the stable running phase, fallback to the close
method. Handle special DEAD and HOLDOFF states as well.


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

PPP, CORE, fixed PPP phase state machine when ppp_close() is called during HOLDOFF phase

Aborting HOLDOFF leaves us at PPP_PHASE_DEAD, fixed.


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

PPP, CORE, disable VJ is PPP IPV4 is compiled out

VJ compression is only supported for PPP IPv4, compile out VJ support
if PPP IPv4 is not compiled.


# 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.


# 5680808f 21-Feb-2015 Sylvain Rochet <gradator@gradator.net>

PPP, CORE, ppp_ioctl PPPCTLG_UPSTATUS command now returns true if only IPv6 is up

PPPCTLG_UPSTATUS ioctl didn't return true if IPv6 was up and IPv4 down, fixed.


# 814bcc04 21-Feb-2015 Sylvain Rochet <gradator@gradator.net>

PPP, CORE, using ip*_set_* functions instead of IP4_ADDR and SMEMCPY

Now using lwIP helper functions on ip_addr_t and ip6_addr_t.


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

PPP, CORE, removed if_up and if6_up checks in sifdown() and sif6down()

It can't hurt us, checking is useless.


# 30c89310 21-Feb-2015 Sylvain Rochet <gradator@gradator.net>

PPP, CORE, IPv6, if_up flag used instead of if6_up for outgoing IPv6 packets, fixed

We can have an IPv6 only PPP interface, checking if6_up instead of if_up fixes
IPv6 only setup.

ppp_netif_output() which were only used for common code between
ppp_netif_output_ip4() and ppp_netif_output_ip6() is not necessary
anymore, removed, reducing call stack by one.


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

PPP, CORE, remove the user ability to set the PPP error code (PPPCTLS_ERRCODE)

This is now totally useless, it was used for the PPP core code but it is not
used anymore, remove then the user ability to set the PPP error code through
PPPCTLS_ERRCODE.


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

PPP, CORE, using u8_t on ioctl command instead of int

We don't need an int here, all commands are between 0 and 255.


# 59b659b0 21-Feb-2015 Sylvain Rochet <gradator@gradator.net>

PPP, CORE, compile out auth support if none of auth protocols are enabled

Added macro PPP_AUTH_SUPPORT, if none of auth protocols are enabled
(PAP, CHAP, EAP) we reduce PPP memory usage by compiling out all
struct fields and source code used for authentication.


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

PPP, using PPP netif->num number instead of ppp->num

Saved 2 bytes of RAM if debug is enabled, we are now using the
netif->num number instead of using our own ppp->num


# 6b4db944 20-Feb-2015 Sylvain Rochet <gradator@gradator.net>

PPP, using err_t return code instead of PPPERR_

Standardised PPP API to follow lwIP already used return codes.
PPPERR_ are now used only on link status callback.


# 0a761d23 20-Feb-2015 Sylvain Rochet <gradator@gradator.net>

PPP, using err_t return type on ppp_ioctl()


# 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.


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

PPP, CORE, beautified ppp_ioctl()


# 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.


# 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.


# e312ebcb 19-Feb-2015 Ivan Delamer <delamer@inicotech.com>

Removed unused netif flag for point to point connections


# b71d9ce3 18-Feb-2015 Sylvain Rochet <gradator@gradator.net>

PPP, CORE, Removed useless enabled_flag from struct protent

Our struct protent are const everywhere to save RAM, enable/disable
flag on a const struct is useless, saving some flash, removed.


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

PPP, chained returns up to ppp_free()

ppp_free() now returns lower level protocol return value if something failed.


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

PPP, CORE, removed useless st variable in ppp_close()

Code cleaning.


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

PPP, chained returns up to ppp_open()

ppp_open() now returns lower level protocol return value if something failed.


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

PPP, CORE, Fixed warning with PPP_PROTOCOLNAME enabled

lwip/src/netif/ppp/ppp.c: In function ‘ppp_input’:
lwip/src/netif/ppp/ppp.c:769:5: warning: ISO C90 forbids mixed declarations and code [-Wpedantic]
const char *pname = protocol_name(protocol);
^


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

PPP, CORE, code cleaning

Reordered functions in the order they are declared in headers.
Removed useless ppp_link_down() function.
Merged ppp_stop() and ppp_close().
Merged ppp_hup() and ppp_sighup().


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

PPP, CORE, fixed callbacks return value

Fixed return value in case of abnormal termination.
Set pcb->err_code in case of failed setup link.


# 69469496 16-Feb-2015 Sylvain Rochet <gradator@gradator.net>

PPP, PPPoS, moved out_accm from PPP core to PPPoS

Last PPPoS variable in PPP core moved to PPPoS.


# baaa2592 16-Feb-2015 Sylvain Rochet <gradator@gradator.net>

PPP, PPPoS, removed xmit_accm, almost duplicate of out_accm

xmit_accm was meant to be a user configurable asyncmap, it was actually
broken since the introduction of ppp_new by the way we now reset the PPP
initial state, looks like no one until now is needing it anymore. If
necessary we will reintroduce this feature later properly instead of a
dirty and ugly hack into the PPP code.


# 34210901 16-Feb-2015 Sylvain Rochet <gradator@gradator.net>

PPP, PPPoS, moved ppp.rx to pppos.rx

PPP rx control block moved to PPPoS


# 71328938 16-Feb-2015 Sylvain Rochet <gradator@gradator.net>

PPP, PPPoS, re-enabled PPPCTLG_FD

Found a fine way to get PPP fd without making this call crash for for PPPoE
or PPPoL2TP.


# cfe04d44 16-Feb-2015 Sylvain Rochet <gradator@gradator.net>

PPP, PPPoS, using PPPoS PCB pointer on VJ and pppos_ configuration functions

Slightly more consistent this way, and prevent using link_ctx_cb pointer
from PPPoS protocol file.


# 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.


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

PPP, PPPoS moved fd from ppp_pcb to pppos_pcb

Moved fd from ppp_pcb to pppos_pcb.

However PPP ioctl PPPCTLG_FD is temporarily disabled until I found a
better solution.


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

PPP: Moved PPPoS from ppp.c to pppos.c

Started removing from PPP core most of low level protocol PPPoS
handling to separate files, using the new low level PPP callbacks.


# 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.


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

PPP: removed duplicated code in ppp_close()

Looks like previous refactoring and cleaning made ppp_close()
consistent for all our low level protocol backends, cleaned
up duplicated code.


# 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.


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

PPP: moved duplicated init code from ppp_over_X_create() to ppp_new()

Some init code were duplicated for all low-level PPP protocols, moved
uselessly duplicated code to ppp_new().


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

PPP: re-order functions in the common sense API order

Re-order ppp.[ch] functions in the order functions should be called from
user application. Moved create functions, which actually return a PPP
control block before functions needing a PPP control block.


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

PPP: ppp_init() is not a public function, moving it in private part

ppp_init() is not a public fonction anymore, move this function
in ppp.c "private" functions.


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

PPP: using a macro for ppp_set_default() instead of a function

This function is only calling netif_set_default(), a macro
is adequate.


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

PPP: removed ppp_delete(), merged with ppp_free()

The only benefit of ppp_delete() call was about having a persistent
netif interface. netif was moved out of PPP pcb so we don't need
ppp_delete() anymore, second step in simplifying the weird
new/open/free/delete PPP API.


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

PPP: removed ppp_new(), merged with ppp_over_X_create()

The only benefit of ppp_new() call was about having a persistent netif
interface. netif was moved out of PPP pcb so we don't need ppp_new()
anymore, first step in simplifying the weird new/open/free/delete PPP
API.


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

PPP: moved netif out of PPP control block

Users might want to share a netif control block between an Ethernet
interface and a PPPoS interface (I want actually) in case PPP is just
used as redundancy if Ethernet is down (eg. PPPoS GPRS fail over).

Moved netif out of PPP control block in a similar way it is currently
done for Ethernet interfaces. Furthermore, this is a first step on
removing the "new/create/free/delete" API which is awful but currently
necessary to handle fail over from PPPoX to another PPPoX (eg. from PPoE
on xDSL to PPPoS on GPRS fail over) without free()ing the netif which
might be used on udp_sendto() or L2TP VPN links.


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

PPP, from PPPD upstream, separate IPv6 handling for sifup/sifdown

The current code is buggy regarding handling of link state when using
both IPCP and IPv6CP: if IPv6CP has been set up and if during IPCP
negociation, ipcp_up() fails, it will incorrectly take the interface
down. The simple solution here is to change the platform code to do the
same as on Solaris: separate IPv6CP up/down state handling with sif6up()
and sif6down(), so that we really know when the interface is allowed to
go down.

(Based from pppd commit b04d2dc6df5c6b5650fea44250d58757ee3dac4a)


# 482a18e6 24-Dec-2014 Sylvain Rochet <gradator@gradator.net>

PPP, added const modifier on auth strings


# 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


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

fixed bug #43235, checking for non-existent preprocessor macros is non-standard, added predefinition for all affected macros


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

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


# ab9feb2e 12-Oct-2014 Simon Goldschmidt <goldsimon@gmx.de>

fixed bug #43173, pppos_input() corrupts memory if IP_FORWARD is enabled


# a7745e9a 19-Apr-2014 Sylvain Rochet <gradator@gradator.net>

PPP, PPPoE, fixed bug #42138, pppoe_destroy() called with wrong pointer, PPPoE control block was never freed


# 4283ecf7 11-Apr-2014 Sylvain Rochet <gradator@gradator.net>

PPP, PPPoS, fixed IP forward from PPP to Ethernet by allocating PBUF_LINK instead of PBUF_RAW if IP forwarding is enabled


# 357b28f6 14-Jan-2014 Sylvain Rochet <gradator@gradator.net>

PPP, fixed VJ compression/decompression output IP path


# 4fda366b 30-Apr-2013 Sylvain Rochet <gradator@gradator.net>

PPP, added PPP notify phase support

PPP notify phase support, using compile-time PPP_NOTIFY_PHASE macro.

This can be used for example to set a LED pattern depending on the
current phase of the PPP session.

Callback example:

static void ppp_notify_phase_cb(ppp_pcb *pcb, u8_t phase, void *ctx) {
switch(phase) {
case PPP_PHASE_DEAD: /* Kept off */
case PPP_PHASE_MASTER:
/* LED Off */
break;
case PPP_PHASE_INITIALIZE: /* Session opened */
/* LED FastBlink */
break;
case PPP_PHASE_RUNNING: /* Session running */
/* LED On */
break;
default:
/* LED SlowBlink */
}
}


# 2ceae601 26-Apr-2013 Sylvain Rochet <gradator@gradator.net>

PPP, reduced by one buffer PPPoS RX requirements in multithreaded context

Removed one unecessary allocated PBUF per PPPoS RX packet if PPP_INPROC_MULTITHREADED is set by adding the necessary data for
pppos_input_callback() in front of the first pbuf instead of allocating a new buffer.


# 25f9f558 26-Apr-2013 Sylvain Rochet <gradator@gradator.net>

PPP, removed PPP_INPROC_OWNTHREAD feature, which almost only make things harder

I consider to remove the PPP_INPROC_OWNTHREAD crap in ppp-new,
as said in bugs #37278 and #37353.

1. It requires the ppp_input_thread() function to be modified to match
user system, like some did by adding the vTaskDelete(NULL); FreeRTOS
call at the end of the function, for example.

This is a tiny-tiny fonction that should be, in my opinion, on the user
port, like the Ethernet input thread we see in many Ethernet port.

2. It is actually not that thread safe.

2.1. pcb->phase IS modified by the lwIP core thread so it should at
least be set to volatile, otherwise the pcb->phase copy may live
indefinitely in CPU register. It works because of the sio_read()
function call which without doubt flush pcb->phase copy from CPU
register. I dont want to set ppp_pcb struct to volatile for obvious
performance reasons.

2.2. This function assume PCB still exists whatever is happening, which
is not the case after you called ppp_delete() function outside of this
thread. If sio_read() is blocking waiting data and pcb destroyed, it is
going to read a deallocated pcb which luckily should still have
pcb->phase set to 0 (=PHASE_DEAD) due to preallocated "control block"
structures of lwIP. Even with sio_read_abort(), there might be timings
issue due to a lack of a synchronization mechanism.

3. I dislike the sys_msleep(1), it means that systems should have at
least a 11 chr buffer at 115200/10 byte/s, and bigger with higher serial
speed, for example with 3G/HSDPA modems accessed through SPI, at 20
Mbits/s this is a ~2000 bytes buffer required to keep incoming data
during this sleep, I don't see why we require systems to do so,
sio_read() should obviously be a blocking call. I cannot easily
remove this sleep because some systems might have wrongfully used this
call as a CPU idle feature with a non blocking sio_read() call.


# f47a93b0 26-Apr-2013 Sylvain Rochet <gradator@gradator.net>

PPP, cleared compilation warning about unused variable 'pcb' in ppp_drop() if neither VJ nor SNMP support are enabled


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

PPP, added ppp_free()

Free the control block, clean everything except the PPP PCB itself
and the netif, it allows you to change the underlying PPP protocol
(eg. from PPPoE to PPPoS to switch from DSL to GPRS) without losing
your PPP and netif handlers.


# 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


# 58ffa8d5 27-Feb-2013 Sylvain Rochet <gradator@gradator.net>

PPP, free input pbuf left in ppp_delete()


# bfe8c15a 22-Feb-2013 Sylvain Rochet <gradator@gradator.net>

PPP, fixed return code coherency for ppp_netif_output_*() callbacks (using ERR_* as expected by lwIP core instead of PPPERR_*)


# bdfbac2a 23-Dec-2012 Sylvain Rochet <gradator@gradator.net>

PPP, added missing semicolon (dammit)


# 211a8895 23-Dec-2012 Sylvain Rochet <gradator@gradator.net>

PPP, fixed some IAR warnings

these are the compiler warnings I get with the head of ppp-new. All
of them are trivial, [...] (I'm using IAR EWARM 6.4).

ppp.c
Warning[Pe550]: variable "c" was set but never used
lwip\src\netif\ppp\ppp.c 1012

Warning[Pe111]: statement is unreachable
lwip\src\netif\ppp\ppp.c 1132

Warning[Pe111]: statement is unreachable
lwip\src\netif\ppp\ppp.c 1377

Warning[Pe111]: statement is unreachable
lwip\src\netif\ppp\ppp.c 1412

utils.c
Warning[Pe186]: pointless comparison of unsigned integer with zero
lwip\src\netif\ppp\utils.c 210


# 6751ac49 09-Dec-2012 Sylvain Rochet <gradator@gradator.net>

PPP, moved FSM configuration to ppp_settings struct


# 6764957d 09-Dec-2012 Sylvain Rochet <gradator@gradator.net>

PPP, moved EAP configuration to ppp_settings struct


# c719ba7b 09-Dec-2012 Sylvain Rochet <gradator@gradator.net>

PPP, moved PAP configuration to ppp_settings struct


# defef222 09-Dec-2012 Sylvain Rochet <gradator@gradator.net>

PPP, improved PAP and CHAP timeout/request/maxrequests configuration values


# 63459f65 09-Dec-2012 Sylvain Rochet <gradator@gradator.net>

PPP, moved DEFLOOPBACKFAIL from ppp/lcp.h to lwip/opt.h


# c68e1ceb 09-Dec-2012 Sylvain Rochet <gradator@gradator.net>

PPP, using timeouts values defined in opt.h instead of values defined in PPP headers or statically assigned values


# 07e72d2a 08-Nov-2012 Sylvain Rochet <gradator@gradator.net>

PPP, correctly cast int to u8_t in PPPCTLS_ERRCODE in ppp_ioctl()


# 9e4aa792 13-Oct-2012 Sylvain Rochet <gradator@gradator.net>

PPP, adding const pragma to struct protent, saving about 200 bytes in .data segment


# a0298728 12-Oct-2012 Sylvain Rochet <gradator@gradator.net>

PPP, disable persist mode by default, so the default behavior does not look like a buggy behavior. Fixes bug #37279.


# af56eebc 01-Sep-2012 Sylvain Rochet <gradator@gradator.net>

PPP, cleaned MTU,MRU variables


# 387c7784 01-Sep-2012 Sylvain Rochet <gradator@gradator.net>

PPP, added PPPoS reopen support


# fbbde125 01-Sep-2012 Sylvain Rochet <gradator@gradator.net>

PPP, removed unnecessary ethif from ppp_pcb


# dbaefd61 01-Sep-2012 Sylvain Rochet <gradator@gradator.net>

PPP, cleaned persist and holdoff features


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

PPP, ppp_input() code cleaning, removed dead code, fixed indentation


# 6144deb6 25-Aug-2012 Sylvain Rochet <gradator@gradator.net>

PPP, moved out PPPoS code into their own functions, improved ppp.c readability


# 7920b6e1 25-Aug-2012 Sylvain Rochet <gradator@gradator.net>

PPP, don't allocate twice struct eth_hdr per PPPoE pbuf


# e9b29184 21-Aug-2012 Sylvain Rochet <gradator@gradator.net>

PPP, renamed all functions using common names in utils.c that can conflict with lwIP user code during link operation


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

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


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

pcb->link_status_cb must be set, we don't need to check each time we use it if not NULL


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

switch to phase dead if PPPoE or PPPoL2TP failed to connect


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

fixed some more PPP phase state machine issues

The only way PPPoE or PPPoL2TP disconnect it through ppp_link_terminated(),
therefore PPP is always already down, so we don't need to ask PPP to hup or stop.


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

don't call ppp_hup() and ppp_stop() if PPPoE or PPPoL2TP failed to connect

This is useless because PPP is not started yet, it confuses the PPP phase
state machine.


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

handle cases when ppp_close() is called while session is in dead or holdoff phase


# 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.


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

ppp_close() PPPoL2TP support added


# 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.


# 4ea5c1d9 20-Jul-2012 Sylvain Rochet <gradator@gradator.net>

improved persist mode, we now clear everything we can in the PPP control block structure, ensuring we start a new session from a clean state


# 9e021cd1 14-Jul-2012 Sylvain Rochet <gradator@gradator.net>

improved PPP default interface management, added ppp_set_default() API call


# 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


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

some buggy compiler get confused with duplicated labels used in enum tcp_state and fsm.h, prepending PPP's ones


# d92c4624 07-Jul-2012 Sylvain Rochet <gradator@gradator.net>

added PPP Sequential API module, based from the Network Interface Sequential API module


# 572e457e 07-Jul-2012 Sylvain Rochet <gradator@gradator.net>

improved PPP API header documentation


# 90faecd8 03-Jul-2012 Sylvain Rochet <gradator@gradator.net>

replaced u_int{8,16,32}_t to lwIP u{8,16,32}_t types

added padding to compiler generated bitfield, this is seen as best practice,
maybe it helps buggy compilers


# 2e069429 03-Jul-2012 Sylvain Rochet <gradator@gradator.net>

removed bool type, replaced by u8_t


# 11a3057e 23-Jun-2012 Erik Ekman <erik@kryo.se>

PPP: Add option to skip FCS table

Option PPP_FCS_TABLE is created which controls if PPPoS FCS calculation
should be done against precalculated table or by using a short algorithm.

Default value is 1, keeps old behaviour.
Setting it to 0 saves around 0.5 kB flash.


# a83fb308 23-Jun-2012 Sylvain Rochet <gradator@gradator.net>

fixed PPPoS multithread support


# dc092653 22-Jun-2012 Sylvain Rochet <gradator@gradator.net>

now displaying sent packet before PPPoS add its escaping, trailing flags, ...


# 25c62780 22-Jun-2012 Sylvain Rochet <gradator@gradator.net>

fixed some endianess issues with PPPoS


# 5033e0e7 22-Jun-2012 Sylvain Rochet <gradator@gradator.net>

display IPV6CP packets


# 295eeef9 22-Jun-2012 Sylvain Rochet <gradator@gradator.net>

"ISO C forbids conversion of function pointer to object pointer type" - removed callback function pointer display in debug messages. Anyway, this is quite a meaningless information.


# f63b87e2 22-Jun-2012 Sylvain Rochet <gradator@gradator.net>

setting tot_len before using it, oops


# 408a56ff 22-Jun-2012 Sylvain Rochet <gradator@gradator.net>

phase must be set to initalize each time we try to reconnect


# a84f5d52 22-Jun-2012 Sylvain Rochet <gradator@gradator.net>

added ppp_pcb to ppp callback


# dc242a01 22-Jun-2012 Sylvain Rochet <gradator@gradator.net>

don't build ppp_netif_output_ip6() if PPP IPV6 support is disabled


# dd288f70 22-Jun-2012 Sylvain Rochet <gradator@gradator.net>

fixed sent PPPoE dump packet and copy everything we need after pppoe_xmit() free'd the pbuf


# 9b60b55f 22-Jun-2012 Sylvain Rochet <gradator@gradator.net>

SNMP prefers tot_len


# 77aa06df 22-Jun-2012 Sylvain Rochet <gradator@gradator.net>

improved ppp_write_over_ethernet(), don't MEMCPY the entire packet into a new pbuf


# 9b7860d6 22-Jun-2012 Sylvain Rochet <gradator@gradator.net>

merged ppp_write and ppp_write_pbuf


# 8576ee09 21-Jun-2012 Sylvain Rochet <gradator@gradator.net>

randomized seed when using MD5 random support and PPPoE


# 8093b55e 21-Jun-2012 Sylvain Rochet <gradator@gradator.net>

don't destroy and create the PPP interface each time sifup() is called (it is actually called twice with IPv4 + IPv6 enabled)


# b6db4a0e 21-Jun-2012 Sylvain Rochet <gradator@gradator.net>

PPP IPv6 local link support added


# b7be0380 19-Jun-2012 Sylvain Rochet <gradator@gradator.net>

improved much more ppp_pcb entry size


# b21cb8a3 19-Jun-2012 Sylvain Rochet <gradator@gradator.net>

removed pcb->num if PPP debug is not compiled


# eadd56a3 19-Jun-2012 Sylvain Rochet <gradator@gradator.net>

replaced exit code (pcb->status) with ppp_ioctl()


# 2aa9a66c 19-Jun-2012 Sylvain Rochet <gradator@gradator.net>

don't duplicate user and password anymore, anyway, the PPP user will have them already allocated as static strings or from configuration flash/file


# 8e9c07df 19-Jun-2012 Sylvain Rochet <gradator@gradator.net>

more idle time limit macros


# 4a7f2ffc 17-Jun-2012 Sylvain Rochet <gradator@gradator.net>

pcb->outpacket_buf replaced by pbuf everywhere it was used


# 22fad864 17-Jun-2012 Sylvain Rochet <gradator@gradator.net>

PAP is now using pbuf instead of pcb->outpacket_buf


# 8641b8a3 17-Jun-2012 Sylvain Rochet <gradator@gradator.net>

PPP_PCB are now allocated using memp_alloc()


# be2d3b58 16-Jun-2012 Sylvain Rochet <gradator@gradator.net>

moved back temporarily moved structure definitions from various headers to ppp.h during unit to ppp_pcb transition


# 3065b9f9 15-Jun-2012 Sylvain Rochet <gradator@gradator.net>

no more pcb->unit, new user selectable pcb->num for debugging purpose (like netif does)


# 82a4d4ec 15-Jun-2012 Sylvain Rochet <gradator@gradator.net>

LCP global variables moved to ppp_pcb as well as input/output buffers


# 4a8ff6d8 15-Jun-2012 Sylvain Rochet <gradator@gradator.net>

protent prototype switched from unit to ppp_pcb


# 4b7e3af7 15-Jun-2012 Sylvain Rochet <gradator@gradator.net>

IPCP and LCP structures moved to ppp_pcb


# 19238a91 14-Jun-2012 Sylvain Rochet <gradator@gradator.net>

global variables removed from chap support


# 51bfac71 13-Jun-2012 Sylvain Rochet <gradator@gradator.net>

auth.c functions now use ppp_pcb* as first argument


# 81a0fd78 12-Jun-2012 Sylvain Rochet <gradator@gradator.net>

removed unit from ppp_ioctl()


# 3a30e5bf 12-Jun-2012 Sylvain Rochet <gradator@gradator.net>

removed ppp_input_header, replaced using 2 chained pbuf the only area we need it


# a87096cd 11-Jun-2012 Sylvain Rochet <gradator@gradator.net>

fixed PPPoS support, improved ppp_input()


# 527d99fd 11-Jun-2012 Sylvain Rochet <gradator@gradator.net>

removed all PPP unit in ppp.c except pih->unit and unit used in debugging output


# 6e2722a6 10-Jun-2012 Sylvain Rochet <gradator@gradator.net>

started the unit to ppp_pcb replacement


# 8694deaa 10-Jun-2012 Sylvain Rochet <gradator@gradator.net>

don't add ppp_pcb_rx to ppp_pcb struct if PPPOS support is disabled


# a226099b 09-Jun-2012 Sylvain Rochet <gradator@gradator.net>

ppp_close() on PPPoE actually works,

clear persist mode if user asked the connection to shutdown


# 336ba8f4 09-Jun-2012 Sylvain Rochet <gradator@gradator.net>

pppoe now have access to the ppp_pcb structure, removed "persist" option copy


# 5abdc99f 09-Jun-2012 Sylvain Rochet <gradator@gradator.net>

no more PPP unit number in PPPoE, now using ppp_pcb


# f7ef9887 09-Jun-2012 Sylvain Rochet <gradator@gradator.net>

improved ppp_set_auth() mschap support


# a3cfbfc6 09-Jun-2012 Sylvain Rochet <gradator@gradator.net>

ppp_set_auth() modified to handle new handled authtype (mschap + eap)


# 444646b6 09-Jun-2012 Sylvain Rochet <gradator@gradator.net>

renamed ppp_control to ppp_pcb, replaced unit number to ppp_pcb in all ppp.h declared functions


# 8bd508a7 09-Jun-2012 Sylvain Rochet <gradator@gradator.net>

moved ppp_settings to ppp_control, improved PPP API to really allow multiple PPP sessions


# 1cceb4e0 09-Jun-2012 Sylvain Rochet <gradator@gradator.net>

moved hide_password global variable to ppp_options


# c2d2034a 09-Jun-2012 Sylvain Rochet <gradator@gradator.net>

PPPoE persist is working, removing FIXME comments about that


# f94ed922 09-Jun-2012 Sylvain Rochet <gradator@gradator.net>

moved exit status global variable to ppp_control


# 7a57d28d 09-Jun-2012 Sylvain Rochet <gradator@gradator.net>

moved listen_time global variable to ppp_settings


# ce5121e6 09-Jun-2012 Sylvain Rochet <gradator@gradator.net>

removed unused "unsuccess" global variable


# a7d7158b 09-Jun-2012 Sylvain Rochet <gradator@gradator.net>

removed useless error_count global variable from ppp.c


# 42f672d8 09-Jun-2012 Sylvain Rochet <gradator@gradator.net>

phase global variable moved to ppp_control structure


# 945f2912 09-Jun-2012 Sylvain Rochet <gradator@gradator.net>

using PPP_DEBUG instead of debug global variable


# fb396b8f 09-Jun-2012 Sylvain Rochet <gradator@gradator.net>

moved debug option from options.c to ppp.c


# 4e7ce116 09-Jun-2012 Sylvain Rochet <gradator@gradator.net>

removed holdoff support, can be handled without persist mode outside lwIP


# 2ec79c03 08-Jun-2012 Sylvain Rochet <gradator@gradator.net>

unused ifunit global variable removed


# b922eaa7 08-Jun-2012 Sylvain Rochet <gradator@gradator.net>

print packet is working back, at least for PPPoE


# 4077422a 07-Jun-2012 Sylvain Rochet <gradator@gradator.net>

fixed pbuf leaks in ppp_input() in case of packets not expected


# a9ac45c5 06-Jun-2012 Sylvain Rochet <gradator@gradator.net>

added PPPoE persist support (don't timeout sending PADI packets)


# 7ef99ee6 06-Jun-2012 Sylvain Rochet <gradator@gradator.net>

added a persist option (enabled by default for now until we add a way for users to pass a ppp_settings structure)

improved PPPoE state machine and added persist mode support


# e44aada6 06-Jun-2012 Sylvain Rochet <gradator@gradator.net>

improved PPPoE callback with state values, so that PPP know exactly what is happening on the PPPoE side


# ac0a864e 06-Jun-2012 Sylvain Rochet <gradator@gradator.net>

fixed typos s/parms/params/g


# 3c3331d5 06-Jun-2012 Sylvain Rochet <gradator@gradator.net>

fixed some debug strings


# 6f21f489 05-Jun-2012 Sylvain Rochet <gradator@gradator.net>

added MTU support (using MRU from the peer)


# 2e227f86 05-Jun-2012 Sylvain Rochet <gradator@gradator.net>

PPPoE is now guessing its MTU from the underlying netif MTU (in most cases 1500 minus 8 = 1492, which is the most common PPPoE MTU)


# 7d7513c7 04-Jun-2012 Sylvain Rochet <gradator@gradator.net>

re-enabled DNS support


# d95f1e99 04-Jun-2012 Sylvain Rochet <gradator@gradator.net>

added missing initialisation in ppp_init.c


# 1013b49a 04-Jun-2012 Sylvain Rochet <gradator@gradator.net>

disabled ppp_over_ethernet_close(), which is not exported and probably bogus, until we fix it


# cd3ba004 04-Jun-2012 Sylvain Rochet <gradator@gradator.net>

get_mask now returns "255.255.255.255" by default, which is what we want in almost all cases on a PPP link


# ca1ad99b 04-Jun-2012 Sylvain Rochet <gradator@gradator.net>

PPPoE reauth bug fixed


# bea45b3c 03-Jun-2012 Sylvain Rochet <gradator@gradator.net>

cleared IDE warnings


# 31456a6d 03-Jun-2012 Sylvain Rochet <gradator@gradator.net>

removed CamelCase in ppp.c and ppp_impl.h, added compat macro in ppp.h (but disabled for now)


# 03fda0f8 03-Jun-2012 Sylvain Rochet <gradator@gradator.net>

removed CamelCase for all ppp.h declared functions


# c09f03f6 03-Jun-2012 Sylvain Rochet <gradator@gradator.net>

VJ support is back!


# 3bad9ff5 03-Jun-2012 Sylvain Rochet <gradator@gradator.net>

ppp_impl.h is back!


# 0663421d 03-Jun-2012 Sylvain Rochet <gradator@gradator.net>

re-added PPPoS code from the previous port, it builds, maybe it works


# 2f5f86d6 03-Jun-2012 Sylvain Rochet <gradator@gradator.net>

don't build any PPP file if PPP support is disabled


# 89d2c291 03-Jun-2012 Sylvain Rochet <gradator@gradator.net>

more ppp.[ch] cleaning


# 05817aa3 03-Jun-2012 Sylvain Rochet <gradator@gradator.net>

LQR (Link Quality Report) support is now optional


# 5464ed66 03-Jun-2012 Sylvain Rochet <gradator@gradator.net>

removed all useless header files, merged ppp_defs.h to ppp.h

removed session.[ch] and tty.c which are Unix-centric files and disabled


# 9c35403b 02-Jun-2012 Sylvain Rochet <gradator@gradator.net>

clarified a bit more ppp.[ch]


# b5b075eb 02-Jun-2012 Sylvain Rochet <gradator@gradator.net>

demystified a bit the PPP impl, renamed output() to ppp_output() to prevent conflict


# 5531bca0 02-Jun-2012 Sylvain Rochet <gradator@gradator.net>

make it build with avr32-gcc

Disabled Unix-centric non necessary include files

Changed some include paths

Removed all printf() I put there and there for debugging.

It builds with the avr32 gcc toolchain, meaning we removed
all the pppd code requiring a unix base.


# 44c2a0a7 02-Jun-2012 Sylvain Rochet <gradator@gradator.net>

fixed most PPP compilation warnings with -pedantic


# d143acfc 02-Jun-2012 Sylvain Rochet <gradator@gradator.net>

fixed all PPP compilation warnings with -Wall


# 86ebc8e4 02-Jun-2012 Sylvain Rochet <gradator@gradator.net>

removed pppd.h and ppp.c, renamed pppmy.c to ppp.c and pppmy.h to ppp.h


# a5dd1ccf 02-Jun-2012 Sylvain Rochet <gradator@gradator.net>

ppp.c disabled, everything required for lwIP moved to our impl


# 4dd297ce 02-Jun-2012 Sylvain Rochet <gradator@gradator.net>

protent table moved to our PPP impl


# 7f9fea18 02-Jun-2012 Sylvain Rochet <gradator@gradator.net>

added pppmy.h in all .c files to easily find conflicts


# d3d1b69c 02-Jun-2012 Sylvain Rochet <gradator@gradator.net>

more ppp.c cleaning


# 922d3716 02-Jun-2012 Sylvain Rochet <gradator@gradator.net>

PPP statistics optional (non working) compile time option added


# 4158222e 02-Jun-2012 Sylvain Rochet <gradator@gradator.net>

moved new_phase() to our own implementation, re-enabled new_phase() support


# 6727c434 02-Jun-2012 Sylvain Rochet <gradator@gradator.net>

PPP notifier support is now a compile time option

However, as of now, the notify() function is empty, so it requires
some work if someone want to use it.

The notify feature allows someone to be able to follow the
state of the PPP stack (auth ok, ipcp up, initialise, ...), this
is like the callback feature set by pppOverEthernetOpen() and others,
but with more details.


# 0f1c18e6 02-Jun-2012 Sylvain Rochet <gradator@gradator.net>

PPP interval timeout support disabled (using lwIP timeout support), protocol_name() moved to our PPP impl and disabled by default


# 88ef3ffa 01-Jun-2012 Sylvain Rochet <gradator@gradator.net>

POSIX signal support removed


# 668d5d9d 01-Jun-2012 Sylvain Rochet <gradator@gradator.net>

removed set/getenv functions


# ee5fca7a 01-Jun-2012 Sylvain Rochet <gradator@gradator.net>

removed pathnames.h and pidfile support


# fc074937 01-Jun-2012 Sylvain Rochet <gradator@gradator.net>

Linux ioctl() gone, ECP support optional, CCP support optional

Removed all the used Linux ioctl(), sys_linux.c is entirely disabled.

Replaced unecessary functions to set up a PPP link to null fonctions,
however all stuff necessary to shutdown a PPP link should be done.

Some utils functions related to I/O files are disabled too.

ECP and CCP support only set PPP attributes into the PPP kernel support,
they are now compile-time options and are disabled by default and
obviously not supported (yet? :p)


# 8bb4ea85 31-May-2012 Sylvain Rochet <gradator@gradator.net>

removed some useless Linux calls


# 4704efa3 30-May-2012 Sylvain Rochet <gradator@gradator.net>

PAP support is now an optional compile-time feature


# 339925e8 23-May-2012 Sylvain Rochet <gradator@gradator.net>

CHAP support is now an optional compile-time feature


# 42827cde 22-May-2012 Sylvain Rochet <gradator@gradator.net>

more and more ppp options removal


# b88dad40 21-May-2012 Sylvain Rochet <gradator@gradator.net>

disabled almost all PPP options strings and support as well as useless file-based auth code


# b896203d 21-May-2012 Sylvain Rochet <gradator@gradator.net>

Revert "Removed all stuff requiring encryption."

This reverts commit c268c5e07c046eb2cb8e5798a1f3eba7e0ad13c1.

Conflicts:

src/netif/ppp/auth.c
src/netif/ppp/ppp.c
src/netif/ppp/pppmy.c
src/netif/ppp/pppmy.h


# 795d5807 20-May-2012 Sylvain Rochet <gradator@gradator.net>

EAP support is now optional


# c268c5e0 20-May-2012 Sylvain Rochet <gradator@gradator.net>

Removed all stuff requiring encryption.

OpenBSD DES require more than 70 kB of static memory.

The GNU libcrypt DES, for information, require more than 131 kB,
so this is probably the case with all non memory optimised DES.

PolarSSL only required 132 bytes of stack with some kB of .rodata
precomputed tables :-)

I personally don't need MS CHAP v1 or MS CHAP v2, and that was not
supported in the previous PPP port, so there is no regression,
I feel comfortable about removing those hard to port stuff.

If someone want to do the MS CHAP port, he first have to find or
do a small memory footprint DES implementation.


# 1d7efce0 17-May-2012 Sylvain Rochet <gradator@gradator.net>

Removed TDB code, which we cannot port, because it needs a filesystem.

About multilink support.

Multilink uses Samba TDB (Trivial Database Library), which
we cannot port, for the above reason.

We have to choose between doing a memory-shared TDB-clone,
or dropping multilink support at all.


# 00648c27 17-May-2012 Sylvain Rochet <gradator@gradator.net>

world changed, removed IPX support


# 4885b391 17-May-2012 Sylvain Rochet <gradator@gradator.net>

removed run_program() support


# eb75ae05 15-May-2012 Sylvain Rochet <gradator@gradator.net>

Early development stage of an attempt to port PPPd 2.4.5 to lwIP.

PPPoE works, PPPoS code is not ported at all.

I am using the RP-PPPoE server to do my tests using the following
configuration:

$ cat /etc/ppp/pppoe-server-options
debug
login
lcp-echo-interval 10
lcp-echo-failure 10
ms-dns 192.168.4.130
ms-dns 192.168.4.231
netmask 255.255.255.0
defaultroute
noipdefault
usepeerdns

$ cat /etc/ppp/allip
192.168.4.1-200

$ pppoe-server -C isp -L 192.168.4.254 -p /etc/ppp/allip -I tap0

Plus the usual auth-lines in /etc/ppp/pap-secrets and
/etc/ppp/chap-secrets .

And the unix port minimal "echo" project slightly modified to use
the "tcpip" API, so with threads, which I am going to commit with
NO_SYS as a -Dmacro.

It still use some of the linux'ism, such as syslog() and crypt(),

I do not want to drop the syslog() supports at the moment, this is
pretty useful to debug, and we may just convert the way the syslog() is
done to provide a trace feature to our PPP users, as a compile-time
option.


# 3ac81e9d 03-May-2012 goldsimon <goldsimon@gmx.de>

patch by Sylvain Rochet: fixed bug #36283 (PPP struct used on header size computation and not packed)


# fb07a28c 03-May-2012 goldsimon <goldsimon@gmx.de>

fixed bug #36388 (PPP: checksum-only in last pbuf leads to pbuf with zero length)


# 0e7df4b1 12-Mar-2012 goldsimon <goldsimon@gmx.de>

Removed unnecessary global variable "subnetMask", which is only used in one function (GetMask)


# 2c9b3b35 12-Mar-2012 goldsimon <goldsimon@gmx.de>

patch by Bostjan Meglic: fixed bug #35809: PPP GetMask(): Compiler warning on big endian, possible bug on little endian system


# ac2175fa 15-Feb-2012 goldsimon <goldsimon@gmx.de>

fixed pbuf leak when PPP session is aborted through pppSigHUP() (bug #35541: PPP Memory Leak)


# b3ffa163 28-Oct-2011 Ivan Delamer <delamer@inicotech.com>

Use pppRecvWakeup only if PPP_INPROC_OWNTHREAD is defined.

Change-Id: Ie800289eb5f6a64d0be1d38eab7154d4aa473d57


# 09d1f55b 28-Oct-2011 Ivan Delamer <delamer@inicotech.com>

Conditional compilation in ppp.c according to PPP_ options.

Change-Id: I466ce2b0114c9428f5e21bd0a09bb221f40bfc3e


# d6227aec 11-Sep-2011 Simon Goldschmidt <goldsimon@gmx.de>

splitted ppp.h to an internal and external header file to get a clear separation of which functions an application or port may use (task #11281)


# b5dd87b1 27-Mar-2011 goldsimon <goldsimon>

Fixed bug #32280 (ppp: a pbuf is freed twice)


# 3f849848 22-Mar-2011 goldsimon <goldsimon>

Fixed bug #32648 (PPP code crashes when terminating a link) by only calling sio_read_abort() if the file descriptor is valid.


# 856ccb5b 18-Feb-2011 goldsimon <goldsimon>

Added missing U/UL modifiers to fix 16-bit-arch portability.


# 229137ca 01-Aug-2010 goldsimon <goldsimon>

Applied patch #7264 (PPP protocols are rejected incorrectly on big endian architectures)


# dae24780 16-May-2010 goldsimon <goldsimon>

Add preprocessor-macros for compile-time htonl calculation (and use them throughout the stack where applicable)


# 290bd400 16-May-2010 goldsimon <goldsimon>

No need to call pppoe_init any more (since the linked list is implicitly initialized to zero by the loader)


# f3face9f 12-May-2010 goldsimon <goldsimon>

Fix printf-formatter for sio_fd_t/size_t


# f1bc73c3 02-Apr-2010 goldsimon <goldsimon>

Fixed compilation errors


# d47a0445 08-Mar-2010 goldsimon <goldsimon>

bug #29105: Review printf formatters


# 8d9fa634 22-Feb-2010 goldsimon <goldsimon>

PPP: use LWIP_DEBUGF() instead of ppp_trace()


# e934f8aa 22-Feb-2010 goldsimon <goldsimon>

Added/improved comments and debug output; renamed 'pc' to 'pcrx' where appropriate to reflect the variable type


# dfb80c6b 13-Feb-2010 goldsimon <goldsimon>

fixed compilation for LWIp_SNMP && PPP_INPROC_MULTITHREADED


# 6fe258c6 09-Feb-2010 goldsimon <goldsimon>

task #10154 (PPP: Update snmp in/out counters for tx/rx packets)


# 28dc5f49 05-Feb-2010 goldsimon <goldsimon>

Correctly initialize netif flags in pppifNetifInit


# a5c59490 05-Feb-2010 goldsimon <goldsimon>

Added missing casts to suppress compiler warnings (this mainly satisfies MSVC - the double casts are a bit ugly but don't hurt...)


# 5d360a67 04-Feb-2010 goldsimon <goldsimon>

Replaced struct ip_addr by typedef ip_addr_t to make changing the actual implementation behind the typedef easier.


# 5fa0347e 29-Jan-2010 goldsimon <goldsimon>

Cleanly separate the portability file inet.h and its contents from the stack: moved htonX- functions to def.h (and the new def.c - they are not ipv4 dependent), let inet.h depend on ip_addr.h and not the other way round. This fixes bug #28732.


# 61e5301d 24-Jan-2010 goldsimon <goldsimon>

bug #26523: Compiler Warnings


# 7ede02ca 14-Jan-2010 goldsimon <goldsimon>

Fixed bug #27856: PPP: Set netif link- and status-callback by adding ppp_set_netif_statuscallback()/ppp_set_netif_linkcallback()


# 67c587f9 13-Jan-2010 goldsimon <goldsimon>

Fixed NO_SYS==0: starting pppInputThread failed; fixed some comments


# 13c9d2da 10-Jan-2010 goldsimon <goldsimon>

Added/changed comments


# 81640c4a 08-Jan-2010 goldsimon <goldsimon>

Fixed compilation of VJ_SUPPORT after separating tx and rx


# 3269da52 31-Dec-2009 goldsimon <goldsimon>

Initial version of PPP for NO_SYS==1, some TODOs are remaining, but it works...


# 1d580967 06-Dec-2009 goldsimon <goldsimon>

Various small improvements from patch #6965 (removed _inet_ntoa, set PPP netif down before removing, change log message and comment)


# b1ad36ee 06-Dec-2009 goldsimon <goldsimon>

Fixed bug #27079 (Yet another leak in PPP): outpacket_buf can be statically allocated (like in ucip)


# 1b42286b 06-Dec-2009 goldsimon <goldsimon>

pppInit: Remove zeroing the stats - no protocol does that


# 3fa63b35 04-Dec-2009 goldsimon <goldsimon>

The guy's name is Van Jacobson (not Jabobsen or Jacobsen :-)


# 32acb82b 03-Dec-2009 goldsimon <goldsimon>

Fixed some typos


# 04c5246e 01-Dec-2009 goldsimon <goldsimon>

Fix compilation for PPPOE without PPPOS and VJ_SUPPORT without PPPOS_SUPPORT


# e7d5739c 23-Aug-2009 goldsimon <goldsimon>

Fixed bug #27078: Possible memory leak in pppInit()


# ce308297 22-Aug-2009 goldsimon <goldsimon>

Fixed bug #27266: wait-state debug message in pppMain occurs every ms


# 217f279f 01-May-2009 goldsimon <goldsimon>

Fixed bug #24228: Memory corruption with PPP and DHCP


# b3a5d6df 15-Apr-2009 goldsimon <goldsimon>

bug #25763: Corrected 4 occurrences of SMEMCPY to MEMCPY; corrected indentation


# 03f888c9 16-Mar-2008 fbernon <fbernon>

ppp: minor changes: fix some 'is unused' warning when debug is off.


# f067d343 04-Mar-2008 jifl <jifl>

* pbuf.c, ppp.c: Fix warnings on some systems with mem_malloc.


# 42344ce2 04-Mar-2008 kieranm <kieranm>

2008-03-04 Kieran Mansley (contributions by others)
* Numerous small compiler error/warning fixes from contributions to
mailing list after 1.3.0 release candidate made.


# 1dfa2466 03-Jan-2008 fbernon <fbernon>

Minor changes: fix some PPP traces.


# 865f6eb5 02-Dec-2007 fbernon <fbernon>

Changes for coding style (typo, use LINK_STATS_INC, tabs, ident, etc...). Be careful, even if this change is minor, there is lot of lines modified, so, an error is always possible (I hope there is no problems).


# e5a98b6a 30-Nov-2007 fbernon <fbernon>

Minor changes: fix some problems with PPPoE include path, add small comments in slip.c (unusual octal values?)


# b714cd5f 29-Nov-2007 fbernon <fbernon>

First fix for bug #21664 "PPP code is broken".


# 90a3f88c 05-Sep-2007 fbernon <fbernon>

Change parameters list for sys_thread_new (see "task #7252 : Create sys_thread_new_ex()"). Two new parameters have to be provided: a task name, and a task stack size. For this one, since it's platform dependant, you could define the best one for you in your lwipopts.h. For port maintainers, you can just add these new parameters in your sys_arch.c file, and but it's not mandatory, use them in your OS specific functions.


# dbd61d12 17-Aug-2007 marcbou <marcbou>

Fix potential pbuf leaks.


# 75935ad2 16-Aug-2007 marcbou <marcbou>

Changed // style comments to /* style */ comments.


# 931fcfd0 16-Aug-2007 marcbou <marcbou>

Added PPPoE support and various PPP improvements.


# 255d5a74 09-May-2007 goldsimon <goldsimon>

Included patch #5920: Create define to override C-library memcpy. 2 Defines are created: MEMCPY() for normal memcpy, SMEMCPY() for situations where some compilers might inline the copy and save a function call. Also replaced all calls to memcpy() with calls to (S)MEMCPY().


# 7932bf48 11-Apr-2007 goldsimon <goldsimon>

Ongoing fix to patch #5822: converted more statements like (void)arg; into LWIP_UNUSED_ARG(arg);


# 7294cb08 20-Mar-2007 kieranm <kieranm>

* Fix all uses of pbuf_header to check the return value. In some
cases just assert if it fails as I'm not sure how to fix them, but
this is no worse than before when they would carry on regardless
of the failure.


# fe1bea95 01-Nov-2006 christiaans <christiaans>

Added netif_set_up and call protection for NULL function pointers. Bug #16602 and #17777.


# 6b0852a2 09-Nov-2004 jani <jani>

reduce msleep interval from 250 to 1 ms in ppp


# 45e36d9f 04-Jul-2004 likewise <likewise>

Dependencies on C library memset() etc., so include <string.h>.


# eed8ea5b 27-Dec-2003 uid67528 <uid67528>

Merged from DEVEL. etharp prepared for queueing feature. DHCP fix.


# e4a6d199 14-Nov-2003 likewise <likewise>

Merged from DEVEL into main tree.


# 351e590e 27-Jun-2003 marcbou <marcbou>

Merged from DEVEL.


# 55f64f13 19-Jun-2003 marcbou <marcbou>

Important bug fixes and improvements.


# 26d9b28f 02-Jun-2003 jani <jani>

sio and PPP updates from Marc


# ff63557d 30-May-2003 jani <jani>

Cleanups in PPP: C++ comments removed, make it compile for unixsim too. Does not work yet only compiles


# 31776e23 27-May-2003 jani <jani>

add PPP stack from Marc. Work in progress