1

目前我有与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

4

0 回答 0