目前我有与Android应用程序(JNI,NDK)集成的简单隧道C程序(simpletun.c)
但是要让这个应用程序运行:需要设置(最好通过程序) Tun 接口?(它没有发生)
这样的代码返回 -1 ( :
int tun_alloc(char *dev, int flags) {
struct ifreq ifr;
int fd, err;
char *clonedev = "/dev/tun";
if( (fd = open(clonedev , O_RDWR)) < 0 ) {
jni_printf("Opening /dev/net/tun fail");
return fd;
}
memset(&ifr, 0, sizeof(ifr));
ifr.ifr_flags = flags;
if (*dev) {
strncpy(ifr.ifr_name, dev, IFNAMSIZ);
}
if( (err = ioctl(fd, TUNSETIFF, (void *)&ifr)) < 0 ) {
jni_printf("ioctl(TUNSETIFF) error");
close(fd);
return err;
}
strcpy(dev, ifr.ifr_name);
return fd;
}
附加信息 :
*添加了 ADB Shell 终端视图
*已植根 android 手机,通过 iptables android app (iptables 1.4.20) 在其上安装 iptables