- 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 (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_WIMAX;
- else if (ioctl(sk, SIOCGIWNAME, &iwr) == 0)
- devtype = CONNMAN_DEVICE_TYPE_UNKNOWN;
- 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;
- }
-
- switch (devtype) {
- case CONNMAN_DEVICE_TYPE_UNKNOWN:
- g_free(devname);
- return;
- case CONNMAN_DEVICE_TYPE_ETHERNET:
- case CONNMAN_DEVICE_TYPE_WIFI:
- case CONNMAN_DEVICE_TYPE_WIMAX:
- name = index2ident(index, "dev_");
- break;
- case CONNMAN_DEVICE_TYPE_BLUETOOTH:
- case CONNMAN_DEVICE_TYPE_HSO:
- case CONNMAN_DEVICE_TYPE_HUAWEI:
- case CONNMAN_DEVICE_TYPE_NOVATEL:
- case CONNMAN_DEVICE_TYPE_VENDOR:
- name = strdup(devname);
- break;
- }
-
- device = connman_device_create(name, devtype);
- if (device == NULL) {
- g_free(devname);
- g_free(name);