static void list_scan(prop_dictionary_t env) { u_int8_t buf[64*1024 - 1]; struct ieee80211req ireq; char ssid[IEEE80211_NWID_LEN+1]; const u_int8_t *cp; int len, ssidmax; const struct ieee80211req_scan_result *sr; memset(&ireq, 0, sizeof(ireq)); ireq.i_type = IEEE80211_IOC_SCAN_RESULTS; ireq.i_data = buf; ireq.i_len = sizeof(buf); if (direct_ioctl(env, SIOCG80211, &ireq) < 0) errx(EXIT_FAILURE, "unable to get scan results"); len = ireq.i_len; if (len < (int)sizeof(*sr)) return; ssidmax = calc_len(buf, len); printf("%-*.*s %-17.17s %4s %4s %-7s %3s %4s\n" , ssidmax, ssidmax, "SSID" , "BSSID" , "CHAN" , "RATE" , "S:N" , "INT" , "CAPS" ); cp = buf; while (len >= (int)sizeof(*sr)) { const uint8_t *vp; sr = (const struct ieee80211req_scan_result *) cp; vp = (const u_int8_t *)(sr+1); (void)copy_essid(ssid, sizeof(ssid), vp, sr->isr_ssid_len); printf("%-*.*s %s %3d %3dM %3d:%-3d %3d %-4.4s" , ssidmax, ssidmax, ssid , ether_ntoa((const struct ether_addr *) sr->isr_bssid) , ieee80211_mhz2ieee(sr->isr_freq, sr->isr_flags) , getmaxrate(sr->isr_rates, sr->isr_nrates) , sr->isr_rssi, sr->isr_noise , sr->isr_intval , getcaps(sr->isr_capinfo) ); printies(vp + sr->isr_ssid_len, sr->isr_ie_len, 24); printf("\n"); cp += sr->isr_len, len -= sr->isr_len; } }
static void list_scan(const char *ifname) { uint8_t buf[24 * 1024]; char ssid[14]; uint8_t *cp; int len; len = get80211priv(ifname, IEEE80211_IOCTL_SCAN_RESULTS, buf, sizeof(buf)); if (len == -1) errx(1, "unable to get scan results"); if (len < sizeof(struct ieee80211req_scan_result)) return; printf("%-14.14s %-17.17s %4s %4s %-5s %3s %4s\n", "SSID", "BSSID", "CHAN", "RATE", "S:N", "INT", "CAPS"); cp = buf; do { struct ieee80211req_scan_result *sr; uint8_t *vp; sr = (struct ieee80211req_scan_result *) cp; vp = (u_int8_t *)(sr+1); printf("%-14.*s %s %3d %3dM %2d:%-2d %3d %-4.4s", copy_essid(ssid, sizeof(ssid), vp, sr->isr_ssid_len), ssid, ieee80211_ntoa(sr->isr_bssid), ieee80211_mhz2ieee(sr->isr_freq), getmaxrate(sr->isr_rates, sr->isr_nrates), (int8_t) sr->isr_rssi, sr->isr_noise, sr->isr_intval, getcaps(sr->isr_capinfo)); printies(vp + sr->isr_ssid_len, sr->isr_ie_len, 24); printf("\n"); cp += sr->isr_len, len -= sr->isr_len; } while (len >= sizeof(struct ieee80211req_scan_result)); }
void getarg(struct move *mm, char ***arg) { char **s; /* process arguments here. dashes are ignored, nbrw are ignored if * the game is being recovered */ s = *arg; while (*s && s[0][0] == '-') { switch (s[0][1]) { /* don't ask if rules or instructions needed */ case 'n': if (rflag) break; aflag = 0; args[acnt++] = 'n'; break; /* player is both red and white */ case 'b': if (rflag) break; pnum = 0; aflag = 0; args[acnt++] = 'b'; break; /* player is red */ case 'r': if (rflag) break; pnum = -1; aflag = 0; args[acnt++] = 'r'; break; /* player is white */ case 'w': if (rflag) break; pnum = 1; aflag = 0; args[acnt++] = 'w'; break; /* print board after move according to following * character */ case 'p': if (s[0][2] != 'r' && s[0][2] != 'w' && s[0][2] != 'b') break; args[acnt++] = 'p'; args[acnt++] = s[0][2]; if (s[0][2] == 'r') bflag = 1; if (s[0][2] == 'w') bflag = -1; if (s[0][2] == 'b') bflag = 0; break; case 't': if (s[0][2] == '\0') { /* get terminal caps */ s++; tflag = getcaps(*s); } else tflag = getcaps(&s[0][2]); break; case 's': s++; /* recover file */ if (s[0] == NULL) { writel("No save file named\n"); getout(0); } else recover(mm, s[0]); break; } s++; } if (s[0] != 0) recover(mm, s[0]); }
int main(int argc UNUSED, char **argv) { int i; // revoke setgid privileges setregid(getgid(), getgid()); signal(SIGINT, getout); if (tcgetattr(0, &old) == -1) // get old tty mode errexit("teachgammon(gtty)"); noech = old; noech.c_lflag &= ~ECHO; bg_raw = noech; bg_raw.c_lflag &= ~ICANON; // set up modes ospeed = cfgetospeed(&old); // for termlib tflag = getcaps(getenv("TERM")); while (*++argv != 0) getarg(&argv); if (tflag) { noech.c_oflag &= ~ONLCR; bg_raw.c_oflag &= ~ONLCR; clear(); } text(hello); text(list); i = text(contin); if (i == 0) i = 2; init(); while (i) switch (i) { case 1: leave(); case 2: if ((i = text(intro1)) != 0) break; wrboard(); if ((i = text(intro2)) != 0) break; case 3: if ((i = text(moves)) != 0) break; case 4: if ((i = text(removepiece)) != 0) break; case 5: if ((i = text(hits)) != 0) break; case 6: if ((i = text(endgame)) != 0) break; case 7: if ((i = text(doubl)) != 0) break; case 8: if ((i = text(stragy)) != 0) break; case 9: if ((i = text(prog)) != 0) break; case 10: if ((i = text(lastch)) != 0) break; } tutor(); // NOTREACHED return (0); }
short iott_open(io_log_name *dev_name, mval *pp, int fd, mval *mspace, int4 timeout) { unsigned char ch; d_tt_struct *tt_ptr; io_desc *ioptr; int status; int save_errno; int p_offset; error_def(ERR_NOTERMENV); error_def(ERR_NOTERMENTRY); error_def(ERR_NOTERMINFODB); error_def(ERR_TCGETATTR); ioptr = dev_name->iod; if (ioptr->state == dev_never_opened) { dev_name->iod->dev_sp = (void *)malloc(sizeof(d_tt_struct) + sizeof(struct termios)); memset(dev_name->iod->dev_sp, 0, sizeof(d_tt_struct) + sizeof(struct termios)); tt_ptr = (d_tt_struct *)dev_name->iod->dev_sp; tt_ptr->ttio_struct = (struct termios *)((char *)tt_ptr + sizeof(d_tt_struct)); tt_ptr->in_buf_sz = TTDEF_BUF_SZ; tt_ptr->enbld_outofbands.x = 0; tt_ptr->term_ctrl &= (~TRM_NOECHO); tt_ptr->mask_term.mask[0] = TERM_MSK; tt_ptr->ttybuff = (char *)malloc(IOTT_BUFF_LEN); } tt_ptr = (d_tt_struct *)dev_name->iod->dev_sp; p_offset = 0; while (*(pp->str.addr + p_offset) != iop_eol) { if ((ch = *(pp->str.addr + p_offset++)) == iop_exception) { ioptr->error_handler.len = *(pp->str.addr + p_offset); ioptr->error_handler.addr = (char *)(pp->str.addr + p_offset + 1); s2pool(&ioptr->error_handler); break; } else if (ch == iop_canonical) tt_ptr->canonical = TRUE; else if (ch == iop_nocanonical) tt_ptr->canonical = FALSE; p_offset += ((IOP_VAR_SIZE == io_params_size[ch]) ? (unsigned char)*(pp->str.addr + p_offset) + 1 : io_params_size[ch]); } if (ioptr->state != dev_open) { int status; char *env_term; assert(fd >= 0); tt_ptr->fildes = fd; status = tcgetattr(tt_ptr->fildes, tt_ptr->ttio_struct); if (0 != status) { save_errno = errno; if (gtm_isanlp(tt_ptr->fildes) == 0) rts_error(VARLSTCNT(4) ERR_TCGETATTR, 1, tt_ptr->fildes, save_errno); } if (run_time) setterm(ioptr); status = getcaps(tt_ptr->fildes); if (1 != status) { if (status == 0) { env_term = GETENV("TERM"); if (!env_term) { rts_error(VARLSTCNT(1) ERR_NOTERMENV); env_term = "unknown"; } rts_error(VARLSTCNT(4) ERR_NOTERMENTRY, 2, LEN_AND_STR(env_term)); } else rts_error(VARLSTCNT(1) ERR_NOTERMINFODB); } ioptr->width = COLUMNS; ioptr->length = GTM_LINES; ioptr->wrap = (0 == AUTO_RIGHT_MARGIN) ? FALSE : TRUE; /* defensive programming; till we are absolutely, positively * certain that there are no uses of wrap == TRUE */ ioptr->state = dev_open; tt_ptr->tbuffp = tt_ptr->ttybuff; /* Buffer is now empty */ } return TRUE; }
static void list_scan(AP_IW_CHANSCAN_RESULT_T *cfg, const char *ifname) { uint8_t buf[48*1024]; uint8_t *cp = NULL; int len = 0; int count = 0; //to count results. int iTemp = 0; AP_IW_CHANSCAN_RESULT_ENTRY *entry; struct ieee80211req_scan_result *sr; uint8_t *vp; len = get80211priv(ifname, IEEE80211_IOCTL_SCAN_RESULTS, buf, sizeof(buf)); if (len == -1) { RTN_LOG("IOCTL error,unable to get scan results"); return; } if (len < sizeof(struct ieee80211req_scan_result)) { RTN_LOG("get scan results len %d < struct", len); return; } cp = buf; do { sr = (struct ieee80211req_scan_result *) cp; vp = (u_int8_t *)(sr+1); // RTN_LOG("Get assignchan=%d, match chan=%d", cfg->assignChan, sr->isr_freq); if(cfg->assignChan == 0 || cfg->assignChan == sr->isr_freq) { entry = &cfg->scan_entry[count]; //set ssid iTemp = copy_essid((char *)entry->ssid, 32, vp, sr->isr_ssid_len); entry->ssid[iTemp] = '\0'; //set bssid memcpy(entry->bssid, sr->isr_bssid, 6); //set chan entry->chan = sr->isr_freq; //set maxrate entry->maxrate = getmaxrate(sr->isr_rates, sr->isr_nrates); //set rssi entry->rssi = sr->isr_rssi; //set noise entry->noise = sr->isr_noise; //set intval entry->intval = sr->isr_intval; //set caps getcaps(sr->isr_capinfo, (char *)entry->caps); //set ies,max = 96/4-1=23 getIEs(vp + sr->isr_ssid_len, sr->isr_ie_len, 23, entry->ieinfo); count++; } cp += sr->isr_len, len -= sr->isr_len; } while ((len >= sizeof(struct ieee80211req_scan_result)) && (count < AP_IW_CHANSCAN_MAX_RESULT_NUM)); cfg->num = count; }
static void list_stations(const char *ifname) { uint8_t buf[24*1024]; struct iwreq iwr; uint8_t *cp; int s, len; s = socket(AF_INET, SOCK_DGRAM, 0); if (s < 0) err(1, "socket(SOCK_DGRAM)"); (void) memset(&iwr, 0, sizeof(iwr)); (void) strncpy(iwr.ifr_name, ifname, sizeof(iwr.ifr_name)); iwr.u.data.pointer = (void *) buf; iwr.u.data.length = sizeof(buf); if (ioctl(s, IEEE80211_IOCTL_STA_INFO, &iwr) < 0) errx(1, "unable to get station information"); len = iwr.u.data.length; if (len < sizeof(struct ieee80211req_sta_info)) return; close(s); printf("%-17.17s %4s %4s %4s %4s %4s %4s %6s %6s %4s %5s %3s %8s %8s\n", "ADDR", "AID", "CHAN", "RATE", "RSSI", "DBM", "IDLE", "TXSEQ", "RXSEQ", "CAPS", "ACAPS", "ERP", "STATE", "MODE"); cp = buf; do { struct ieee80211req_sta_info *si; uint8_t *vp; si = (struct ieee80211req_sta_info *) cp; vp = (u_int8_t *)(si+1); printf("%s %4u %4d %3dM %4d %4d %4d %6d %6d %-4.4s %-5.5s %3x %8x %8s", ieee80211_ntoa(si->isi_macaddr), IEEE80211_AID(si->isi_associd), ieee80211_mhz2ieee(si->isi_freq), (si->isi_rates[si->isi_txrate] & IEEE80211_RATE_VAL) / 2, si->isi_rssi, rssi2dbm(si->isi_rssi), si->isi_inact, si->isi_txseqs[0], si->isi_rxseqs[0], getcaps(si->isi_capinfo), getathcaps(si->isi_athflags), si->isi_erp, si->isi_state, getstamode(si->isi_opmode)); printies(vp, si->isi_ie_len, 24); printf("\n"); if (si->isi_uapsd) { printf(" UAPSD QoSInfo: 0x%02x, ", si->isi_uapsd); printf("(VO,VI,BE,BK) = (%d,%d,%d,%d), MaxSpLimit = %s\n", WME_UAPSD_AC_ENABLED(WME_AC_VO, si->isi_uapsd) ? 1 : 0, WME_UAPSD_AC_ENABLED(WME_AC_VI, si->isi_uapsd) ? 1 : 0, WME_UAPSD_AC_ENABLED(WME_AC_BE, si->isi_uapsd) ? 1 : 0, WME_UAPSD_AC_ENABLED(WME_AC_BK, si->isi_uapsd) ? 1 : 0, WME_UAPSD_MAXSP(si->isi_uapsd) == 1 ? "2" : WME_UAPSD_MAXSP(si->isi_uapsd) == 2 ? "4" : WME_UAPSD_MAXSP(si->isi_uapsd) == 3 ? "6" : "NoLimit"); } cp += si->isi_len; len -= si->isi_len; } while (len >= sizeof(struct ieee80211req_sta_info)); }
int main(int argc, char **argv) { int i; /* revoke privs */ setgid(getgid()); acnt = 1; signal(SIGINT, getout); if (tcgetattr(0, &tty) == -1) /* get old tty mode */ errexit("teachgammon(tcgetattr)"); old = tty.c_lflag; raw = ((noech = old & ~ECHO) & ~ICANON); /* set up modes */ ospeed = cfgetospeed(&tty); /* for termlib */ tflag = getcaps(getenv("TERM")); getarg(argc, argv); if (tflag) { noech &= ~(ICRNL | OXTABS); raw &= ~(ICRNL | OXTABS); clear(); } text(hello); text(list); i = text(contin); if (i == 0) i = 2; init(); while (i) switch (i) { case 1: leave(); case 2: if ((i = text(intro1)) != 0) break; wrboard(); if ((i = text(intro2)) != 0) break; case 3: if ((i = text(moves)) != 0) break; case 4: if ((i = text(remove)) != 0) break; case 5: if ((i = text(hits)) != 0) break; case 6: if ((i = text(endgame)) != 0) break; case 7: if ((i = text(doubl)) != 0) break; case 8: if ((i = text(stragy)) != 0) break; case 9: if ((i = text(prog)) != 0) break; case 10: if ((i = text(lastch)) != 0) break; } tutor(); /* NOTREACHED */ return (0); }