Skip to content

PPP core

Daniel Lenski requested to merge ppp_core into pre_PPP_cross_protocol_bits

This is intended to be merged after !164 (merged), which contains some non-PPP-specific changes factored out from the ppp_rebased branch.

  • add support for PPP-based protocols

    This started out as the 'f5' branch, which was then rebased (by DL) onto a more recent master as 'ppp_rebased'.

    This was then squashed down into a single commit, with all of the bits depending on "real" PPP-based VPN protocols removed, so that only the shell of generic PPP support remains, including PPP protocol negotation (LCP, IPCP, IP6CP) and mainloop.

    Almost all of this code was done by David Woodhouse and Daniel Lenski in May 2020, with a few more recent bugfixes by DL in early February 2021.

    The remaining shell supports two different encapsulations of PPP:

    • PPP_ENCAP_RFC1661: Plain PPP. “Synchronous” in the ’90s-era language, because the start and end of the frame are known from external means. In modern instances, this is because they arrive in a complete packet with a known length from its lower-level encapsulation. (TLS or DTLS records in our expected use cases.) This is what pppd sync does.

    • PPP_ENCAP_RFC1662: “PPP in HDLC-like framing.” This is what pppd without sync does.

    The following commits will add tests to demonstrate the functionality of OpenConnect's PPP implementation at the level of this generic encapsulation.

  • add 'nullppp' protocol for testing

    • add OC_PROTO_HIDDEN and use this to hide nullppp from protocols displayed or shown by openconnect_get_supported_protocols
  • add ppp-over-tls tests (with pppd as the reference peer implementation)

    These test OpenConnect's ability to communicate with the standard pppd using PPP-over-TLS, with a variety of PPP negotiation options:

    ± IPv4
    ± IPv6
    ± DNS and NBNS server negotiation
    ± PPP header protocol/address field compression
    ± Van Jacobson header compression (always rejected by OpenConnect)

Edited by Daniel Lenski

Merge request reports

Loading