diff options
author | Jeff Dike <jdike@addtoit.com> | 2007-10-16 04:27:29 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-10-16 12:43:08 -0400 |
commit | cd1ae0e49bdd814cfaa2e5ab28cff21a30e20085 (patch) | |
tree | 1b993b9de4cb9a8578022a4014063c3e87ec996e /arch/um/os-Linux | |
parent | 1a80521990a0e30e61a92994a009adc52161b070 (diff) |
uml: network formatting
Style and other non-functional changes in the UML networking code, including
include tidying
style violations
copyright updates
printks getting severities
userspace code calling libc directly rather than using the os_*
wrappers
There's also a exit path cleanup in the pcap driver.
Signed-off-by: Jeff Dike <jdike@linux.intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch/um/os-Linux')
-rw-r--r-- | arch/um/os-Linux/drivers/etap.h | 16 | ||||
-rw-r--r-- | arch/um/os-Linux/drivers/ethertap_kern.c | 36 | ||||
-rw-r--r-- | arch/um/os-Linux/drivers/ethertap_user.c | 86 | ||||
-rw-r--r-- | arch/um/os-Linux/drivers/tuntap.h | 13 | ||||
-rw-r--r-- | arch/um/os-Linux/drivers/tuntap_kern.c | 34 | ||||
-rw-r--r-- | arch/um/os-Linux/drivers/tuntap_user.c | 75 |
6 files changed, 123 insertions, 137 deletions
diff --git a/arch/um/os-Linux/drivers/etap.h b/arch/um/os-Linux/drivers/etap.h index 57ecdaf2f67e..ddffd41c3f3f 100644 --- a/arch/um/os-Linux/drivers/etap.h +++ b/arch/um/os-Linux/drivers/etap.h | |||
@@ -1,8 +1,11 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (C) 2001 Jeff Dike (jdike@karaya.com) | 2 | * Copyright (C) 2001 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com) |
3 | * Licensed under the GPL | 3 | * Licensed under the GPL |
4 | */ | 4 | */ |
5 | 5 | ||
6 | #ifndef __DRIVERS_ETAP_H | ||
7 | #define __DRIVERS_ETAP_H | ||
8 | |||
6 | #include "net_user.h" | 9 | #include "net_user.h" |
7 | 10 | ||
8 | struct ethertap_data { | 11 | struct ethertap_data { |
@@ -15,13 +18,4 @@ struct ethertap_data { | |||
15 | 18 | ||
16 | extern const struct net_user_info ethertap_user_info; | 19 | extern const struct net_user_info ethertap_user_info; |
17 | 20 | ||
18 | /* | 21 | #endif |
19 | * Overrides for Emacs so that we follow Linus's tabbing style. | ||
20 | * Emacs will notice this stuff at the end of the file and automatically | ||
21 | * adjust the settings for this buffer only. This must remain at the end | ||
22 | * of the file. | ||
23 | * --------------------------------------------------------------------------- | ||
24 | * Local variables: | ||
25 | * c-file-style: "linux" | ||
26 | * End: | ||
27 | */ | ||
diff --git a/arch/um/os-Linux/drivers/ethertap_kern.c b/arch/um/os-Linux/drivers/ethertap_kern.c index 12689141414d..542bcc58354c 100644 --- a/arch/um/os-Linux/drivers/ethertap_kern.c +++ b/arch/um/os-Linux/drivers/ethertap_kern.c | |||
@@ -1,16 +1,15 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (C) 2001 Lennert Buytenhek (buytenh@gnu.org) and | 2 | * Copyright (C) 2001 Lennert Buytenhek (buytenh@gnu.org) and |
3 | * James Leu (jleu@mindspring.net). | 3 | * James Leu (jleu@mindspring.net). |
4 | * Copyright (C) 2001 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com) | ||
4 | * Copyright (C) 2001 by various other people who didn't put their name here. | 5 | * Copyright (C) 2001 by various other people who didn't put their name here. |
5 | * Licensed under the GPL. | 6 | * Licensed under the GPL. |
6 | */ | 7 | */ |
7 | 8 | ||
8 | #include "linux/init.h" | 9 | #include "linux/init.h" |
9 | #include "linux/netdevice.h" | 10 | #include <linux/netdevice.h> |
10 | #include "linux/etherdevice.h" | ||
11 | #include "net_kern.h" | ||
12 | #include "net_user.h" | ||
13 | #include "etap.h" | 11 | #include "etap.h" |
12 | #include "net_kern.h" | ||
14 | 13 | ||
15 | struct ethertap_init { | 14 | struct ethertap_init { |
16 | char *dev_name; | 15 | char *dev_name; |
@@ -42,27 +41,30 @@ static int etap_read(int fd, struct sk_buff **skb, struct uml_net_private *lp) | |||
42 | int len; | 41 | int len; |
43 | 42 | ||
44 | *skb = ether_adjust_skb(*skb, ETH_HEADER_ETHERTAP); | 43 | *skb = ether_adjust_skb(*skb, ETH_HEADER_ETHERTAP); |
45 | if(*skb == NULL) return(-ENOMEM); | 44 | if (*skb == NULL) |
45 | return -ENOMEM; | ||
46 | len = net_recvfrom(fd, skb_mac_header(*skb), | 46 | len = net_recvfrom(fd, skb_mac_header(*skb), |
47 | (*skb)->dev->mtu + 2 * ETH_HEADER_ETHERTAP); | 47 | (*skb)->dev->mtu + 2 * ETH_HEADER_ETHERTAP); |
48 | if(len <= 0) return(len); | 48 | if (len <= 0) |
49 | return len; | ||
49 | skb_pull(*skb, 2); | 50 | skb_pull(*skb, 2); |
50 | len -= 2; | 51 | len -= 2; |
51 | return(len); | 52 | return len; |
52 | } | 53 | } |
53 | 54 | ||
54 | static int etap_write(int fd, struct sk_buff **skb, struct uml_net_private *lp) | 55 | static int etap_write(int fd, struct sk_buff **skb, struct uml_net_private *lp) |
55 | { | 56 | { |
56 | if(skb_headroom(*skb) < 2){ | 57 | if (skb_headroom(*skb) < 2) { |
57 | struct sk_buff *skb2; | 58 | struct sk_buff *skb2; |
58 | 59 | ||
59 | skb2 = skb_realloc_headroom(*skb, 2); | 60 | skb2 = skb_realloc_headroom(*skb, 2); |
60 | dev_kfree_skb(*skb); | 61 | dev_kfree_skb(*skb); |
61 | if (skb2 == NULL) return(-ENOMEM); | 62 | if (skb2 == NULL) |
63 | return -ENOMEM; | ||
62 | *skb = skb2; | 64 | *skb = skb2; |
63 | } | 65 | } |
64 | skb_push(*skb, 2); | 66 | skb_push(*skb, 2); |
65 | return(net_send(fd, (*skb)->data, (*skb)->len)); | 67 | return net_send(fd, (*skb)->data, (*skb)->len); |
66 | } | 68 | } |
67 | 69 | ||
68 | const struct net_kern_info ethertap_kern_info = { | 70 | const struct net_kern_info ethertap_kern_info = { |
@@ -79,15 +81,15 @@ int ethertap_setup(char *str, char **mac_out, void *data) | |||
79 | *init = ((struct ethertap_init) | 81 | *init = ((struct ethertap_init) |
80 | { .dev_name = NULL, | 82 | { .dev_name = NULL, |
81 | .gate_addr = NULL }); | 83 | .gate_addr = NULL }); |
82 | if(tap_setup_common(str, "ethertap", &init->dev_name, mac_out, | 84 | if (tap_setup_common(str, "ethertap", &init->dev_name, mac_out, |
83 | &init->gate_addr)) | 85 | &init->gate_addr)) |
84 | return(0); | 86 | return 0; |
85 | if(init->dev_name == NULL){ | 87 | if (init->dev_name == NULL) { |
86 | printk("ethertap_setup : Missing tap device name\n"); | 88 | printk(KERN_ERR "ethertap_setup : Missing tap device name\n"); |
87 | return(0); | 89 | return 0; |
88 | } | 90 | } |
89 | 91 | ||
90 | return(1); | 92 | return 1; |
91 | } | 93 | } |
92 | 94 | ||
93 | static struct transport ethertap_transport = { | 95 | static struct transport ethertap_transport = { |
diff --git a/arch/um/os-Linux/drivers/ethertap_user.c b/arch/um/os-Linux/drivers/ethertap_user.c index d74eedb7e682..29404b955f18 100644 --- a/arch/um/os-Linux/drivers/ethertap_user.c +++ b/arch/um/os-Linux/drivers/ethertap_user.c | |||
@@ -1,4 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (C) 2001 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com) | ||
2 | * Copyright (C) 2001 Lennert Buytenhek (buytenh@gnu.org) and | 3 | * Copyright (C) 2001 Lennert Buytenhek (buytenh@gnu.org) and |
3 | * James Leu (jleu@mindspring.net). | 4 | * James Leu (jleu@mindspring.net). |
4 | * Copyright (C) 2001 by various other people who didn't put their name here. | 5 | * Copyright (C) 2001 by various other people who didn't put their name here. |
@@ -7,20 +8,16 @@ | |||
7 | 8 | ||
8 | #include <stdio.h> | 9 | #include <stdio.h> |
9 | #include <unistd.h> | 10 | #include <unistd.h> |
10 | #include <stddef.h> | 11 | #include <errno.h> |
11 | #include <stdlib.h> | 12 | #include <string.h> |
12 | #include <sys/errno.h> | ||
13 | #include <sys/socket.h> | 13 | #include <sys/socket.h> |
14 | #include <sys/wait.h> | 14 | #include <sys/wait.h> |
15 | #include <sys/un.h> | ||
16 | #include <net/if.h> | ||
17 | #include "user.h" | ||
18 | #include "kern_util.h" | ||
19 | #include "net_user.h" | ||
20 | #include "etap.h" | 15 | #include "etap.h" |
16 | #include "kern_constants.h" | ||
21 | #include "os.h" | 17 | #include "os.h" |
18 | #include "net_user.h" | ||
22 | #include "um_malloc.h" | 19 | #include "um_malloc.h" |
23 | #include "kern_constants.h" | 20 | #include "user.h" |
24 | 21 | ||
25 | #define MAX_PACKET ETH_MAX_PACKET | 22 | #define MAX_PACKET ETH_MAX_PACKET |
26 | 23 | ||
@@ -49,16 +46,18 @@ static void etap_change(int op, unsigned char *addr, unsigned char *netmask, | |||
49 | memcpy(change.addr, addr, sizeof(change.addr)); | 46 | memcpy(change.addr, addr, sizeof(change.addr)); |
50 | memcpy(change.netmask, netmask, sizeof(change.netmask)); | 47 | memcpy(change.netmask, netmask, sizeof(change.netmask)); |
51 | CATCH_EINTR(n = write(fd, &change, sizeof(change))); | 48 | CATCH_EINTR(n = write(fd, &change, sizeof(change))); |
52 | if(n != sizeof(change)){ | 49 | if (n != sizeof(change)) { |
53 | printk("etap_change - request failed, err = %d\n", errno); | 50 | printk(UM_KERN_ERR "etap_change - request failed, err = %d\n", |
51 | errno); | ||
54 | return; | 52 | return; |
55 | } | 53 | } |
56 | 54 | ||
57 | output = kmalloc(UM_KERN_PAGE_SIZE, UM_GFP_KERNEL); | 55 | output = kmalloc(UM_KERN_PAGE_SIZE, UM_GFP_KERNEL); |
58 | if(output == NULL) | 56 | if (output == NULL) |
59 | printk("etap_change : Failed to allocate output buffer\n"); | 57 | printk(UM_KERN_ERR "etap_change : Failed to allocate output " |
58 | "buffer\n"); | ||
60 | read_output(fd, output, UM_KERN_PAGE_SIZE); | 59 | read_output(fd, output, UM_KERN_PAGE_SIZE); |
61 | if(output != NULL){ | 60 | if (output != NULL) { |
62 | printk("%s", output); | 61 | printk("%s", output); |
63 | kfree(output); | 62 | kfree(output); |
64 | } | 63 | } |
@@ -107,7 +106,7 @@ static int etap_tramp(char *dev, char *gate, int control_me, | |||
107 | 106 | ||
108 | sprintf(data_fd_buf, "%d", data_remote); | 107 | sprintf(data_fd_buf, "%d", data_remote); |
109 | sprintf(version_buf, "%d", UML_NET_VERSION); | 108 | sprintf(version_buf, "%d", UML_NET_VERSION); |
110 | if(gate != NULL){ | 109 | if (gate != NULL) { |
111 | strcpy(gate_buf, gate); | 110 | strcpy(gate_buf, gate); |
112 | args = setup_args; | 111 | args = setup_args; |
113 | } | 112 | } |
@@ -119,24 +118,26 @@ static int etap_tramp(char *dev, char *gate, int control_me, | |||
119 | pe_data.data_me = data_me; | 118 | pe_data.data_me = data_me; |
120 | pid = run_helper(etap_pre_exec, &pe_data, args); | 119 | pid = run_helper(etap_pre_exec, &pe_data, args); |
121 | 120 | ||
122 | if(pid < 0) | 121 | if (pid < 0) |
123 | err = pid; | 122 | err = pid; |
124 | close(data_remote); | 123 | close(data_remote); |
125 | close(control_remote); | 124 | close(control_remote); |
126 | CATCH_EINTR(n = read(control_me, &c, sizeof(c))); | 125 | CATCH_EINTR(n = read(control_me, &c, sizeof(c))); |
127 | if(n != sizeof(c)){ | 126 | if (n != sizeof(c)) { |
128 | err = -errno; | 127 | err = -errno; |
129 | printk("etap_tramp : read of status failed, err = %d\n", -err); | 128 | printk(UM_KERN_ERR "etap_tramp : read of status failed, " |
129 | "err = %d\n", -err); | ||
130 | return err; | 130 | return err; |
131 | } | 131 | } |
132 | if(c != 1){ | 132 | if (c != 1) { |
133 | printk("etap_tramp : uml_net failed\n"); | 133 | printk(UM_KERN_ERR "etap_tramp : uml_net failed\n"); |
134 | err = -EINVAL; | 134 | err = -EINVAL; |
135 | CATCH_EINTR(n = waitpid(pid, &status, 0)); | 135 | CATCH_EINTR(n = waitpid(pid, &status, 0)); |
136 | if(n < 0) | 136 | if (n < 0) |
137 | err = -errno; | 137 | err = -errno; |
138 | else if(!WIFEXITED(status) || (WEXITSTATUS(status) != 1)) | 138 | else if (!WIFEXITED(status) || (WEXITSTATUS(status) != 1)) |
139 | printk("uml_net didn't exit with status 1\n"); | 139 | printk(UM_KERN_ERR "uml_net didn't exit with " |
140 | "status 1\n"); | ||
140 | } | 141 | } |
141 | return err; | 142 | return err; |
142 | } | 143 | } |
@@ -148,22 +149,22 @@ static int etap_open(void *data) | |||
148 | int data_fds[2], control_fds[2], err, output_len; | 149 | int data_fds[2], control_fds[2], err, output_len; |
149 | 150 | ||
150 | err = tap_open_common(pri->dev, pri->gate_addr); | 151 | err = tap_open_common(pri->dev, pri->gate_addr); |
151 | if(err) | 152 | if (err) |
152 | return err; | 153 | return err; |
153 | 154 | ||
154 | err = socketpair(AF_UNIX, SOCK_DGRAM, 0, data_fds); | 155 | err = socketpair(AF_UNIX, SOCK_DGRAM, 0, data_fds); |
155 | if(err){ | 156 | if (err) { |
156 | err = -errno; | 157 | err = -errno; |
157 | printk("etap_open - data socketpair failed - err = %d\n", | 158 | printk(UM_KERN_ERR "etap_open - data socketpair failed - " |
158 | errno); | 159 | "err = %d\n", errno); |
159 | return err; | 160 | return err; |
160 | } | 161 | } |
161 | 162 | ||
162 | err = socketpair(AF_UNIX, SOCK_STREAM, 0, control_fds); | 163 | err = socketpair(AF_UNIX, SOCK_STREAM, 0, control_fds); |
163 | if(err){ | 164 | if (err) { |
164 | err = -errno; | 165 | err = -errno; |
165 | printk("etap_open - control socketpair failed - err = %d\n", | 166 | printk(UM_KERN_ERR "etap_open - control socketpair failed - " |
166 | errno); | 167 | "err = %d\n", errno); |
167 | goto out_close_data; | 168 | goto out_close_data; |
168 | } | 169 | } |
169 | 170 | ||
@@ -173,15 +174,16 @@ static int etap_open(void *data) | |||
173 | output = kmalloc(output_len, UM_GFP_KERNEL); | 174 | output = kmalloc(output_len, UM_GFP_KERNEL); |
174 | read_output(control_fds[0], output, output_len); | 175 | read_output(control_fds[0], output, output_len); |
175 | 176 | ||
176 | if(output == NULL) | 177 | if (output == NULL) |
177 | printk("etap_open : failed to allocate output buffer\n"); | 178 | printk(UM_KERN_ERR "etap_open : failed to allocate output " |
179 | "buffer\n"); | ||
178 | else { | 180 | else { |
179 | printk("%s", output); | 181 | printk("%s", output); |
180 | kfree(output); | 182 | kfree(output); |
181 | } | 183 | } |
182 | 184 | ||
183 | if(err < 0){ | 185 | if (err < 0) { |
184 | printk("etap_tramp failed - err = %d\n", -err); | 186 | printk(UM_KERN_ERR "etap_tramp failed - err = %d\n", -err); |
185 | goto out_close_control; | 187 | goto out_close_control; |
186 | } | 188 | } |
187 | 189 | ||
@@ -206,14 +208,14 @@ static void etap_close(int fd, void *data) | |||
206 | iter_addresses(pri->dev, etap_close_addr, &pri->control_fd); | 208 | iter_addresses(pri->dev, etap_close_addr, &pri->control_fd); |
207 | close(fd); | 209 | close(fd); |
208 | 210 | ||
209 | if(shutdown(pri->data_fd, SHUT_RDWR) < 0) | 211 | if (shutdown(pri->data_fd, SHUT_RDWR) < 0) |
210 | printk("etap_close - shutdown data socket failed, errno = %d\n", | 212 | printk(UM_KERN_ERR "etap_close - shutdown data socket failed, " |
211 | errno); | ||
212 | |||
213 | if(shutdown(pri->control_fd, SHUT_RDWR) < 0) | ||
214 | printk("etap_close - shutdown control socket failed, " | ||
215 | "errno = %d\n", errno); | 213 | "errno = %d\n", errno); |
216 | 214 | ||
215 | if (shutdown(pri->control_fd, SHUT_RDWR) < 0) | ||
216 | printk(UM_KERN_ERR "etap_close - shutdown control socket " | ||
217 | "failed, errno = %d\n", errno); | ||
218 | |||
217 | close(pri->data_fd); | 219 | close(pri->data_fd); |
218 | pri->data_fd = -1; | 220 | pri->data_fd = -1; |
219 | close(pri->control_fd); | 221 | close(pri->control_fd); |
@@ -231,7 +233,7 @@ static void etap_add_addr(unsigned char *addr, unsigned char *netmask, | |||
231 | struct ethertap_data *pri = data; | 233 | struct ethertap_data *pri = data; |
232 | 234 | ||
233 | tap_check_ips(pri->gate_addr, addr); | 235 | tap_check_ips(pri->gate_addr, addr); |
234 | if(pri->control_fd == -1) | 236 | if (pri->control_fd == -1) |
235 | return; | 237 | return; |
236 | etap_open_addr(addr, netmask, &pri->control_fd); | 238 | etap_open_addr(addr, netmask, &pri->control_fd); |
237 | } | 239 | } |
@@ -241,7 +243,7 @@ static void etap_del_addr(unsigned char *addr, unsigned char *netmask, | |||
241 | { | 243 | { |
242 | struct ethertap_data *pri = data; | 244 | struct ethertap_data *pri = data; |
243 | 245 | ||
244 | if(pri->control_fd == -1) | 246 | if (pri->control_fd == -1) |
245 | return; | 247 | return; |
246 | 248 | ||
247 | etap_close_addr(addr, netmask, &pri->control_fd); | 249 | etap_close_addr(addr, netmask, &pri->control_fd); |
diff --git a/arch/um/os-Linux/drivers/tuntap.h b/arch/um/os-Linux/drivers/tuntap.h index d3e8d3af6245..f17c31586c84 100644 --- a/arch/um/os-Linux/drivers/tuntap.h +++ b/arch/um/os-Linux/drivers/tuntap.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (C) 2001, 2002 Jeff Dike (jdike@karaya.com) | 2 | * Copyright (C) 2001 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com) |
3 | * Licensed under the GPL | 3 | * Licensed under the GPL |
4 | */ | 4 | */ |
5 | 5 | ||
@@ -19,14 +19,3 @@ struct tuntap_data { | |||
19 | extern const struct net_user_info tuntap_user_info; | 19 | extern const struct net_user_info tuntap_user_info; |
20 | 20 | ||
21 | #endif | 21 | #endif |
22 | |||
23 | /* | ||
24 | * Overrides for Emacs so that we follow Linus's tabbing style. | ||
25 | * Emacs will notice this stuff at the end of the file and automatically | ||
26 | * adjust the settings for this buffer only. This must remain at the end | ||
27 | * of the file. | ||
28 | * --------------------------------------------------------------------------- | ||
29 | * Local variables: | ||
30 | * c-file-style: "linux" | ||
31 | * End: | ||
32 | */ | ||
diff --git a/arch/um/os-Linux/drivers/tuntap_kern.c b/arch/um/os-Linux/drivers/tuntap_kern.c index f1714e7fb1d0..9ade1f892ac8 100644 --- a/arch/um/os-Linux/drivers/tuntap_kern.c +++ b/arch/um/os-Linux/drivers/tuntap_kern.c | |||
@@ -1,16 +1,13 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (C) 2001 Jeff Dike (jdike@karaya.com) | 2 | * Copyright (C) 2001 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com) |
3 | * Licensed under the GPL | 3 | * Licensed under the GPL |
4 | */ | 4 | */ |
5 | 5 | ||
6 | #include "linux/stddef.h" | 6 | #include <linux/netdevice.h> |
7 | #include "linux/netdevice.h" | 7 | #include <linux/init.h> |
8 | #include "linux/etherdevice.h" | 8 | #include <linux/skbuff.h> |
9 | #include "linux/skbuff.h" | 9 | #include <asm/errno.h> |
10 | #include "linux/init.h" | ||
11 | #include "asm/errno.h" | ||
12 | #include "net_kern.h" | 10 | #include "net_kern.h" |
13 | #include "net_user.h" | ||
14 | #include "tuntap.h" | 11 | #include "tuntap.h" |
15 | 12 | ||
16 | struct tuntap_init { | 13 | struct tuntap_init { |
@@ -38,19 +35,20 @@ static void tuntap_init(struct net_device *dev, void *data) | |||
38 | printk("\n"); | 35 | printk("\n"); |
39 | } | 36 | } |
40 | 37 | ||
41 | static int tuntap_read(int fd, struct sk_buff **skb, | 38 | static int tuntap_read(int fd, struct sk_buff **skb, |
42 | struct uml_net_private *lp) | 39 | struct uml_net_private *lp) |
43 | { | 40 | { |
44 | *skb = ether_adjust_skb(*skb, ETH_HEADER_OTHER); | 41 | *skb = ether_adjust_skb(*skb, ETH_HEADER_OTHER); |
45 | if(*skb == NULL) return(-ENOMEM); | 42 | if (*skb == NULL) |
46 | return(net_read(fd, skb_mac_header(*skb), | 43 | return -ENOMEM; |
47 | (*skb)->dev->mtu + ETH_HEADER_OTHER)); | 44 | return net_read(fd, skb_mac_header(*skb), |
45 | (*skb)->dev->mtu + ETH_HEADER_OTHER); | ||
48 | } | 46 | } |
49 | 47 | ||
50 | static int tuntap_write(int fd, struct sk_buff **skb, | 48 | static int tuntap_write(int fd, struct sk_buff **skb, |
51 | struct uml_net_private *lp) | 49 | struct uml_net_private *lp) |
52 | { | 50 | { |
53 | return(net_write(fd, (*skb)->data, (*skb)->len)); | 51 | return net_write(fd, (*skb)->data, (*skb)->len); |
54 | } | 52 | } |
55 | 53 | ||
56 | const struct net_kern_info tuntap_kern_info = { | 54 | const struct net_kern_info tuntap_kern_info = { |
@@ -67,11 +65,11 @@ int tuntap_setup(char *str, char **mac_out, void *data) | |||
67 | *init = ((struct tuntap_init) | 65 | *init = ((struct tuntap_init) |
68 | { .dev_name = NULL, | 66 | { .dev_name = NULL, |
69 | .gate_addr = NULL }); | 67 | .gate_addr = NULL }); |
70 | if(tap_setup_common(str, "tuntap", &init->dev_name, mac_out, | 68 | if (tap_setup_common(str, "tuntap", &init->dev_name, mac_out, |
71 | &init->gate_addr)) | 69 | &init->gate_addr)) |
72 | return(0); | 70 | return 0; |
73 | 71 | ||
74 | return(1); | 72 | return 1; |
75 | } | 73 | } |
76 | 74 | ||
77 | static struct transport tuntap_transport = { | 75 | static struct transport tuntap_transport = { |
diff --git a/arch/um/os-Linux/drivers/tuntap_user.c b/arch/um/os-Linux/drivers/tuntap_user.c index 72a2ff61556d..10714a413cfd 100644 --- a/arch/um/os-Linux/drivers/tuntap_user.c +++ b/arch/um/os-Linux/drivers/tuntap_user.c | |||
@@ -1,25 +1,22 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (C) 2001, 2002 Jeff Dike (jdike@karaya.com) | 2 | * Copyright (C) 2001 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com) |
3 | * Licensed under the GPL | 3 | * Licensed under the GPL |
4 | */ | 4 | */ |
5 | 5 | ||
6 | #include <stdio.h> | 6 | #include <stdio.h> |
7 | #include <stddef.h> | ||
8 | #include <stdlib.h> | ||
9 | #include <unistd.h> | 7 | #include <unistd.h> |
10 | #include <errno.h> | 8 | #include <errno.h> |
11 | #include <sys/wait.h> | 9 | #include <string.h> |
10 | #include <linux/if_tun.h> | ||
11 | #include <net/if.h> | ||
12 | #include <sys/ioctl.h> | ||
12 | #include <sys/socket.h> | 13 | #include <sys/socket.h> |
13 | #include <sys/un.h> | 14 | #include <sys/wait.h> |
14 | #include <sys/uio.h> | 15 | #include <sys/uio.h> |
15 | #include <sys/ioctl.h> | 16 | #include "kern_constants.h" |
16 | #include <net/if.h> | 17 | #include "os.h" |
17 | #include <linux/if_tun.h> | ||
18 | #include "net_user.h" | ||
19 | #include "tuntap.h" | 18 | #include "tuntap.h" |
20 | #include "kern_util.h" | ||
21 | #include "user.h" | 19 | #include "user.h" |
22 | #include "os.h" | ||
23 | 20 | ||
24 | #define MAX_PACKET ETH_MAX_PACKET | 21 | #define MAX_PACKET ETH_MAX_PACKET |
25 | 22 | ||
@@ -37,7 +34,7 @@ static void tuntap_add_addr(unsigned char *addr, unsigned char *netmask, | |||
37 | struct tuntap_data *pri = data; | 34 | struct tuntap_data *pri = data; |
38 | 35 | ||
39 | tap_check_ips(pri->gate_addr, addr); | 36 | tap_check_ips(pri->gate_addr, addr); |
40 | if((pri->fd == -1) || pri->fixed_config) | 37 | if ((pri->fd == -1) || pri->fixed_config) |
41 | return; | 38 | return; |
42 | open_addr(addr, netmask, pri->dev_name); | 39 | open_addr(addr, netmask, pri->dev_name); |
43 | } | 40 | } |
@@ -47,7 +44,7 @@ static void tuntap_del_addr(unsigned char *addr, unsigned char *netmask, | |||
47 | { | 44 | { |
48 | struct tuntap_data *pri = data; | 45 | struct tuntap_data *pri = data; |
49 | 46 | ||
50 | if((pri->fd == -1) || pri->fixed_config) | 47 | if ((pri->fd == -1) || pri->fixed_config) |
51 | return; | 48 | return; |
52 | close_addr(addr, netmask, pri->dev_name); | 49 | close_addr(addr, netmask, pri->dev_name); |
53 | } | 50 | } |
@@ -85,14 +82,14 @@ static int tuntap_open_tramp(char *gate, int *fd_out, int me, int remote, | |||
85 | 82 | ||
86 | pid = run_helper(tuntap_pre_exec, &data, argv); | 83 | pid = run_helper(tuntap_pre_exec, &data, argv); |
87 | 84 | ||
88 | if(pid < 0) | 85 | if (pid < 0) |
89 | return -pid; | 86 | return -pid; |
90 | 87 | ||
91 | close(remote); | 88 | close(remote); |
92 | 89 | ||
93 | msg.msg_name = NULL; | 90 | msg.msg_name = NULL; |
94 | msg.msg_namelen = 0; | 91 | msg.msg_namelen = 0; |
95 | if(buffer != NULL){ | 92 | if (buffer != NULL) { |
96 | iov = ((struct iovec) { buffer, buffer_len }); | 93 | iov = ((struct iovec) { buffer, buffer_len }); |
97 | msg.msg_iov = &iov; | 94 | msg.msg_iov = &iov; |
98 | msg.msg_iovlen = 1; | 95 | msg.msg_iovlen = 1; |
@@ -106,22 +103,24 @@ static int tuntap_open_tramp(char *gate, int *fd_out, int me, int remote, | |||
106 | msg.msg_flags = 0; | 103 | msg.msg_flags = 0; |
107 | n = recvmsg(me, &msg, 0); | 104 | n = recvmsg(me, &msg, 0); |
108 | *used_out = n; | 105 | *used_out = n; |
109 | if(n < 0){ | 106 | if (n < 0) { |
110 | err = -errno; | 107 | err = -errno; |
111 | printk("tuntap_open_tramp : recvmsg failed - errno = %d\n", | 108 | printk(UM_KERN_ERR "tuntap_open_tramp : recvmsg failed - " |
112 | errno); | 109 | "errno = %d\n", errno); |
113 | return err; | 110 | return err; |
114 | } | 111 | } |
115 | CATCH_EINTR(waitpid(pid, NULL, 0)); | 112 | CATCH_EINTR(waitpid(pid, NULL, 0)); |
116 | 113 | ||
117 | cmsg = CMSG_FIRSTHDR(&msg); | 114 | cmsg = CMSG_FIRSTHDR(&msg); |
118 | if(cmsg == NULL){ | 115 | if (cmsg == NULL) { |
119 | printk("tuntap_open_tramp : didn't receive a message\n"); | 116 | printk(UM_KERN_ERR "tuntap_open_tramp : didn't receive a " |
117 | "message\n"); | ||
120 | return -EINVAL; | 118 | return -EINVAL; |
121 | } | 119 | } |
122 | if((cmsg->cmsg_level != SOL_SOCKET) || | 120 | if ((cmsg->cmsg_level != SOL_SOCKET) || |
123 | (cmsg->cmsg_type != SCM_RIGHTS)){ | 121 | (cmsg->cmsg_type != SCM_RIGHTS)) { |
124 | printk("tuntap_open_tramp : didn't receive a descriptor\n"); | 122 | printk(UM_KERN_ERR "tuntap_open_tramp : didn't receive a " |
123 | "descriptor\n"); | ||
125 | return -EINVAL; | 124 | return -EINVAL; |
126 | } | 125 | } |
127 | *fd_out = ((int *) CMSG_DATA(cmsg))[0]; | 126 | *fd_out = ((int *) CMSG_DATA(cmsg))[0]; |
@@ -137,38 +136,39 @@ static int tuntap_open(void *data) | |||
137 | int err, fds[2], len, used; | 136 | int err, fds[2], len, used; |
138 | 137 | ||
139 | err = tap_open_common(pri->dev, pri->gate_addr); | 138 | err = tap_open_common(pri->dev, pri->gate_addr); |
140 | if(err < 0) | 139 | if (err < 0) |
141 | return err; | 140 | return err; |
142 | 141 | ||
143 | if(pri->fixed_config){ | 142 | if (pri->fixed_config) { |
144 | pri->fd = os_open_file("/dev/net/tun", | 143 | pri->fd = os_open_file("/dev/net/tun", |
145 | of_cloexec(of_rdwr(OPENFLAGS())), 0); | 144 | of_cloexec(of_rdwr(OPENFLAGS())), 0); |
146 | if(pri->fd < 0){ | 145 | if (pri->fd < 0) { |
147 | printk("Failed to open /dev/net/tun, err = %d\n", | 146 | printk(UM_KERN_ERR "Failed to open /dev/net/tun, " |
148 | -pri->fd); | 147 | "err = %d\n", -pri->fd); |
149 | return pri->fd; | 148 | return pri->fd; |
150 | } | 149 | } |
151 | memset(&ifr, 0, sizeof(ifr)); | 150 | memset(&ifr, 0, sizeof(ifr)); |
152 | ifr.ifr_flags = IFF_TAP | IFF_NO_PI; | 151 | ifr.ifr_flags = IFF_TAP | IFF_NO_PI; |
153 | strlcpy(ifr.ifr_name, pri->dev_name, sizeof(ifr.ifr_name)); | 152 | strlcpy(ifr.ifr_name, pri->dev_name, sizeof(ifr.ifr_name)); |
154 | if(ioctl(pri->fd, TUNSETIFF, (void *) &ifr) < 0){ | 153 | if (ioctl(pri->fd, TUNSETIFF, (void *) &ifr) < 0) { |
155 | err = -errno; | 154 | err = -errno; |
156 | printk("TUNSETIFF failed, errno = %d\n", errno); | 155 | printk(UM_KERN_ERR "TUNSETIFF failed, errno = %d\n", |
156 | errno); | ||
157 | close(pri->fd); | 157 | close(pri->fd); |
158 | return err; | 158 | return err; |
159 | } | 159 | } |
160 | } | 160 | } |
161 | else { | 161 | else { |
162 | err = socketpair(AF_UNIX, SOCK_DGRAM, 0, fds); | 162 | err = socketpair(AF_UNIX, SOCK_DGRAM, 0, fds); |
163 | if(err){ | 163 | if (err) { |
164 | err = -errno; | 164 | err = -errno; |
165 | printk("tuntap_open : socketpair failed - errno = %d\n", | 165 | printk(UM_KERN_ERR "tuntap_open : socketpair failed - " |
166 | errno); | 166 | "errno = %d\n", errno); |
167 | return err; | 167 | return err; |
168 | } | 168 | } |
169 | 169 | ||
170 | buffer = get_output_buffer(&len); | 170 | buffer = get_output_buffer(&len); |
171 | if(buffer != NULL) | 171 | if (buffer != NULL) |
172 | len--; | 172 | len--; |
173 | used = 0; | 173 | used = 0; |
174 | 174 | ||
@@ -176,10 +176,11 @@ static int tuntap_open(void *data) | |||
176 | fds[1], buffer, len, &used); | 176 | fds[1], buffer, len, &used); |
177 | 177 | ||
178 | output = buffer; | 178 | output = buffer; |
179 | if(err < 0) { | 179 | if (err < 0) { |
180 | printk("%s", output); | 180 | printk("%s", output); |
181 | free_output_buffer(buffer); | 181 | free_output_buffer(buffer); |
182 | printk("tuntap_open_tramp failed - err = %d\n", -err); | 182 | printk(UM_KERN_ERR "tuntap_open_tramp failed - " |
183 | "err = %d\n", -err); | ||
183 | return err; | 184 | return err; |
184 | } | 185 | } |
185 | 186 | ||
@@ -199,7 +200,7 @@ static void tuntap_close(int fd, void *data) | |||
199 | { | 200 | { |
200 | struct tuntap_data *pri = data; | 201 | struct tuntap_data *pri = data; |
201 | 202 | ||
202 | if(!pri->fixed_config) | 203 | if (!pri->fixed_config) |
203 | iter_addresses(pri->dev, close_addr, pri->dev_name); | 204 | iter_addresses(pri->dev, close_addr, pri->dev_name); |
204 | close(fd); | 205 | close(fd); |
205 | pri->fd = -1; | 206 | pri->fd = -1; |