|
|
| version 1.1.2.6, 2010/10/28 15:45:27 | version 1.1.2.7, 2010/11/02 01:54:58 |
|---|---|
| Line 34 wifi_chkIface(const char *csVAP, char **ppsIF, int nIF | Line 34 wifi_chkIface(const char *csVAP, char **ppsIF, int nIF |
| assert(csVAP); | assert(csVAP); |
| if (wifi_getParent(csVAP, szParent, IFNAMSIZ) == -1) | if (wifi_getParent(csVAP, szParent, IFNAMSIZ) == -1) |
| return -1; | return 0; |
| for (i = 0; i < nIF; i++) | for (i = 0; i < nIF; i++) |
| if (!strcasecmp(ppsIF[i], "any") || !strcmp(ppsIF[i], szParent)) | if (!strcasecmp(ppsIF[i], "any") || !strcmp(ppsIF[i], szParent)) |
| return 1; /* OK, vap is child */ | return 1; /* OK, vap is child */ |
| syslog(LOG_ERR, "Error:: Interface %s parent %s not being monitored", csVAP, szParent); | VERB(2) syslog(LOG_ERR, "Error:: Interface %s parent %s not being monitored", csVAP, szParent); |
| return 0; | return 0; |
| } | } |
| Line 96 wifi_buildWDS(int fd, char **ppsIF, int nIF) | Line 96 wifi_buildWDS(int fd, char **ppsIF, int nIF) |
| struct ether_addr bssid; | struct ether_addr bssid; |
| register int i; | register int i; |
| FTRACE(5); | |
| for (i = 0; i < 128; i++) { | for (i = 0; i < 128; i++) { |
| memset(szVAP, 0, IFNAMSIZ); | memset(szVAP, 0, IFNAMSIZ); |
| snprintf(szVAP, IFNAMSIZ, "wlan%d", i); | snprintf(szVAP, IFNAMSIZ, "wlan%d", i); |
| if (wifi_chkIface(szVAP, ppsIF, nIF) > 0 && wifi_isWDS(fd, szVAP) > 0) { | if (wifi_chkIface(szVAP, ppsIF, nIF) && !wifi_isWDS(fd, szVAP)) { |
| p = malloc(sizeof(struct dwds_if)); | p = malloc(sizeof(struct dwds_if)); |
| if (!p) { | if (!p) { |
| syslog(LOG_ERR, "Error:: can`t allocate memory #%d - %s\n", | syslog(LOG_ERR, "Error:: can`t allocate memory #%d - %s\n", |
| Line 109 wifi_buildWDS(int fd, char **ppsIF, int nIF) | Line 111 wifi_buildWDS(int fd, char **ppsIF, int nIF) |
| } | } |
| strlcpy(p->if_name, szVAP, IFNAMSIZ); | strlcpy(p->if_name, szVAP, IFNAMSIZ); |
| if (wifi_getBSSID(fd, szVAP, p->if_bssid, IEEE80211_ADDR_LEN) == -1) { | if (wifi_getBSSID(fd, szVAP, p->if_bssid, IEEE80211_ADDR_LEN) == -1) { |
| free(p); | syslog(LOG_ERR, "Error:: can`t get BSSID #%d - %s\n", |
| errno, strerror(errno)); | |
| i = -1; | i = -1; |
| break; | break; |
| } | } |
| Line 135 wifi_destroyWDS(const char *csIface, struct dwds_if ** | Line 138 wifi_destroyWDS(const char *csIface, struct dwds_if ** |
| { | { |
| struct dwds_if *p, **pp; | struct dwds_if *p, **pp; |
| FTRACE(5); | |
| assert(csIface); | assert(csIface); |
| assert(wds); | assert(wds); |
| Line 156 wifi_vapDestroy(const char *csVAP) | Line 161 wifi_vapDestroy(const char *csVAP) |
| struct ieee80211req ifr; | struct ieee80211req ifr; |
| int s; | int s; |
| FTRACE(5); | |
| assert(csVAP); | assert(csVAP); |
| s = socket(PF_INET, SOCK_DGRAM, 0); | s = socket(PF_INET, SOCK_DGRAM, 0); |
| Line 181 wifi_leaveWDS(struct ether_addr bssid, struct dwds_if | Line 188 wifi_leaveWDS(struct ether_addr bssid, struct dwds_if |
| { | { |
| struct dwds_if *p, **pp; | struct dwds_if *p, **pp; |
| FTRACE(5); | |
| assert(wds); | assert(wds); |
| for (pp = wds; (p = *pp); pp = &p->if_next) | for (pp = wds; (p = *pp); pp = &p->if_next) |
| Line 206 wifi_vapCreate(const char *csIface, struct dwds_if *p) | Line 215 wifi_vapCreate(const char *csIface, struct dwds_if *p) |
| struct ether_addr bssid; | struct ether_addr bssid; |
| int s; | int s; |
| FTRACE(5); | |
| assert(csIface); | assert(csIface); |
| assert(p); | assert(p); |
| Line 244 wifi_createWDS(const char *csIface, struct ether_addr | Line 255 wifi_createWDS(const char *csIface, struct ether_addr |
| struct dwds_if *p; | struct dwds_if *p; |
| char szParent[IFNAMSIZ]; | char szParent[IFNAMSIZ]; |
| FTRACE(5); | |
| assert(csIface); | assert(csIface); |
| assert(wds); | assert(wds); |
| Line 264 wifi_createWDS(const char *csIface, struct ether_addr | Line 277 wifi_createWDS(const char *csIface, struct ether_addr |
| return -1; | return -1; |
| } else | } else |
| memcpy(p->if_bssid, &bssid, IEEE80211_ADDR_LEN); | memcpy(p->if_bssid, &bssid, IEEE80211_ADDR_LEN); |
| if (wifi_vapCreate(csIface, p) == -1) { | if (wifi_vapCreate(szParent, p) == -1) { |
| free(p); | free(p); |
| return -1; | return -1; |
| } else { | } else { |