diff --git a/src/main/kotlin/TunDevice.kt b/src/main/kotlin/TunDevice.kt index 23e3301..8defa42 100644 --- a/src/main/kotlin/TunDevice.kt +++ b/src/main/kotlin/TunDevice.kt @@ -17,8 +17,8 @@ class TunDevice( output = FileOutputStream(fd) } - private fun openTun(name: String): java.io.FileDescriptor { - val fd = java.io.FileDescriptor() + private fun openTun(name: String): FileDescriptor { + val fd = FileDescriptor() val tun = RandomAccessFile("/dev/net/tun", "rw") val field = tun.javaClass.getDeclaredField("fd") diff --git a/src/main/tun.c b/src/main/tun.c new file mode 100644 index 0000000..5a3f9b9 --- /dev/null +++ b/src/main/tun.c @@ -0,0 +1,22 @@ +#include +#include +#include +#include +#include +#include + +int create_tun(char *dev) { + struct ifreq ifr; + int fd = open("/dev/net/tun", O_RDWR); + + memset(&ifr, 0, sizeof(ifr)); + + ifr.ifr_flags = IFF_TUN | IFF_NO_PI; + strcpy(ifr.ifr_name, dev); + + ioctl(fd, TUNSETIFF, &ifr); + + return fd; +} + +// gcc -shared -o libtun.so -fPIC src/main/tun.c \ No newline at end of file