- device = find_device(index);
- if (device != NULL)
- return;
-
- devname = index2name(index);
- if (devname == NULL)
- return;
-
- if (type == ARPHRD_ETHER) {
- char bridge_path[PATH_MAX], wimax_path[PATH_MAX];
- struct stat st;
- struct iwreq iwr;
- int sk;
-
- snprintf(bridge_path, PATH_MAX,
- "/sys/class/net/%s/bridge", devname);
- snprintf(wimax_path, PATH_MAX,
- "/sys/class/net/%s/wimax", devname);
-
- memset(&iwr, 0, sizeof(iwr));
- strncpy(iwr.ifr_ifrn.ifrn_name, devname, IFNAMSIZ);
-
- sk = socket(PF_INET, SOCK_DGRAM, 0);
-
- if (g_str_has_prefix(devname, "bnep") == TRUE)
- devtype = CONNMAN_DEVICE_TYPE_UNKNOWN;
- else if (g_str_has_prefix(devname, "wmx") == TRUE)
- devtype = CONNMAN_DEVICE_TYPE_UNKNOWN;
- else if (stat(bridge_path, &st) == 0 && (st.st_mode & S_IFDIR))
- devtype = CONNMAN_DEVICE_TYPE_UNKNOWN;
- else if (stat(wimax_path, &st) == 0 && (st.st_mode & S_IFDIR))
- devtype = CONNMAN_DEVICE_TYPE_UNKNOWN;
- else if (ioctl(sk, SIOCGIWNAME, &iwr) == 0)
- devtype = CONNMAN_DEVICE_TYPE_WIFI;
- else
- devtype = CONNMAN_DEVICE_TYPE_ETHERNET;
-
- close(sk);
- } else if (type == ARPHRD_NONE) {
- if (g_str_has_prefix(devname, "hso") == TRUE)
- devtype = CONNMAN_DEVICE_TYPE_HSO;
- }