/* Search and verify the request type of adapter (wl or dhd) * This is called by main before executing local dhd commands * or sending remote dhd commands over wifi transport */ void dhd_find(struct ifreq *ifr, char *type) { char proc_net_dev[] = "/proc/net/dev"; FILE *fp; static char buf[400]; char *c, *name; char dev_type[32]; ifr->ifr_name[0] = '\0'; /* eat first two lines */ if (!(fp = fopen(proc_net_dev, "r")) || !fgets(buf, sizeof(buf), fp) || !fgets(buf, sizeof(buf), fp)) return; while (fgets(buf, sizeof(buf), fp)) { c = buf; while (isspace(*c)) c++; if (!(name = strsep(&c, ":"))) continue; strncpy(ifr->ifr_name, name, IFNAMSIZ); if (dhd_get_dev_type(name, dev_type, type) >= 0 && !strncmp(dev_type, type, strlen(dev_type) - 1)) { if (!wl_check((void*)ifr)) break; } ifr->ifr_name[0] = '\0'; } fclose(fp); }
void dhd_find(struct ifreq *ifr) { char proc_net_dev[] = "/proc/net/dev"; FILE *fp; char buf[1000], *c, *name; char dev_type[DEV_TYPE_LEN]; ifr->ifr_name[0] = '\0'; /* eat first two lines */ if (!(fp = fopen(proc_net_dev, "r")) || !fgets(buf, sizeof(buf), fp) || !fgets(buf, sizeof(buf), fp)) return; while (fgets(buf, sizeof(buf), fp)) { c = buf; while (isspace(*c)) c++; if (!(name = strsep(&c, ":"))) continue; strncpy(ifr->ifr_name, name, IFNAMSIZ); if (dhd_get_dev_type(name, dev_type, DEV_TYPE_LEN) >= 0 && !strncmp(dev_type, "dhd", 3)) if (dhd_check((void *)ifr) == 0) break; ifr->ifr_name[0] = '\0'; } fclose(fp); }