return(-errno); 
return err; 
static int tuntap_open(void *data){	struct ifreq ifr;	struct tuntap_data *pri = data;	char *output, *buffer;	int err, fds[2], len, used;	err = tap_open_common(pri->dev, pri->gate_addr);	if(err < 0)		return(err);	if(pri->fixed_config){		pri->fd = os_open_file("/dev/net/tun", of_rdwr(OPENFLAGS()), 0);		if(pri->fd < 0){			printk("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){			printk("TUNSETIFF failed, errno = %d\n", errno);			os_close_file(pri->fd);			return(-errno);		}	}	else {		err = os_pipe(fds, 0, 0);		if(err < 0){			printk("tuntap_open : os_pipe failed - err = %d\n",			       -err);			return(err);		}		buffer = get_output_buffer(&len);		if(buffer != NULL) len--;		used = 0;		err = tuntap_open_tramp(pri->gate_addr, &pri->fd, fds[0],					fds[1], buffer, len, &used);		output = buffer;		if(err < 0) {			printk("%s", output);			free_output_buffer(buffer);			printk("tuntap_open_tramp failed - err = %d\n", -err);			return(err);		}		pri->dev_name = uml_strdup(buffer);		output += IFNAMSIZ;		printk("%s", output);		free_output_buffer(buffer);		os_close_file(fds[0]);		iter_addresses(pri->dev, open_addr, pri->dev_name);	}	return(pri->fd);}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/b4fd310e163477236a241580b3b8c29aee65f4cc/tuntap_user.c/clean/arch/um/os-Linux/drivers/tuntap_user.c