aboutsummaryrefslogtreecommitdiffstats
path: root/net/l2tp/l2tp_eth.c
diff options
context:
space:
mode:
authorJames Chapman <jchapman@katalix.com>2010-04-02 02:19:33 -0400
committerDavid S. Miller <davem@davemloft.net>2010-04-03 17:56:07 -0400
commit0ad6614048cf722e4d27909665b4846805357f1b (patch)
tree182349ddf6e2b8e8478a5451cd0ed9684c14f0e8 /net/l2tp/l2tp_eth.c
parentd9e31d17ceba5f0736f5a34bbc236239cd42b420 (diff)
l2tp: Add debugfs files for dumping l2tp debug info
The existing pppol2tp driver exports debug info to /proc/net/pppol2tp. Rather than adding info to that file for the new functionality added in this patch series, we add new files in debugfs, leaving the old /proc file for backwards compatibility (L2TPv2 only). Currently only one file is provided: l2tp/tunnels, which lists internal debug info for all l2tp tunnels and sessions. More files may be added later. The info is for debug and problem analysis only - userspace apps should use netlink to obtain status about l2tp tunnels and sessions. Although debugfs does not support net namespaces, the tunnels and sessions dumped in l2tp/tunnels are only those in the net namespace of the process reading the file. Signed-off-by: James Chapman <jchapman@katalix.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/l2tp/l2tp_eth.c')
-rw-r--r--net/l2tp/l2tp_eth.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/net/l2tp/l2tp_eth.c b/net/l2tp/l2tp_eth.c
index 755c29729b6f..9848faa3d163 100644
--- a/net/l2tp/l2tp_eth.c
+++ b/net/l2tp/l2tp_eth.c
@@ -172,6 +172,17 @@ static void l2tp_eth_delete(struct l2tp_session *session)
172 } 172 }
173} 173}
174 174
175#ifdef CONFIG_L2TP_DEBUGFS
176static void l2tp_eth_show(struct seq_file *m, void *arg)
177{
178 struct l2tp_session *session = arg;
179 struct l2tp_eth_sess *spriv = l2tp_session_priv(session);
180 struct net_device *dev = spriv->dev;
181
182 seq_printf(m, " interface %s\n", dev->name);
183}
184#endif
185
175static int l2tp_eth_create(struct net *net, u32 tunnel_id, u32 session_id, u32 peer_session_id, struct l2tp_session_cfg *cfg) 186static int l2tp_eth_create(struct net *net, u32 tunnel_id, u32 session_id, u32 peer_session_id, struct l2tp_session_cfg *cfg)
176{ 187{
177 struct net_device *dev; 188 struct net_device *dev;
@@ -233,6 +244,9 @@ static int l2tp_eth_create(struct net *net, u32 tunnel_id, u32 session_id, u32 p
233 priv->tunnel_sock = tunnel->sock; 244 priv->tunnel_sock = tunnel->sock;
234 session->recv_skb = l2tp_eth_dev_recv; 245 session->recv_skb = l2tp_eth_dev_recv;
235 session->session_close = l2tp_eth_delete; 246 session->session_close = l2tp_eth_delete;
247#ifdef CONFIG_L2TP_DEBUGFS
248 session->show = l2tp_eth_show;
249#endif
236 250
237 spriv = l2tp_session_priv(session); 251 spriv = l2tp_session_priv(session);
238 spriv->dev = dev; 252 spriv->dev = dev;