tap.cc

来自「一个mips虚拟机非常好代码,使用C++来编写的,希望大家多学学,」· CC 代码 · 共 43 行

CC
43
字号
#include <string.h>#include <unistd.h>#include <fcntl.h>#include <errno.h>#include <sys/ioctl.h>#include <net/if.h>#include <linux/if_tun.h>#include <ioqueue.hh>#include "tulip.hh"voidTulip::setup_tap(void){	struct ifreq ifr;	io_fd = open("/dev/net/tun", O_RDWR);	if (io_fd == -1)	{		perror("Error opening /dev/net/tun");		return;	}	memset(&ifr, 0, sizeof(ifr));	strcpy(ifr.ifr_name, "tap0");	ifr.ifr_flags = IFF_TAP|IFF_NO_PI;	ioctl(io_fd, TUNSETIFF, &ifr);	ioqueue->insert(this);}voidTulip::io_poll(void){	UInt8 buffer[1518];	int length;	length = ::read(io_fd, buffer, sizeof(buffer));	if (length <= 0)		return;	rx_input(buffer, length);}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?