aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/pppol2tp.c
Commit message (Collapse)AuthorAgeFilesLines
* [PPP] L2TP: Fix skb handling in pppol2tp_xmitHerbert Xu2007-09-201-40/+23
| | | | | | | | | | | | | | | | | | | | | | | | | This patch makes pppol2tp_xmit call skb_cow_head so that we don't modify cloned skb data. It also gets rid of skb2 we only need to preserve the original skb for congestion notification, which is only applicable for ppp_async and ppp_sync. The other semantic change made here is the removal of socket accounting for data tranmitted out of pppol2tp_xmit. The original code leaked any existing socket skb accounting. We could fix this by dropping the original skb owner. However, this is undesirable as the packet has not physically left the host yet. In fact, all other tunnels in the kernel do not account skb's passing through to their own socket. In partciular, ESP over UDP does not do so and it is the closest tunnel type to PPPoL2TP. So this patch simply removes the socket accounting in pppol2tp_xmit. The accounting still applies to control packets of course. I've also added a reminder that the outgoing checksum here doesn't work. I suppose existing deployments don't actually enable checksums. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: David S. Miller <davem@davemloft.net>
* [PPP] L2TP: Fix skb handling in pppol2tp_recv_coreHerbert Xu2007-09-201-20/+24
| | | | | | | | | | | The function pppol2tp_recv_core doesn't handle non-linear packets properly. It also fails to check the remote offset field. This patch fixes these problems. It also removes an unnecessary check on the UDP header which has already been performed by the UDP layer. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: David S. Miller <davem@davemloft.net>
* [PPP] L2TP: Disallow non-UDP datagram socketsHerbert Xu2007-09-201-5/+6
| | | | | | | | With the addition of UDP-Lite we need to refine the socket check so that only genuine UDP sockets are allowed through. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: David S. Miller <davem@davemloft.net>
* misannotation in pppol2tpAl Viro2007-07-261-2/+2
| | | | | | | | | Address of auto variable is not a userland pointer. A good thing, too, since if pppol2tp_tunnel_getsockopt() would _really_ get a userland pointer as argument, it would be an instant roothole... Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* [PPPOL2TP]: Reset meta-data in xmit functionPatrick McHardy2007-07-181-0/+6
| | | | | | | Reset netfilter data and IP CB, fix dst_entry leak. Signed-off-by: Patrick McHardy <kaber@trash.net> Signed-off-by: David S. Miller <davem@davemloft.net>
* [PPPOL2TP]: Fix use-after-freePatrick McHardy2007-07-181-4/+8
| | | | | | | Don't use skb->len after passing it to ip_queue_xmit. Signed-off-by: Patrick McHardy <kaber@trash.net> Signed-off-by: David S. Miller <davem@davemloft.net>
* [PPPOL2TP]: Use proper printf format specifier for size_t.David S. Miller2007-07-101-2/+2
| | | | Signed-off-by: David S. Miller <davem@davemloft.net>
* [L2TP]: PPP over L2TP driver coreJames Chapman2007-07-101-0/+2486
This driver handles only L2TP data frames; control frames are handled by a userspace application. It implements L2TP using the PPPoX socket family. There is a PPPoX socket for each L2TP session in an L2TP tunnel. PPP data within each session is passed through the kernel's PPP subsystem via this driver. Kernel parameters of each socket can be read or modified using ioctl() or [gs]etsockopt() calls. Signed-off-by: James Chapman <jchapman@katalix.com> Signed-off-by: David S. Miller <davem@davemloft.net>