ppp: add rtnetlink device creation support
authorGuillaume Nault <g.nault@alphalink.fr>
Thu, 28 Apr 2016 15:55:30 +0000 (17:55 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 29 Apr 2016 20:09:44 +0000 (16:09 -0400)
commit96d934c70db6e1bc135600c57da1285eaf7efb26
treeef01020246a3fbe5aa82f4d1460298e5008d28a0
parent7d9f0b48746d37e4381efc02da27535a0a1bac43
ppp: add rtnetlink device creation support

Define PPP device handler for use with rtnetlink.
The only PPP specific attribute is IFLA_PPP_DEV_FD. It is mandatory and
contains the file descriptor of the associated /dev/ppp instance (the
file descriptor which would have been used for ioctl(PPPIOCNEWUNIT) in
the ioctl-based API). The PPP device is removed when this file
descriptor is released (same behaviour as with ioctl based PPP
devices).

PPP devices created with the rtnetlink API behave like the ones created
with ioctl(PPPIOCNEWUNIT). In particular existing ioctls work the same
way, no matter how the PPP device was created.
The rtnl callbacks are also assigned to ioctl based PPP devices. This
way, rtnl messages have the same effect on any PPP devices.
The immediate effect is that all PPP devices, even ioctl-based
ones, can now be removed with "ip link del".

A minor difference still exists between ioctl and rtnl based PPP
interfaces: in the device name, the number following the "ppp" prefix
corresponds to the PPP unit number for ioctl based devices, while it is
just an unrelated incrementing index for rtnl ones.

Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ppp/ppp_generic.c
include/uapi/linux/if_link.h