Changeset 10757
- Timestamp:
- 11/05/08 02:55:27 (5 years ago)
- Location:
- src/router
- Files:
-
- 1 added
- 1 edited
-
libutils/wl.c (modified) (3 diffs)
-
services/sysinit/sysinit-rt2880.c (added)
Legend:
- Unmodified
- Added
- Removed
-
src/router/libutils/wl.c
r10753 r10757 192 192 } 193 193 194 static const char *ieee80211_ntoa( const uint8_t mac[6] ) 195 { 196 static char a[18]; 197 int i; 198 199 i = snprintf( a, sizeof( a ), "%02x:%02x:%02x:%02x:%02x:%02x", 200 mac[0], mac[1], mac[2], mac[3], mac[4], mac[5] ); 201 return ( i < 17 ? NULL : a ); 202 } 203 typedef union _MACHTTRANSMIT_SETTING { 204 struct { 205 unsigned short MCS:7; // MCS 206 unsigned short BW:1; //channel bandwidth 20MHz or 40 MHz 207 unsigned short ShortGI:1; 208 unsigned short STBC:2; //SPACE 209 unsigned short rsv:3; 210 unsigned short MODE:2; // Use definition MODE_xxx. 211 } field; 212 unsigned short word; 213 } MACHTTRANSMIT_SETTING; 214 215 typedef struct _RT_802_11_MAC_ENTRY { 216 unsigned char Addr[6]; 217 unsigned char Aid; 218 unsigned char Psm; // 0:PWR_ACTIVE, 1:PWR_SAVE 219 unsigned char MimoPs; // 0:MMPS_STATIC, 1:MMPS_DYNAMIC, 3:MMPS_Enabled 220 char AvgRssi0; 221 char AvgRssi1; 222 char AvgRssi2; 223 unsigned int ConnectedTime; 224 MACHTTRANSMIT_SETTING TxRate; 225 } RT_802_11_MAC_ENTRY; 226 227 typedef struct _RT_802_11_MAC_TABLE { 228 unsigned long Num; 229 RT_802_11_MAC_ENTRY Entry[32]; //MAX_LEN_OF_MAC_TABLE = 32 230 } RT_802_11_MAC_TABLE; 231 232 #define RTPRIV_IOCTL_GET_MAC_TABLE (SIOCIWFIRSTPRIV + 0x0F) 233 234 int getassoclist( char *ifname, unsigned char *list ) 235 { 236 struct iwreq iwr; 237 char type[32]; 238 char netmode[32]; 239 unsigned int *count = ( unsigned int * )list; 240 241 RT_802_11_MAC_TABLE table = {0}; 242 int s, i; 243 244 sprintf( type, "%s_mode", ifname ); 245 sprintf( netmode, "%s_net_mode", ifname ); 246 if( nvram_match( netmode, "disabled" ) ) 247 { 248 return 0; 249 } 250 251 if( !ifexists( ifname ) ) 252 { 253 printf( "IOCTL_STA_INFO ifresolv %s failed!\n", ifname ); 254 return 0; 255 } 256 int state = get_radiostate( ifname ); 257 258 if( state == 0 || state == -1 ) 259 { 260 printf( "IOCTL_STA_INFO radio %s not enabled!\n", ifname ); 261 return 0; 262 } 263 s = socket( AF_INET, SOCK_DGRAM, 0 ); 264 if( s < 0 ) 265 { 266 fprintf( stderr, "socket(SOCK_DRAGM)\n" ); 267 return 0; 268 } 269 ( void )memset( &iwr, 0, sizeof( struct iwreq ) ); 270 ( void )strncpy( iwr.ifr_name, ifname, sizeof( iwr.ifr_name ) ); 271 272 iwr.u.data.pointer = (caddr_t) &table; 273 if( ioctl( s, RTPRIV_IOCTL_GET_MAC_TABLE, &iwr ) < 0 ) 274 { 275 fprintf( stderr, "IOCTL_STA_INFO for %s failed!\n", ifname ); 276 close( s ); 277 return 0; 278 } 279 280 281 unsigned char *l = ( unsigned char * )list; 282 283 count[0] = 0; 284 l += 4; 285 for (i=0;i<table.Num;i++) 286 { 287 memcpy( l, &table.Entry[i].Addr, 6 ); 288 if( l[0] == 0 && l[1] == 0 && l[2] == 0 && l[3] == 0 && l[4] == 0 289 && l[5] == 0 ) 290 break; 291 l += 6; 292 count[0]++; 293 } 294 close( s ); 295 296 return count[0]; 297 } 298 299 300 301 194 302 195 303 #else … … 225 333 #endif 226 334 } 227 #endif228 335 int wl_getbssid( char *wl, char *mac ) 229 336 { … … 272 379 return count[0]; 273 380 } 381 #endif 274 382 275 383 int getwdslist( char *name, unsigned char *list )
Note: See TracChangeset
for help on using the changeset viewer.
