📄 tap.cc
字号:
#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -