l2tp: fix pseudo-wire type for sessions created by pppol2tp_connect()
authorGuillaume Nault <g.nault@alphalink.fr>
Wed, 13 Jun 2018 13:09:18 +0000 (15:09 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 15 Jun 2018 00:10:19 +0000 (17:10 -0700)
commit90904ff5f958a215cc3d26f957a46e80fa178470
tree8488e2cb4aaae82535165281932bdb0544f5bc65
parentaeddb6d5ea56496e3799c2d6e812cd0e36be57cf
l2tp: fix pseudo-wire type for sessions created by pppol2tp_connect()

Define cfg.pw_type so that the new session is created with its .pwtype
field properly set (L2TP_PWTYPE_PPP).

Not setting the pseudo-wire type had several annoying effects:

  * Invalid value returned in the L2TP_ATTR_PW_TYPE attribute when
    dumping sessions with the netlink API.

  * Impossibility to delete the session using the netlink API (because
    l2tp_nl_cmd_session_delete() gets the deletion callback function
    from an array indexed by the session's pseudo-wire type).

Also, there are several cases where we should check a session's
pseudo-wire type. For example, pppol2tp_connect() should refuse to
connect a session that is not PPPoL2TP, but that requires the session's
.pwtype field to be properly set.

Fixes: f7faffa3ff8e ("l2tp: Add L2TPv3 protocol support")
Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/l2tp/l2tp_ppp.c