我正在尝试用 C 语言编写一个隧道程序,该程序将从 TUNTAP 接口获取 UDP 数据包并将其发送到串行接口。
我所做的是从克隆设备 /dev/net/tun 分配接口,打开它并给它一个 IP 地址:
int tun_setup(char *dev, int flags) {
struct sockaddr_in my_addr;
struct ifreq ifr;
int fd, err;
string clonedev = "/dev/net/tun";
// Open clone device file descriptor
if( (fd = open(clonedev.c_str() , O_RDWR)) < 0 ) {
perror("Opening /dev/net/tun");
return fd;
}
// Initialise interface parameters structure
memset(&ifr, 0, sizeof(ifr));
// Set up flags
ifr.ifr_flags = flags;
// Set up interface name
if (*dev) {
strncpy(ifr.ifr_name, dev, IFNAMSIZ);
}
// …Run Code Online (Sandbox Code Playgroud)