⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iwlist.c

📁 iwconfig iwlist iwpriv
💻 C
📖 第 1 页 / 共 3 页
字号:
	  	}      /* Display min/max timeout availables */      if(range.pmt_flags & IW_POWER_TIMEOUT)	{	  int	flags = (range.pmt_flags & ~(IW_POWER_MIN | IW_POWER_MAX));	  /* Display if auto or fixed */	  if(range.pmt_flags & IW_POWER_MIN)	    printf("Auto  timeout ; ");	  else	    printf("Fixed timeout ; ");	  /* Print the range */	  iw_print_pm_value(buffer, range.min_pmt, flags | IW_POWER_MIN);	  printf("%s\n                          ", buffer);	  iw_print_pm_value(buffer, range.max_pmt, flags | IW_POWER_MAX);	  printf("%s\n          ", buffer);	  	}#endif /* WIRELESS_EXT > 9 */      /* Get current Power Management settings */      wrq.u.power.flags = 0;      if(iw_get_ext(skfd, ifname, SIOCGIWPOWER, &wrq) >= 0)	{	  int	flags = wrq.u.power.flags;	  /* Is it disabled ? */	  if(wrq.u.power.disabled)	    printf("Current mode:off\n          ");	  else	    {	      int	pm_mask = 0;	      /* Let's check the mode */	      iw_print_pm_mode(buffer, flags);	      printf("Current %s", buffer);	      /* Let's check if nothing (simply on) */	      if((flags & IW_POWER_MODE) == IW_POWER_ON)		printf("mode:on");	      printf("\n                 ");	      /* Let's check the value and its type */	      if(wrq.u.power.flags & IW_POWER_TYPE)		{		  iw_print_pm_value(buffer,				    wrq.u.power.value, wrq.u.power.flags);		  printf("%s", buffer);		}	      /* If we have been returned a MIN value, ask for the MAX */	      if(flags & IW_POWER_MIN)		pm_mask = IW_POWER_MAX;	      /* If we have been returned a MAX value, ask for the MIN */	      if(flags & IW_POWER_MAX)		pm_mask = IW_POWER_MIN;	      /* If we have something to ask for... */	      if(pm_mask)		get_pm_value(skfd, ifname, &wrq, pm_mask, buffer);#if WIRELESS_EXT > 9	      /* And if we have both a period and a timeout, ask the other */	      pm_mask = (range.pm_capa & (~(wrq.u.power.flags) &					  IW_POWER_TYPE));	      if(pm_mask)		{		  int	base_mask = pm_mask;		  flags = get_pm_value(skfd, ifname, &wrq, pm_mask, buffer);		  pm_mask = 0;		  /* If we have been returned a MIN value, ask for the MAX */		  if(flags & IW_POWER_MIN)		    pm_mask = IW_POWER_MAX | base_mask;		  /* If we have been returned a MAX value, ask for the MIN */		  if(flags & IW_POWER_MAX)		    pm_mask = IW_POWER_MIN | base_mask;		  /* If we have something to ask for... */		  if(pm_mask)		    get_pm_value(skfd, ifname, &wrq, pm_mask, buffer);		}#endif /* WIRELESS_EXT > 9 */	    }	}      printf("\n");    }  return(0);}/************************** TRANSMIT POWER **************************//*------------------------------------------------------------------*//* * Print the number of available transmit powers for the device */static intprint_txpower_info(int		skfd,		   char *	ifname,		   char *	args[],		/* Command line args */		   int		count)		/* Args count */{  struct iwreq		wrq;  struct iw_range	range;  int			dbm;  int			mwatt;  int			k;  /* Avoid "Unused parameter" warning */  args = args; count = count;#if WIRELESS_EXT > 9  /* Extract range info */  if(iw_get_range_info(skfd, ifname, &range) < 0)      fprintf(stderr, "%-8.8s  no transmit-power information.\n\n",		      ifname);  else    {      if((range.num_txpower <= 0) || (range.num_txpower > IW_MAX_TXPOWER))	printf("%-8.8s  No transmit-powers ? Please update driver...\n\n", ifname);      else	{	  printf("%-8.8s  %d available transmit-powers :\n",		 ifname, range.num_txpower);	  /* Print them all */	  for(k = 0; k < range.num_txpower; k++)	    {	      if(range.txpower_capa & IW_TXPOW_MWATT)		{		  dbm = iw_mwatt2dbm(range.txpower[k]);		  mwatt = range.txpower[k];		}	      else		{		  dbm = range.txpower[k];		  mwatt = iw_dbm2mwatt(range.txpower[k]);		}	      printf("\t  %d dBm  \t(%d mW)\n", dbm, mwatt);	    }	  /* Get current Transmit Power */	  if(iw_get_ext(skfd, ifname, SIOCGIWTXPOW, &wrq) >= 0)	    {	      printf("          Current Tx-Power");	      /* Disabled ? */	      if(wrq.u.txpower.disabled)		printf(":off\n\n");	      else		{		  /* Fixed ? */		  if(wrq.u.txpower.fixed)		    printf("=");		  else		    printf(":");		  if(wrq.u.txpower.flags & IW_TXPOW_MWATT)		    {		      dbm = iw_mwatt2dbm(wrq.u.txpower.value);		      mwatt = wrq.u.txpower.value;		    }		  else		    {		      dbm = wrq.u.txpower.value;		      mwatt = iw_dbm2mwatt(wrq.u.txpower.value);		    }		  printf("%d dBm  \t(%d mW)\n\n", dbm, mwatt);		}	    }	}    }#endif /* WIRELESS_EXT > 9 */  return(0);}/*********************** RETRY LIMIT/LIFETIME ***********************/#if WIRELESS_EXT > 10/*------------------------------------------------------------------*//* * Print one retry value */static inline intget_retry_value(int		skfd,		char *		ifname,		struct iwreq *	pwrq,		int		flags,		char *		buffer){  /* Get Another retry value */  pwrq->u.retry.flags = flags;  if(iw_get_ext(skfd, ifname, SIOCGIWRETRY, pwrq) >= 0)    {      /* Let's check the value and its type */      if(pwrq->u.retry.flags & IW_RETRY_TYPE)	{	  iw_print_retry_value(buffer,			       pwrq->u.retry.value, pwrq->u.retry.flags);	  printf("%s\n                 ", buffer);	}    }  return(pwrq->u.retry.flags);}/*------------------------------------------------------------------*//* * Print Retry info for each device */static intprint_retry_info(int		skfd,		 char *		ifname,		 char *		args[],		/* Command line args */		 int		count)		/* Args count */{  struct iwreq		wrq;  struct iw_range	range;  char			buffer[128];  /* Avoid "Unused parameter" warning */  args = args; count = count;  /* Extract range info */  if(iw_get_range_info(skfd, ifname, &range) < 0)      fprintf(stderr, "%-8.8s  no retry limit/lifetime information.\n\n",	      ifname);  else    {      printf("%-8.8s  ", ifname);      /* Display min/max limit availables */      if(range.retry_flags & IW_RETRY_LIMIT)	{	  int	flags = (range.retry_flags & ~(IW_RETRY_MIN | IW_RETRY_MAX));	  /* Display if auto or fixed */	  if(range.retry_flags & IW_RETRY_MIN)	    printf("Auto  limit    ; ");	  else	    printf("Fixed limit    ; ");	  /* Print the range */	  iw_print_retry_value(buffer, range.min_retry, flags | IW_RETRY_MIN);	  printf("%s\n                           ", buffer);	  iw_print_retry_value(buffer, range.max_retry, flags | IW_RETRY_MAX);	  printf("%s\n          ", buffer);	  	}      /* Display min/max lifetime availables */      if(range.r_time_flags & IW_RETRY_LIFETIME)	{	  int	flags = (range.r_time_flags & ~(IW_RETRY_MIN | IW_RETRY_MAX));	  /* Display if auto or fixed */	  if(range.r_time_flags & IW_RETRY_MIN)	    printf("Auto  lifetime ; ");	  else	    printf("Fixed lifetime ; ");	  /* Print the range */	  iw_print_retry_value(buffer, range.min_r_time, flags | IW_RETRY_MIN);	  printf("%s\n                           ", buffer);	  iw_print_retry_value(buffer, range.max_r_time, flags | IW_RETRY_MAX);	  printf("%s\n          ", buffer);	  	}      /* Get current retry settings */      wrq.u.retry.flags = 0;      if(iw_get_ext(skfd, ifname, SIOCGIWRETRY, &wrq) >= 0)	{	  int	flags = wrq.u.retry.flags;	  /* Is it disabled ? */	  if(wrq.u.retry.disabled)	    printf("Current mode:off\n          ");	  else	    {	      int	retry_mask = 0;	      /* Let's check the mode */	      printf("Current mode:on\n                 ");	      /* Let's check the value and its type */	      if(wrq.u.retry.flags & IW_RETRY_TYPE)		{		  iw_print_retry_value(buffer,				       wrq.u.retry.value, wrq.u.retry.flags);		  printf("%s", buffer);		}	      /* If we have been returned a MIN value, ask for the MAX */	      if(flags & IW_RETRY_MIN)		retry_mask = IW_RETRY_MAX;	      /* If we have been returned a MAX value, ask for the MIN */	      if(flags & IW_RETRY_MAX)		retry_mask = IW_RETRY_MIN;	      /* If we have something to ask for... */	      if(retry_mask)		get_retry_value(skfd, ifname, &wrq, retry_mask, buffer);	      /* And if we have both a period and a timeout, ask the other */	      retry_mask = (range.retry_capa & (~(wrq.u.retry.flags) &					  IW_RETRY_TYPE));	      if(retry_mask)		{		  int	base_mask = retry_mask;		  flags = get_retry_value(skfd, ifname, &wrq, retry_mask,					  buffer);		  retry_mask = 0;		  /* If we have been returned a MIN value, ask for the MAX */		  if(flags & IW_RETRY_MIN)		    retry_mask = IW_RETRY_MAX | base_mask;		  /* If we have been returned a MAX value, ask for the MIN */		  if(flags & IW_RETRY_MAX)		    retry_mask = IW_RETRY_MIN | base_mask;		  /* If we have something to ask for... */		  if(retry_mask)		    get_retry_value(skfd, ifname, &wrq, retry_mask, buffer);		}	    }	}      printf("\n");    }  return(0);}#endif	/* WIRELESS_EXT > 10 *//***************************** SCANNING *****************************//* * This one behave quite differently from the others */#if WIRELESS_EXT > 13/*------------------------------------------------------------------*//* * Print one element from the scanning results */static inline intprint_scanning_token(struct iw_event *	event,	/* Extracted token */		     int		ap_num,	/* AP number */		     struct iw_range *	iwrange,	/* Range info */		     int		has_range){  char		buffer[128];	/* Temporary buffer */  /* Now, let's decode the event */  switch(event->cmd)    {    case SIOCGIWAP:      printf("          Cell %02d - Address: %s\n", ap_num,	     iw_pr_ether(buffer, event->u.ap_addr.sa_data));      ap_num++;      break;    case SIOCGIWNWID:      if(event->u.nwid.disabled)	printf("                    NWID:off/any\n");      else	printf("                    NWID:%X\n", event->u.nwid.value);      break;    case SIOCGIWFREQ:      {	double		freq;			/* Frequency/channel */	freq = iw_freq2float(&(event->u.freq));	iw_print_freq(buffer, freq);	printf("                    %s\n", buffer);      }      break;    case SIOCGIWMODE:      printf("                    Mode:%s\n",	     iw_operation_mode[event->u.mode]);      break;    case SIOCGIWNAME:      printf("                    Protocol:%-1.16s\n", event->u.name);      break;    case SIOCGIWESSID:      {	char essid[IW_ESSID_MAX_SIZE+1];	if((event->u.essid.pointer) && (event->u.essid.length))	  memcpy(essid, event->u.essid.pointer, event->u.essid.length);	essid[event->u.essid.length] = '\0';	if(event->u.essid.flags)	  {	    /* Does it have an ESSID index ? */	    if((event->u.essid.flags & IW_ENCODE_INDEX) > 1)	      printf("                    ESSID:\"%s\" [%d]\n", essid,		     (event->u.essid.flags & IW_ENCODE_INDEX));	    else	      printf("                    ESSID:\"%s\"\n", essid);	  }	else

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -