History: ip_ppp

This page describes all changes made to the ip_ppp package, PPP, since its release.


1.17 (2021-02-01, 11:45):

  • [LCP] Magic number remained the same in the echo-response as received in the echo-request, therefore the peer interpreted it as a loopback connection.
  • In Client mode, PPP won't receive the packets after disconnect.
  • [LCP] Receive-Unknown-Code event closed the PPP link, instead of only sending a reject message.
  • [LCP] In server mode, config request didn't include the Authentication protocol length in the LCP message length field.
  • [CHAP] Name field was not included in the CHAP request/response.
  • [VJC] Double mutex lock could occur when VJC packet was received.
  • [VJC] TCP data could have not been received if the internal VJC connection was the last (VJC_NUM_CONN-1).
  • [IPCP] IPCP negotiation was never completed if VJC was enabled and the peer rejected VJC.
  • [IPCP] VJC state was not reset when the link was terminated.
  • [IPCP] DNS1/DNS2 address rejection ignored, it was always added to the resent config request, even if it was rejected.
  • [PPPSER] MRU size packets were dropped when receiving a PPP frame, as the received length check didn't take header size (4 bytes) and FCS size (2 bytes) into account (only MRU size was check without header and FCS size).
  • Standard library memmove() was used instead of psp_memmove().
  • PPP internal states added to follow line activation and phases and be able to accept PPP frames in the appropriate states.
  • Added ip_ppp_listen() to start listening for an incoming connection request when using PPP in server mode.

1.16 (2019-11-14, 06:39):

  • Terminates link in client mode if request for IP address is rejected.
  • Connection is faster in client mode: sending of LCP Configuration-Request optimized.
  • Bugfix: NULL-pointer de-reference could occur when callback function is set to NULL during connection.

1.15 (2019-10-14, 11:11):

  • Client mode was fixed: it reached configured state before PPP negotiation was finished.
  • NBNS addresses can be requested in client mode.
  • Server mode was fixed: previously it could not reach configured state and DNS addresses were not returned to the client if it requested them.
  • Callback function registered with ip_ppp_register_ntf() could cause deadlock if IP function was called.

1.14 (2018-09-06, 12:40):

  • Changes due to IP aliasing support for IPv4.
  • DNS addresses are requested in client mode.

1.13r2 (2018-08-29, 18:30):

  • Document HTML link added to the documentation folder.
  • History and document files renamed to the package name.

1.13 (2018-07-20, 17:24):

  • Buffer descriptors were not initialized properly, causing reconnection  problems.
  • g_ppp_ser_mutex was not deleted during ppp_ser_delete(), meaning delete/init sequence always increased the number of allocated mutexes.

1.12 (2018-04-11, 18:33):

  • Default DNS1 and DNS2 addresses were ignored in client mode.
  • Compiler warnings eliminated.

1.11 (2018-03-05, 12:43):

  • Added support for changing PPP, VJC, CHAP, and IPCP parameters dynamically.

1.10 (2018-02-26, 11:09):

  • A variable might have been used uninitialized if an error occurred during PPP initialization.
  • Successfully locked resources were released incorrectly if an error occurred during PPP initialization.

1.9r2 (2018-01-19, 11:24):

  • Added missing configuration template config_ip_ppp_driver_ser.c.

1.9 (2017-11-21, 18:03):

  • Added support for a maximum of four PPP interfaces.

1.8 (2017-09-26, 14:41):

  • Building up PPP connection (LCP negotiation phase) might fail because of demanding a peer MRU depending on its own MTU.
  • PPP interface (PPP serial driver) MTU is limited to 1500 bytes in accordance with RFC 1661.
  • In case of any timeout on the connection, the peer is informed about terminating the connection, rather than just closing the connection internally and stopping communication.
  • Re-added user PPP state change notification, configurable using ip_ppp_register_ntf(). (This API function already existed but did not operate).

1.7 (2017-08-30, 09:36):

  • LCP link negotiation failed in case the remote peer rejected a Configure-Request message.


  • Potential deadlock eliminated when initializing, starting, stopping, or deleting the module.


  • Updated to work with IP base major version 6.


  • Updated to work with IP base major version 5.


  • General serial driver used instead of UART. Physical driver is on PSP level now.
  • NW driver callbacks might have been called with invalid parameter causing possible error when used with RTOS.


  • Resources were not released correctly in ip_ppp_drvser_init() if an error occurred during initialization; this could cause a deadlock with certain RTOSes.
  • ip_ppp_drvser_delete() didn't delete the timer resource.
  • PPP driver can use external memory pool.


  • Initial release.