Sida 1 av 1

Vad gör kommandot iwconfig wlan0 ap off?

Postat: 27 dec 2010, 01:39
av ubot
Jag skolkade från engelskalektionen och förstår inte riktigt vad kommandot

Kod: Markera allt

iwconfig wlan0 ap off
gör? Har jag rätt om jag säger att det återansluter till den Access Point som wlan:et använde innan? Är det någon som har lust att förklara skillnaden mellan iwconfig wlan0 ap auto|any|off? Jag förstår inte riktigt vad det står i man iwconfig.

Re: Vad gör kommandot iwconfig wlan0 ap off?

Postat: 27 dec 2010, 02:26
av Osprey
Som jag kan se så innebär "off" precis som du säger samma sak som att säga "iwconfig nätverk ap nuvarande-ap", medan "any" och "auto" innebär att den istället försöker leta upp vilken AP som för tillfället ger den bästa signalkvaliten.

I källkoden innebär "any" och "auto" exakt samma sak, typ 'if ("any" or "auto")'. Varför de har valt två olika ord för samma sak vet jag inte, men båda orden är fullt gångbara och vilket som känns mest rätt beror väl lite på hur man tänker sig det... :)

[Edit] Rent konkret så ser det ut så här i källkoden:

Kod: Markera allt

/*------------------------------------------------------------------*/
/*
 * Set AP Address
 */
static int
set_apaddr_info(int             skfd,
                char *          ifname,
                char *          args[],         /* Command line args */
                int             count)          /* Args count */
{
  struct iwreq          wrq;

  /* Avoid "Unused parameter" warning */
  count = count;

  if((!strcasecmp(args[0], "auto")) ||
     (!strcasecmp(args[0], "any")))
    {
      /* Send a broadcast address */
      iw_broad_ether(&(wrq.u.ap_addr));
    }
  else
    {
      if(!strcasecmp(args[0], "off"))
        {
          /* Send a NULL address */
          iw_null_ether(&(wrq.u.ap_addr));
        }
      else
        {
          /* Get the address and check if the interface supports it */
          if(iw_in_addr(skfd, ifname, args[0], &(wrq.u.ap_addr)) < 0)
            {
              errarg = 0;
              return(IWERR_ARG_TYPE);
            }
        }
    }

  if(iw_set_ext(skfd, ifname, SIOCSIWAP, &wrq) < 0)
    return(IWERR_SET_EXT);

  /* 1 args */
  return(1);
}