func: void tap_fd_set_offload(int fd, int csum, int tso4,
                          int tso6, int ecn, int ufo)
  {
      unsigned int offload = 0;
      if (csum) {
          offload |= TUN_F_CSUM;
          if (tso4)
              offload |= TUN_F_TSO4;
          if (tso6)
              offload |= TUN_F_TSO6;
          if ((tso4 || tso6) && ecn)
              offload |= TUN_F_TSO_ECN;
          if (ufo)
              offload |= TUN_F_UFO;
      if (ioctl(fd, TUNSETOFFLOAD, offload) != 0) {
          offload &= ~TUN_F_UFO;
          if (ioctl(fd, TUNSETOFFLOAD, offload) != 0) {
              fprintf(stderr, "TUNSETOFFLOAD ioctl() failed: %s\n",
                      strerror(errno));