aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/dummy.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/dummy.c')
-rw-r--r--drivers/net/dummy.c30
1 files changed, 15 insertions, 15 deletions
diff --git a/drivers/net/dummy.c b/drivers/net/dummy.c
index dd8c15ac5c7..60673bc292c 100644
--- a/drivers/net/dummy.c
+++ b/drivers/net/dummy.c
@@ -11,7 +11,7 @@
11 One solution is to set up a dummy link using PPP/SLIP/PLIP, 11 One solution is to set up a dummy link using PPP/SLIP/PLIP,
12 but this seems (to me) too much overhead for too little gain. 12 but this seems (to me) too much overhead for too little gain.
13 This driver provides a small alternative. Thus you can do 13 This driver provides a small alternative. Thus you can do
14 14
15 [when not running slip] 15 [when not running slip]
16 ifconfig dummy slip.addr.ess.here up 16 ifconfig dummy slip.addr.ess.here up
17 [to go to slip] 17 [to go to slip]
@@ -28,7 +28,6 @@
28 Alan Cox, 30th May 1994 28 Alan Cox, 30th May 1994
29*/ 29*/
30 30
31#include <linux/config.h>
32#include <linux/module.h> 31#include <linux/module.h>
33#include <linux/kernel.h> 32#include <linux/kernel.h>
34#include <linux/netdevice.h> 33#include <linux/netdevice.h>
@@ -45,9 +44,9 @@ static int dummy_set_address(struct net_device *dev, void *p)
45{ 44{
46 struct sockaddr *sa = p; 45 struct sockaddr *sa = p;
47 46
48 if (!is_valid_ether_addr(sa->sa_data)) 47 if (!is_valid_ether_addr(sa->sa_data))
49 return -EADDRNOTAVAIL; 48 return -EADDRNOTAVAIL;
50 49
51 memcpy(dev->dev_addr, sa->sa_data, ETH_ALEN); 50 memcpy(dev->dev_addr, sa->sa_data, ETH_ALEN);
52 return 0; 51 return 0;
53} 52}
@@ -112,7 +111,7 @@ static int __init dummy_init_one(int index)
112 free_netdev(dev_dummy); 111 free_netdev(dev_dummy);
113 dev_dummy = NULL; 112 dev_dummy = NULL;
114 } else { 113 } else {
115 dummies[index] = dev_dummy; 114 dummies[index] = dev_dummy;
116 } 115 }
117 116
118 return err; 117 return err;
@@ -122,29 +121,30 @@ static void dummy_free_one(int index)
122{ 121{
123 unregister_netdev(dummies[index]); 122 unregister_netdev(dummies[index]);
124 free_netdev(dummies[index]); 123 free_netdev(dummies[index]);
125} 124}
126 125
127static int __init dummy_init_module(void) 126static int __init dummy_init_module(void)
128{ 127{
129 int i, err = 0; 128 int i, err = 0;
130 dummies = kmalloc(numdummies * sizeof(void *), GFP_KERNEL); 129 dummies = kmalloc(numdummies * sizeof(void *), GFP_KERNEL);
131 if (!dummies) 130 if (!dummies)
132 return -ENOMEM; 131 return -ENOMEM;
133 for (i = 0; i < numdummies && !err; i++) 132 for (i = 0; i < numdummies && !err; i++)
134 err = dummy_init_one(i); 133 err = dummy_init_one(i);
135 if (err) { 134 if (err) {
135 i--;
136 while (--i >= 0) 136 while (--i >= 0)
137 dummy_free_one(i); 137 dummy_free_one(i);
138 } 138 }
139 return err; 139 return err;
140} 140}
141 141
142static void __exit dummy_cleanup_module(void) 142static void __exit dummy_cleanup_module(void)
143{ 143{
144 int i; 144 int i;
145 for (i = 0; i < numdummies; i++) 145 for (i = 0; i < numdummies; i++)
146 dummy_free_one(i); 146 dummy_free_one(i);
147 kfree(dummies); 147 kfree(dummies);
148} 148}
149 149
150module_init(dummy_init_module); 150module_init(dummy_init_module);