[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH] add module_param to loopback.c to create more than one interface
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@xxxxxxxxxxx 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 <linux/skbuff.h> #include <net/dst.h> +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; _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |