Данные первые 4 байта теряются в Wireshark Сам код:
int tun_alloc(char *dev) {
struct ifreq ifr;
int fd, err;
char *clonedev = "/dev/net/tun";
if( (fd = open(clonedev, O_RDWR)) < 0 ) {
perror("Opening /dev/net/tun");
return fd;
}
memset(&ifr, 0, sizeof(ifr));
ifr.ifr_flags = IFF_TUN;
if (*dev) {
strncpy(ifr.ifr_name, dev, IFNAMSIZ);
}
if( (err = ioctl(fd, TUNSETIFF, (void *)&ifr)) < 0 ) {
perror("ioctl(TUNSETIFF)");
close(fd);
return err;
}
strcpy(dev, ifr.ifr_name);
return fd;
}
int write_tun(int tun_fd, char* data, int len) {
int nwrite = write(tun_fd, data, len);
if (nwrite < 0) {
perror("Writing into interface");
return 1;
}
return nwrite;
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей