瀏覽代碼

ppp: Add ppp_dev_name() exported function

ppp_dev_name() gives PPP users visibility of a ppp channel's device
name. This can be used by L2TP drivers to dump the assigned PPP
interface name.

Signed-off-by: James Chapman <jchapman@katalix.com>
Reviewed-by: Randy Dunlap <randy.dunlap@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
James Chapman 15 年之前
父節點
當前提交
63f96072f9
共有 2 個文件被更改,包括 22 次插入0 次删除
  1. 19 0
      drivers/net/ppp_generic.c
  2. 3 0
      include/linux/ppp_channel.h

+ 19 - 0
drivers/net/ppp_generic.c

@@ -2162,6 +2162,24 @@ int ppp_unit_number(struct ppp_channel *chan)
 	return unit;
 	return unit;
 }
 }
 
 
+/*
+ * Return the PPP device interface name of a channel.
+ */
+char *ppp_dev_name(struct ppp_channel *chan)
+{
+	struct channel *pch = chan->ppp;
+	char *name = NULL;
+
+	if (pch) {
+		read_lock_bh(&pch->upl);
+		if (pch->ppp && pch->ppp->dev)
+			name = pch->ppp->dev->name;
+		read_unlock_bh(&pch->upl);
+	}
+	return name;
+}
+
+
 /*
 /*
  * Disconnect a channel from the generic layer.
  * Disconnect a channel from the generic layer.
  * This must be called in process context.
  * This must be called in process context.
@@ -2890,6 +2908,7 @@ EXPORT_SYMBOL(ppp_register_channel);
 EXPORT_SYMBOL(ppp_unregister_channel);
 EXPORT_SYMBOL(ppp_unregister_channel);
 EXPORT_SYMBOL(ppp_channel_index);
 EXPORT_SYMBOL(ppp_channel_index);
 EXPORT_SYMBOL(ppp_unit_number);
 EXPORT_SYMBOL(ppp_unit_number);
+EXPORT_SYMBOL(ppp_dev_name);
 EXPORT_SYMBOL(ppp_input);
 EXPORT_SYMBOL(ppp_input);
 EXPORT_SYMBOL(ppp_input_error);
 EXPORT_SYMBOL(ppp_input_error);
 EXPORT_SYMBOL(ppp_output_wakeup);
 EXPORT_SYMBOL(ppp_output_wakeup);

+ 3 - 0
include/linux/ppp_channel.h

@@ -72,6 +72,9 @@ extern int ppp_channel_index(struct ppp_channel *);
 /* Get the unit number associated with a channel, or -1 if none */
 /* Get the unit number associated with a channel, or -1 if none */
 extern int ppp_unit_number(struct ppp_channel *);
 extern int ppp_unit_number(struct ppp_channel *);
 
 
+/* Get the device name associated with a channel, or NULL if none */
+extern char *ppp_dev_name(struct ppp_channel *);
+
 /*
 /*
  * SMP locking notes:
  * SMP locking notes:
  * The channel code must ensure that when it calls ppp_unregister_channel,
  * The channel code must ensure that when it calls ppp_unregister_channel,