On 01/12/2020 11:52, Tom Parkin wrote:
> Following on from my previous RFC[1], this series adds two ioctl calls
> to the ppp code to implement "channel bridging".
>
> When two ppp channels are bridged, frames presented to ppp_input() on
> one channel are passed to the other channel's ->start_xmit function for
> transmission.
>
> The primary use-case for this functionality is in an L2TP Access
> Concentrator where PPP frames are typically presented in a PPPoE session
> (e.g. from a home broadband user) and are forwarded to the ISP network in
> a PPPoL2TP session.
>
> The two new ioctls, PPPIOCBRIDGECHAN and PPPIOCUNBRIDGECHAN form a
> symmetric pair.
>
> Userspace code testing and illustrating use of the ioctl calls is
> available in the go-l2tp[2] and l2tp-ktest[3] repositories.
>
> [1]. Previous RFC series:
>
> https://lore.kernel.org/netdev/20201106181647.16358-1-tpar...@katalix.com/
>
> [2]. go-l2tp: a Go library for building L2TP applications on Linux
> systems. Support for the PPPIOCBRIDGECHAN ioctl is on a branch:
>
> https://github.com/katalix/go-l2tp/tree/tp_002_pppoe_2
>
> [3]. l2tp-ktest: a test suite for the Linux Kernel L2TP subsystem.
> Support for the PPPIOCBRIDGECHAN ioctl is on a branch:
>
> https://github.com/katalix/l2tp-ktest/tree/tp_ac_pppoe_tests_2
>
> Changelog:
>
> v2:
> * Add missing __rcu annotation to struct channel 'bridge' field in
> order to squash a sparse warning from a C=1 build
> * Integrate review comments from gna...@redhat.com
> * Have ppp_unbridge_channels return -EINVAL if the channel isn't
> part of a bridge: this better aligns with the return code from
> ppp_disconnect_channel.
> * Improve docs update by including information on ioctl arguments
> and error return codes.
>
> Tom Parkin (2):
> ppp: add PPPIOCBRIDGECHAN and PPPIOCUNBRIDGECHAN ioctls
> docs: update ppp_generic.rst to document new ioctls
>
> Documentation/networking/ppp_generic.rst | 9 ++
> drivers/net/ppp/ppp_generic.c | 143 ++++++++++++++++++++++-
> include/uapi/linux/ppp-ioctl.h | 2 +
> 3 files changed, 152 insertions(+), 2 deletions(-)
>
Reviewed-by: James Chapman <jchap...@katalix.com>