小编Ale*_*oon的帖子

C 中的 TUNTAP 接口 (Linux):无法使用 sendto() 捕获 TUNTAP 上发送的 UDP 数据包

我正在尝试用 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)

c networking udp tunneling

5
推荐指数
1
解决办法
8596
查看次数

标签 统计

c ×1

networking ×1

tunneling ×1

udp ×1