--- linux-2.6.18-gentoo-r4-old/driver/net/tun.c 2007-03-10 22:15:57.000000000 +0100 +++ linux-2.6.18-gentoo-r4/drivers/net/tun.c 2006-12-28 14:04:22.000000000 +0100 @@ -521,6 +521,7 @@ *(u16 *)tun->dev_addr = htons(0x00FF); get_random_bytes(tun->dev_addr + sizeof(u16), 4); memset(tun->chr_filter, 0, sizeof tun->chr_filter); + memcpy(dev->dev_addr,tun->dev_addr,6); tun_net_init(dev); @@ -663,6 +664,8 @@ /** Set the character device's hardware address. This is used when * filtering packets being sent from the network device to the character * device. */ + memcpy(tun->dev->dev_addr, ifr.ifr_hwaddr.sa_data, + min(sizeof ifr.ifr_hwaddr.sa_data, sizeof tun->dev_addr)); memcpy(tun->dev_addr, ifr.ifr_hwaddr.sa_data, min(sizeof ifr.ifr_hwaddr.sa_data, sizeof tun->dev_addr)); DBG(KERN_DEBUG "%s: set hardware address: %x:%x:%x:%x:%x:%x\n",