From mboxrd@z Thu Jan 1 00:00:00 1970 From: Patrick O'Rourke Subject: [PATCH] add module_param to loopback.c to create more than one interface Date: Thu, 08 Sep 2005 13:48:55 -0400 Message-ID: <43207987.9060204@egenera.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------050706070106050407000807" Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org This is a multi-part message in MIME format. --------------050706070106050407000807 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit It was suggested on the xen-users list that it would be useful if the loopback driver could instantiate an arbitrary number of interfaces, so the attached patch does that. Pat -- Patrick O'Rourke porourke@egenera.com --------------050706070106050407000807 Content-Type: text/plain; name="loopback.txt" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="loopback.txt" diff -u --new-file --recursive a/xen-unstable/linux-2.6-xen-sparse/drivers/xen/netback/loopback.c b/xen-unstable/linux-2.6-xen-sparse/drivers/xen/netback/loopback.c --- a/xen-unstable/linux-2.6-xen-sparse/drivers/xen/netback/loopback.c 2005-09-07 23:58:53.000000000 -0400 +++ b/xen-unstable/linux-2.6-xen-sparse/drivers/xen/netback/loopback.c 2005-09-08 13:26:39.000000000 -0400 @@ -29,6 +29,11 @@ #include #include +static int nloopbacks = 1; +module_param(nloopbacks, int, 0); +MODULE_PARM_DESC(nloopbacks, "number of devices to create"); +static int make_loopback(int); + struct net_private { struct net_device *loopback_dev; struct net_device_stats stats; @@ -120,11 +125,24 @@ static int __init loopback_init(void) { + int i = 0; + int err; + do { + err = make_loopback(i); + } while (!err && (++i < nloopbacks)); + return err; +} + +static int __init make_loopback(int i) +{ struct net_device *dev1, *dev2; + char dev_name[10]; int err = -ENOMEM; - dev1 = alloc_netdev(sizeof(struct net_private), "vif0.0", ether_setup); - dev2 = alloc_netdev(sizeof(struct net_private), "veth0", ether_setup); + sprintf(dev_name, "vif0.%d", i); + dev1 = alloc_netdev(sizeof(struct net_private), dev_name, ether_setup); + sprintf(dev_name, "veth%d", i); + dev2 = alloc_netdev(sizeof(struct net_private), dev_name, ether_setup); if ( (dev1 == NULL) || (dev2 == NULL) ) goto fail; --------------050706070106050407000807 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --------------050706070106050407000807--