@Override
  public void close() {
    // Stop the thread.
    interrupt();
    // After the interrupt, the run() method will stop Tun2Socks, and then complete.
    // We need to wait until that is finished before closing the TUN device.
    try {
      join();
    } catch (InterruptedException e) {
      // This is weird: the calling thread has _also_ been interrupted.
      LogWrapper.report(e);
    }
    try {
      tunFd.close();
    } catch (IOException e) {
      LogWrapper.report(e);
    }
  }
@Override
  public void close() {
   
    interrupt();
   
   
    try {
      join();
    } catch (InterruptedException e) {
     
      LogWrapper.report(e);
    }
    try {
      tunFd.close();
    } catch (IOException e) {
      LogWrapper.report(e);
    }
  }
@override public void close() { interrupt(); try { join(); } catch (interruptedexception e) { logwrapper.report(e); } try { tunfd.close(); } catch (ioexception e) { logwrapper.report(e); } }