- logger(LOG_INFO, _("%s is a %s"), device, device_info);
+ if(!ioctl(device_fd, TUNSETIFF, &ifr)) {
+ strncpy(ifrname, ifr.ifr_name, IFNAMSIZ);
+ free(iface);
+ iface = xstrdup(ifrname);
+ } else {
+ logger(DEBUG_ALWAYS, LOG_ERR, "Could not create a tun/tap interface from %s: %s", device, strerror(errno));
+ return false;
+ }
+
+ logger(DEBUG_ALWAYS, LOG_INFO, "%s is a %s", device, device_info);
+
+ if(ifr.ifr_flags & IFF_TAP) {
+ struct ifreq ifr_mac = {{{0}}};
+
+ if(!ioctl(device_fd, SIOCGIFHWADDR, &ifr_mac)) {
+ memcpy(mymac.x, ifr_mac.ifr_hwaddr.sa_data, ETH_ALEN);
+ } else {
+ logger(DEBUG_ALWAYS, LOG_WARNING, "Could not get MAC address of %s: %s", device, strerror(errno));
+ }
+ }