1/* 2 * Copyright 2008, ASUSTek Inc. 3 * All Rights Reserved. 4 * 5 * THIS SOFTWARE IS OFFERED "AS IS", AND ASUS GRANTS NO WARRANTIES OF ANY 6 * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM 7 * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS 8 * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE. 9 * 10 */ 11#ifdef WLEVENT 12 13#include <stdio.h> 14#include <stdlib.h> 15#include <string.h> 16#include <unistd.h> 17#include <shutils.h> 18#include <rc.h> 19#include <wlioctl.h> 20#include <syslog.h> 21 22#include <sys/socket.h> 23#include <errno.h> 24#include <sys/ioctl.h> 25#include <net/if.h> 26#include <linux/if_packet.h> 27#include <linux/if_ether.h> /* The L2 protocols */ 28#include <bcmnvram.h> 29 30#define BRIF "br0" 31char tmpstr[32]; 32char APMAC[18]; 33 34char *getStatusStr(int status) 35{ 36 switch(status){ 37 case 0: 38 return "successful"; 39 case 1: 40 return "failed"; 41 case 2: 42 return "timed out"; 43 case 3: 44 return "no matching network found"; 45 case 4: 46 return "aborted"; 47 case 5: 48 return "packet not ack'd"; 49 case 6: 50 return "AUTH or ASSOC packet was unsolicited"; 51 case 7: 52 return "attempt to assoc to an auto auth configuration"; 53 default: 54 memset(tmpstr, 0, 32); 55 sprintf(tmpstr, "Unknown(%x)", status); 56 57 return tmpstr; 58 } 59} 60 61char *getRoamReasonStr(int reason) 62{ 63 switch(reason){ 64 case 0: 65 return "initial assoc"; 66 case 1: 67 return "low RSSI"; 68 case 2: 69 return "DEAUTH indication"; 70 case 3: 71 return "DISASSOC indication"; 72 case 4: 73 return "lost beacons"; 74 case 5: 75 return "fast roam failure"; 76 case 6: 77 return "request by AP"; 78 case 7: 79 return "TSPEC rejection"; 80 case 8: 81 return "better AP"; 82 default: 83 memset(tmpstr, 0, 32); 84 sprintf(tmpstr, "Unknown(%x)", reason); 85 86 return tmpstr; 87 } 88} 89 90char *getPruneReasonStr(int reason) 91{ 92 switch(reason){ 93 case 1: 94 return "ecryption mismatch"; 95 case 2: 96 return "AP uses a broadcast BSSID"; 97 case 3: 98 return "STA's MAC addr is in AP's MAC deny list"; 99 case 4: 100 return "STA's MAC addr is not in AP's MAC allow list"; 101 case 5: 102 return "AP not allowed due to regulatory restriction"; 103 case 6: 104 return "AP does not support STA locale spectrum mgmt"; 105 case 7: 106 return "AP is on a radar channel of STA locale"; 107 case 8: 108 return "STA does not support AP's RSN"; 109 case 9: 110 return "No rates in common with AP"; 111 case 10: 112 return "STA does not support all basic rates of BSS"; 113 case 11: 114 return "CCX FAST ROAM: prune previous AP"; 115 case 12: 116 return "BSS's cipher not supported"; 117 case 13: 118 return "AP is already known to us as a STA"; 119 case 14: 120 return "CCX FAST ROAM: prune unqualified AP"; 121 case 15: 122 return "AP is already known to us as a WDS peer"; 123 case 16: 124 return "QBSS LOAD - AAC is too low"; 125 case 17: 126 return "prune home AP"; 127 default: 128 memset(tmpstr, 0, 32); 129 sprintf(tmpstr, "Unknown(%x)", reason); 130 131 return tmpstr; 132 } 133} 134 135struct wpa_driver_broadcom_data { 136 void *ctx; 137 int ioctl_sock; 138 int event_sock; 139 char ifname[IFNAMSIZ + 1]; 140}; 141 142int 143wlevent() 144{ 145 int s; 146 struct ifreq ifr; 147 struct sockaddr_ll ll; 148 struct wpa_driver_broadcom_data *drv; 149 struct wpa_supplicant *wpa_s; 150 151 fd_set rfds; 152 int res; 153 int left; 154 //int cc; 155 char wl_buf[8192]; 156 bcm_event_t *event; 157 bcmeth_hdr_t *hdr; 158 wl_event_msg_t *msg; 159 unsigned char *stamac_p; 160 char STAMAC[27]; 161 162 eval("wl", "event_msgs", "0x0fffffffffffffffffffffffffffffff"); 163 164 if ((s = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { 165 fprintf(stderr, "socket failed!\n"); 166 return -1; 167 } 168 else 169 { 170 fprintf(stderr, "socket ok!\n"); 171 } 172 173 strncpy(ifr.ifr_name, BRIF, IFNAMSIZ); 174 if (ioctl(s, SIOCGIFINDEX, &ifr) < 0) { 175 fprintf(stderr, "ioctl to get the interface(%s) index failed!\n", ifr.ifr_name); 176 return -1; 177 } 178 else 179 { 180 fprintf(stderr, "ioctl to get the interface(%s) index ok!\n", ifr.ifr_name); 181 } 182 183 drv = (struct wpa_driver_broadcom_data *)malloc(sizeof(*drv)); 184 if (drv == NULL) 185 return -1; 186 187 memset(APMAC, 0, sizeof(APMAC)); 188 sprintf(APMAC, "%s", nvram_safe_get("il0macaddr")); 189 memset(drv, 0, sizeof(*drv)); 190 memset(&wpa_s, 0, sizeof(wpa_s)); 191 drv->ctx = &wpa_s; 192 strncpy(drv->ifname, BRIF, sizeof(drv->ifname)); 193 drv->ioctl_sock = s; 194 195 s = socket(PF_PACKET, SOCK_RAW, ntohs(ETHER_TYPE_BRCM)); 196 197 if (s < 0) { 198 fprintf(stderr, "socket(PF_PACKET, SOCK_RAW, ntohs(ETHER_TYPE_BRCM)) failed!\n"); 199 close(drv->ioctl_sock); 200 free(drv); 201 return -1; 202 } 203 else 204 { 205 fprintf(stderr, "socket(PF_PACKET, SOCK_RAW, ntohs(ETHER_TYPE_BRCM)) ok!\n"); 206 } 207 208 memset(&ll, 0, sizeof(ll)); 209 ll.sll_family = AF_PACKET; 210 ll.sll_protocol = ntohs(ETHER_TYPE_BRCM); 211 ll.sll_ifindex = ifr.ifr_ifindex; 212 ll.sll_hatype = 0; 213 ll.sll_pkttype = PACKET_HOST; 214 ll.sll_halen = 0; 215 216 if (bind(s, (struct sockaddr *) &ll, sizeof(ll)) < 0) { 217 fprintf(stderr, "bind(netlink) failed!\n"); 218 close(s); 219 close(drv->ioctl_sock); 220 free(drv); 221 return -1; 222 } 223 else 224 { 225 drv->event_sock = s; 226 fprintf(stderr, "bind(netlink) ok!\n"); 227 } 228 229 while (1) 230 { 231 FD_ZERO(&rfds); 232 FD_SET(drv->event_sock, &rfds); 233 234 res = select(drv->event_sock + 1, &rfds, NULL, NULL, NULL); 235 236 if (res < 0 && errno != EINTR && errno != 0) { 237 fprintf(stderr, "select error\n"); 238 goto out; 239 } 240 241 if (res <= 0) 242 continue; 243 244 if (FD_ISSET(drv->event_sock, &rfds)) { 245 left = recv(drv->event_sock, wl_buf, sizeof wl_buf, 0); 246 247 if ((drv->event_sock<0) || (left<0)) 248 { 249 fprintf(stderr, "recv failed\n"); 250 } 251 else 252 { 253 /* check if it is the even subtype */ 254 event = (bcm_event_t *)wl_buf; 255 hdr = (bcmeth_hdr_t *)&(event->bcm_hdr); 256 //msg = (bcm_event_t *)&(event->event); 257 msg = (wl_event_msg_t *)&(event->event); 258 stamac_p = (unsigned char *)&(msg->addr); 259 sprintf(STAMAC, "%02X:%02X:%02X:%02X:%02X:%02X", stamac_p[0], stamac_p[1], stamac_p[2], stamac_p[3], stamac_p[4], stamac_p[5]); 260 261 switch(ntohl(msg->event_type)) 262 { 263#if 0 264 case WLC_E_SET_SSID: /* indicates status of set SSID */ 265 fprintf(stderr, "BROADCOM: device %s, set SSID message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 266 syslog(LOG_NOTICE, "BROADCOM: device %s, set SSID message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 267 break; 268 case WLC_E_JOIN: /* differentiates join IBSS from found (WLC_E_START) IBSS */ 269 fprintf(stderr, "BROADCOM: device %s, join SSID message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 270 syslog(LOG_NOTICE, "BROADCOM: device %s, join SSID message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 271 break; 272 case WLC_E_START: /* STA founded an IBSS or AP started a BSS */ 273 fprintf(stderr, "BROADCOM: device %s, founded IBSS/BSS message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 274 syslog(LOG_NOTICE, "BROADCOM: device %s, founded IBSS/BSS message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 275 break; 276 case WLC_E_AUTH: /* 802.11 AUTH request */ 277 fprintf(stderr, "BROADCOM: device %s, AUTH request message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 278 syslog(LOG_NOTICE, "BROADCOM: device %s, AUTH request message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 279 break; 280 case WLC_E_AUTH_IND: /* 802.11 AUTH indication */ 281 fprintf(stderr, "BROADCOM: device %s, AUTH indication message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 282 syslog(LOG_NOTICE, "BROADCOM: device %s, AUTH indication message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 283 break; 284 case WLC_E_DEAUTH: /* 802.11 DEAUTH request */ 285 fprintf(stderr, "BROADCOM: device %s, DEAUTH request message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 286 syslog(LOG_NOTICE, "BROADCOM: device %s, DEAUTH request message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 287 break; 288 case WLC_E_DEAUTH_IND: /* 802.11 DEAUTH indication */ 289 fprintf(stderr, "BROADCOM: device %s, DEAUTH indication message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 290 syslog(LOG_NOTICE, "BROADCOM: device %s, DEAUTH indication message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 291 break; 292 case WLC_E_ASSOC: /* 802.11 ASSOC request */ 293 fprintf(stderr, "BROADCOM: device %s, ASSOC request message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 294 syslog(LOG_NOTICE, "BROADCOM: device %s, ASSOC request message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 295 break; 296 case WLC_E_ASSOC_IND: /* 802.11 ASSOC indication */ 297 fprintf(stderr, "BROADCOM: device %s, ASSOC indication message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 298 syslog(LOG_NOTICE, "BROADCOM: device %s, ASSOC indication message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 299 break; 300 case WLC_E_REASSOC: /* 802.11 REASSOC request */ 301 fprintf(stderr, "BROADCOM: device %s, REASSOC request message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 302 syslog(LOG_NOTICE, "BROADCOM: device %s, REASSOC request message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 303 break; 304 case WLC_E_REASSOC_IND: /* 802.11 REASSOC indication */ 305 fprintf(stderr, "BROADCOM: device %s, REASSOC indication message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 306 syslog(LOG_NOTICE, "BROADCOM: device %s, REASSOC indication message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 307 break; 308 case WLC_E_DISASSOC: /* 802.11 DISASSOC request */ 309 fprintf(stderr, "BROADCOM: device %s, DISASSOC request message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 310 syslog(LOG_NOTICE, "BROADCOM: device %s, DISASSOC request message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 311 break; 312 case WLC_E_DISASSOC_IND: /* 802.11 DISASSOC indication */ 313 fprintf(stderr, "BROADCOM: device %s, DISASSOC indication message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 314 syslog(LOG_NOTICE, "BROADCOM: device %s, DISASSOC indication message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 315 break; 316 case WLC_E_QUIET_START: /* 802.11h Quiet period started */ 317 fprintf(stderr, "BROADCOM: device %s, Quiet period started message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 318 syslog(LOG_NOTICE, "BROADCOM: device %s, Quiet period started message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 319 break; 320 case WLC_E_QUIET_END: /* 802.11h Quiet period ended */ 321 fprintf(stderr, "BROADCOM: device %s, Quiet period ended message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 322 syslog(LOG_NOTICE, "BROADCOM: device %s, Quiet period ended message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 323 break; 324 case WLC_E_BEACON_RX: /* internal use: IBSS mode: saw another STA's BEACONS */ 325 fprintf(stderr, "BROADCOM: device %s, IBSS mode: saw another STA's BEACONS message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 326 syslog(LOG_NOTICE, "BROADCOM: device %s, IBSS mode: saw another STA's BEACONS message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 327 break; 328 case WLC_E_LINK: /* generic link indication */ 329 fprintf(stderr, "BROADCOM: device %s, generic link indication message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 330 syslog(LOG_NOTICE, "BROADCOM: device %s, generic link indication message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 331 break; 332 case WLC_E_MIC_ERROR: /* TKIP MIC error occurred */ 333 fprintf(stderr, "BROADCOM: device %s, TKIP MIC error occurred message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 334 syslog(LOG_NOTICE, "BROADCOM: device %s, TKIP MIC error occurred message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 335 break; 336 case WLC_E_NDIS_LINK: /* NDIS style link indication */ 337 fprintf(stderr, "BROADCOM: device %s, NDIS style link indication message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 338 syslog(LOG_NOTICE, "BROADCOM: device %s, NDIS style link indication message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 339 break; 340 case WLC_E_ROAM: /* roam attempt occurred: indicate status & reason for roam */ 341 fprintf(stderr, "BROADCOM: device %s, roam attempt occurred message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 342 syslog(LOG_NOTICE, "BROADCOM: device %s, roam attempt occurred message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 343 break; 344#endif 345 case WLC_E_TXFAIL: /* change in dot11FailedCount (txfail) */ 346 if(strncasecmp(APMAC, STAMAC, 17)) 347 { 348 eval("wl", "deauthenticate", STAMAC); 349 fprintf(stderr, "deauthenticate device %s !!!\n", STAMAC); 350 } 351// fprintf(stderr, "BROADCOM: device %s, change in dot11FailedCount message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 352// syslog(LOG_NOTICE, "BROADCOM: device %s, change in dot11FailedCount message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 353 break; 354#if 0 355 case WLC_E_PMKID_CACHE: /* WPA2 pmkid cache indication */ 356 fprintf(stderr, "BROADCOM: device %s, WPA2 pmkid cache indication message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 357 syslog(LOG_NOTICE, "BROADCOM: device %s, WPA2 pmkid cache indication message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 358 break; 359 case WLC_E_RETROGRADE_TSF: /* current AP's TSF value went backward */ 360 fprintf(stderr, "BROADCOM: device %s, current AP's TSF value went backward message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 361 syslog(LOG_NOTICE, "BROADCOM: device %s, current AP's TSF value went backward message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 362 break; 363 case WLC_E_PRUNE: /* AP was pruned from join list for reason */ 364 fprintf(stderr, "BROADCOM: device %s, AP was pruned from join list for reason message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getPruneReasonStr(ntohl(msg->reason))); 365 syslog(LOG_NOTICE, "BROADCOM: device %s, AP was pruned from join list for reason message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getPruneReasonStr(ntohl(msg->reason))); 366 break; 367 case WLC_E_AUTOAUTH: /* report AutoAuth table entry match for join attempt */ 368 fprintf(stderr, "BROADCOM: device %s, report AutoAuth table entry match for join attempt message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 369 syslog(LOG_NOTICE, "BROADCOM: device %s, report AutoAuth table entry match for join attempt message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 370 break; 371 case WLC_E_EAPOL_MSG: /* Event encapsulating an EAPOL message */ 372 fprintf(stderr, "BROADCOM: device %s, Event encapsulating an EAPOL message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 373 syslog(LOG_NOTICE, "BROADCOM: device %s, Event encapsulating an EAPOL message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 374 break; 375 case WLC_E_SCAN_COMPLETE: /* Scan results are ready or scan was aborted */ 376 fprintf(stderr, "BROADCOM: device %s, Scan results are ready or scan was aborted, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 377 syslog(LOG_NOTICE, "BROADCOM: device %s, Scan results are ready or scan was aborted, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 378 break; 379 case WLC_E_ADDTS_IND: /* indicate to host addts fail/success */ 380 fprintf(stderr, "BROADCOM: device %s, indicate to host addts fail/success, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 381 syslog(LOG_NOTICE, "BROADCOM: device %s, indicate to host addts fail/success, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 382 break; 383 case WLC_E_DELTS_IND: /* indicate to host delts fail/success */ 384 fprintf(stderr, "BROADCOM: device %s, indicate to host delts fail/success, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 385 syslog(LOG_NOTICE, "BROADCOM: device %s, indicate to host delts fail/success, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 386 break; 387 case WLC_E_BCNSENT_IND: /* indicate to host of beacon transmit */ 388 fprintf(stderr, "BROADCOM: device %s, indicate to host of beacon transmit, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 389 syslog(LOG_NOTICE, "BROADCOM: device %s, indicate to host of beacon transmit, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 390 break; 391 case WLC_E_BCNRX_MSG: /* Send the received beacon up to the host */ 392 fprintf(stderr, "BROADCOM: device %s, Send the received beacon up to the host, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 393 syslog(LOG_NOTICE, "BROADCOM: device %s, Send the received beacon up to the host, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 394 break; 395 case WLC_E_LAST: /* highest val + 1 for range checking */ 396 fprintf(stderr, "BROADCOM: device %s, LAST message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 397 syslog(LOG_NOTICE, "BROADCOM: device %s, LAST message, status: %s, reason: %s\n", STAMAC, getStatusStr(ntohl(msg->status)), getRoamReasonStr(ntohl(msg->reason))); 398 break; 399#endif 400 default: 401 //fprintf(stderr, "BROADCOM: device %s, UNKNOWN message (%x)\n", STAMAC, ntohl(msg->event_type)); 402 //syslog(LOG_NOTICE, "BROADCOM: device %s, UNKNOWN message (%x)\n", STAMAC, ntohl(msg->event_type)); 403 break; 404 } 405 406 /*fprintf(stderr, "\n"); 407 for(cc=0;cc<left;cc++) 408 { 409 if(cc%16==0) fprintf(stderr, "\n"); 410 fprintf(stderr, "%02x ", (unsigned char)wl_buf[cc]); 411 }; 412 fprintf(stderr, "\n\n");//*/ 413 } 414 } 415 } 416 417out: 418 return 0; 419} 420#endif 421