diff options
Diffstat (limited to 'arch/um/os-Linux/drivers/tuntap_user.c')
| -rw-r--r-- | arch/um/os-Linux/drivers/tuntap_user.c | 75 | 
1 files changed, 38 insertions, 37 deletions
diff --git a/arch/um/os-Linux/drivers/tuntap_user.c b/arch/um/os-Linux/drivers/tuntap_user.c index 72a2ff61556..10714a413cf 100644 --- a/arch/um/os-Linux/drivers/tuntap_user.c +++ b/arch/um/os-Linux/drivers/tuntap_user.c @@ -1,25 +1,22 @@  /*  - * Copyright (C) 2001, 2002 Jeff Dike (jdike@karaya.com) + * Copyright (C) 2001 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)   * Licensed under the GPL   */  #include <stdio.h> -#include <stddef.h> -#include <stdlib.h>  #include <unistd.h>  #include <errno.h> -#include <sys/wait.h> +#include <string.h> +#include <linux/if_tun.h> +#include <net/if.h> +#include <sys/ioctl.h>  #include <sys/socket.h> -#include <sys/un.h> +#include <sys/wait.h>  #include <sys/uio.h> -#include <sys/ioctl.h> -#include <net/if.h> -#include <linux/if_tun.h> -#include "net_user.h" +#include "kern_constants.h" +#include "os.h"  #include "tuntap.h" -#include "kern_util.h"  #include "user.h" -#include "os.h"  #define MAX_PACKET ETH_MAX_PACKET @@ -37,7 +34,7 @@ static void tuntap_add_addr(unsigned char *addr, unsigned char *netmask,  	struct tuntap_data *pri = data;  	tap_check_ips(pri->gate_addr, addr); -	if((pri->fd == -1) || pri->fixed_config) +	if ((pri->fd == -1) || pri->fixed_config)  		return;  	open_addr(addr, netmask, pri->dev_name);  } @@ -47,7 +44,7 @@ static void tuntap_del_addr(unsigned char *addr, unsigned char *netmask,  {  	struct tuntap_data *pri = data; -	if((pri->fd == -1) || pri->fixed_config) +	if ((pri->fd == -1) || pri->fixed_config)  		return;  	close_addr(addr, netmask, pri->dev_name);  } @@ -85,14 +82,14 @@ static int tuntap_open_tramp(char *gate, int *fd_out, int me, int remote,  	pid = run_helper(tuntap_pre_exec, &data, argv); -	if(pid < 0) +	if (pid < 0)  		return -pid;  	close(remote);  	msg.msg_name = NULL;  	msg.msg_namelen = 0; -	if(buffer != NULL){ +	if (buffer != NULL) {  		iov = ((struct iovec) { buffer, buffer_len });  		msg.msg_iov = &iov;  		msg.msg_iovlen = 1; @@ -106,22 +103,24 @@ static int tuntap_open_tramp(char *gate, int *fd_out, int me, int remote,  	msg.msg_flags = 0;  	n = recvmsg(me, &msg, 0);  	*used_out = n; -	if(n < 0){ +	if (n < 0) {  		err = -errno; -		printk("tuntap_open_tramp : recvmsg failed - errno = %d\n",  -		       errno); +		printk(UM_KERN_ERR "tuntap_open_tramp : recvmsg failed - " +		       "errno = %d\n", errno);  		return err;  	}  	CATCH_EINTR(waitpid(pid, NULL, 0));  	cmsg = CMSG_FIRSTHDR(&msg); -	if(cmsg == NULL){ -		printk("tuntap_open_tramp : didn't receive a message\n"); +	if (cmsg == NULL) { +		printk(UM_KERN_ERR "tuntap_open_tramp : didn't receive a " +		       "message\n");  		return -EINVAL;  	} -	if((cmsg->cmsg_level != SOL_SOCKET) ||  -	   (cmsg->cmsg_type != SCM_RIGHTS)){ -		printk("tuntap_open_tramp : didn't receive a descriptor\n"); +	if ((cmsg->cmsg_level != SOL_SOCKET) || +	   (cmsg->cmsg_type != SCM_RIGHTS)) { +		printk(UM_KERN_ERR "tuntap_open_tramp : didn't receive a " +		       "descriptor\n");  		return -EINVAL;  	}  	*fd_out = ((int *) CMSG_DATA(cmsg))[0]; @@ -137,38 +136,39 @@ static int tuntap_open(void *data)  	int err, fds[2], len, used;  	err = tap_open_common(pri->dev, pri->gate_addr); -	if(err < 0) +	if (err < 0)  		return err; -	if(pri->fixed_config){ +	if (pri->fixed_config) {  		pri->fd = os_open_file("/dev/net/tun",  				       of_cloexec(of_rdwr(OPENFLAGS())), 0); -		if(pri->fd < 0){ -			printk("Failed to open /dev/net/tun, err = %d\n", -			       -pri->fd); +		if (pri->fd < 0) { +			printk(UM_KERN_ERR "Failed to open /dev/net/tun, " +			       "err = %d\n", -pri->fd);  			return pri->fd;  		}  		memset(&ifr, 0, sizeof(ifr));  		ifr.ifr_flags = IFF_TAP | IFF_NO_PI;  		strlcpy(ifr.ifr_name, pri->dev_name, sizeof(ifr.ifr_name)); -		if(ioctl(pri->fd, TUNSETIFF, (void *) &ifr) < 0){ +		if (ioctl(pri->fd, TUNSETIFF, (void *) &ifr) < 0) {  			err = -errno; -			printk("TUNSETIFF failed, errno = %d\n", errno); +			printk(UM_KERN_ERR "TUNSETIFF failed, errno = %d\n", +			       errno);  			close(pri->fd);  			return err;  		}  	}  	else {  		err = socketpair(AF_UNIX, SOCK_DGRAM, 0, fds); -		if(err){ +		if (err) {  			err = -errno; -			printk("tuntap_open : socketpair failed - errno = %d\n", -			       errno); +			printk(UM_KERN_ERR "tuntap_open : socketpair failed - " +			       "errno = %d\n", errno);  			return err;  		}  		buffer = get_output_buffer(&len); -		if(buffer != NULL) +		if (buffer != NULL)  			len--;  		used = 0; @@ -176,10 +176,11 @@ static int tuntap_open(void *data)  					fds[1], buffer, len, &used);  		output = buffer; -		if(err < 0) { +		if (err < 0) {  			printk("%s", output);  			free_output_buffer(buffer); -			printk("tuntap_open_tramp failed - err = %d\n", -err); +			printk(UM_KERN_ERR "tuntap_open_tramp failed - " +			       "err = %d\n", -err);  			return err;  		} @@ -199,7 +200,7 @@ static void tuntap_close(int fd, void *data)  {  	struct tuntap_data *pri = data; -	if(!pri->fixed_config)  +	if (!pri->fixed_config)  		iter_addresses(pri->dev, close_addr, pri->dev_name);  	close(fd);  	pri->fd = -1;  |