static int GetNthFree(char *entry) { int index = 1; char feild[7]; const char *user_name; feild[0] = '\0'; do { sprintf(feild, "%s%d", entry, index); user_name = (const char *) nvram_bufget(RT2860_NVRAM, feild); if (strlen(user_name) == 0) return index; index++; } while (index <= 10); return 0; }
char_t *websGetCgiCommName(webs_t wp) { char *force_mem_upgrade = nvram_bufget(RT2860_NVRAM, "Force_mem_upgrade"); char_t *pname1 = NULL, *pname2 = NULL; char *part; if(!strcmp(force_mem_upgrade, "1")){ pname1 = (char_t *)mkstemp(T("cgi_XXXXXX")); }else if(wp && (wp->flags & WEBS_CGI_FIRMWARE_UPLOAD) ){ // see if usb disk is present and available space is enough? if( (part = isStorageOK()) ) pname1 = (char_t *)mkstemp(T("cgi.p_XXXXXX")); else pname1 = (char_t *)mkstemp(T("cgi_XXXXXX")); }else{ pname1 = (char_t *)mkstemp(T("cgi_XXXXXX")); } pname2 = bstrdup(B_L, pname1); free(pname1); return pname2; }
int executeCommad(int fd) { int ret =-1; msg *pmsg; pmsg = (msg*)malloc(sizeof(msg)); moduleNvram mNvram; char nvramStr[1024]; char ifname[16]; const char* valueStr; int ndev; int num; struct timeval tv; tv.tv_sec =1; tv.tv_usec=0; ret = recvData(fd, pmsg, &tv); if(ret!=sizeof(msg)){ printf("read data error\n"); close(fd); return -1; } switch(pmsg->dataType){ case SET_NVRAM: deb_print("SET_NVRAM\n"); memcpy(&mNvram, pmsg->dataBuf, sizeof(moduleNvram)); if(!strcmp(mNvram.nvramDev, "rtdev")) ndev = RTDEV_NVRAM; else ndev = RT2860_NVRAM; nvram_bufset(ndev, mNvram.item, mNvram.value); strcpy(pmsg->dataBuf,"Success"); pmsg->dataSize = strlen(pmsg->dataBuf)+1; write(fd, pmsg, sizeof(msg)); break; case SET_NVRAM_COMMIT: deb_print("SET_NVRAM_COMMIT\n"); memcpy(&mNvram, pmsg->dataBuf, sizeof(moduleNvram)); if(!strcmp(mNvram.nvramDev, "rtdev")) ndev = RTDEV_NVRAM; else ndev = RT2860_NVRAM; nvram_commit(ndev); strcpy(pmsg->dataBuf,"Success"); pmsg->dataSize = strlen(pmsg->dataBuf)+1; write(fd, pmsg, sizeof(msg)); break; case GET_NVRAM: deb_print("GET_NVRAM\n"); memcpy(&mNvram, pmsg->dataBuf, sizeof(moduleNvram)); if(!strcmp(mNvram.nvramDev, "rtdev")) ndev = RTDEV_NVRAM; else ndev = RT2860_NVRAM; valueStr = nvram_bufget( ndev, mNvram.item); if(valueStr==NULL) strcpy(pmsg->dataBuf,"NULL"); else strcpy(pmsg->dataBuf, valueStr); pmsg->dataSize = strlen(pmsg->dataBuf)+1; deb_print("return: %s\n",pmsg->dataBuf); write(fd, pmsg, sizeof(msg)); break; case INIT_INTERNET: initInternet(); break; case GET_MACLIST: memcpy(ifname, pmsg->dataBuf, pmsg->dataSize); sendMacList(fd, ifname); break; case GET_MACNUM: memcpy(ifname, pmsg->dataBuf, pmsg->dataSize); num = getOnlineMacNum(ifname); memcpy(pmsg->dataBuf, num, sizeof(num)); pmsg->dataSize=sizeof(num); write(fd, pmsg, sizeof(msg)); break; case SET_STALIMIT: setStaLimit( *(int*)(pmsg->dataBuf)); break; case SYSTEM_CMD: system(pmsg->dataBuf); printf("pmsg->dataBuf:%s\n", pmsg->dataBuf); break; default: break; } return 0; }
static int initWebs(void) { struct in_addr intaddr; #ifdef GA_HOSTNAME_SUPPORT struct hostent *hp; char host[128]; #else //ROY: any ip addr const char *lan_ip = "0.0.0.0";//nvram_bufget(RT2860_NVRAM, "lan_ipaddr"); #endif char webdir[128]; char *cp; char_t wbuf[128]; /* * Initialize the socket subsystem */ socketOpen(); #ifdef USER_MANAGEMENT_SUPPORT /* * Initialize the User Management database */ char *admu = (char *) nvram_bufget(RT2860_NVRAM, "Login"); char *admp = (char *) nvram_bufget(RT2860_NVRAM, "Password"); umOpen(); //umRestore(T("umconfig.txt")); //winfred: instead of using umconfig.txt, we create 'the one' adm defined in nvram umAddGroup(T("adm"), 0x07, AM_DIGEST, FALSE, FALSE); if (admu && strcmp(admu, "") && admp && strcmp(admp, "")) { umAddUser(admu, admp, T("adm"), FALSE, FALSE); umAddAccessLimit(T("/"), AM_DIGEST, FALSE, T("adm")); } else error(E_L, E_LOG, T("gohead.c: Warning: empty administrator account or password")); #endif #ifdef GA_HOSTNAME_SUPPORT /* * Define the local Ip address, host name, default home page and the * root web directory. */ if (gethostname(host, sizeof(host)) < 0) { error(E_L, E_LOG, T("gohead.c: Can't get hostname")); return -1; } if ((hp = gethostbyname(host)) == NULL) { error(E_L, E_LOG, T("gohead.c: Can't get host address")); return -1; } memcpy((char *) &intaddr, (char *) hp->h_addr_list[0], (size_t) hp->h_length); #else /* * get ip address from nvram configuration (we executed initInternet) */ if (NULL == lan_ip) { error(E_L, E_LOG, T("initWebs: cannot find lan_ip in NVRAM")); return -1; } intaddr.s_addr = inet_addr(lan_ip); if (intaddr.s_addr == INADDR_NONE) { error(E_L, E_LOG, T("initWebs: failed to convert %s to binary ip data"), lan_ip); intaddr.s_addr = 0; //return -1; } #endif /* * Set rootWeb as the root web. Modify this to suit your needs */ sprintf(webdir, "%s", rootWeb); /* * Configure the web server options before opening the web server */ websSetDefaultDir(webdir); cp = inet_ntoa(intaddr); ascToUni(wbuf, cp, min(strlen(cp) + 1, sizeof(wbuf))); websSetIpaddr(wbuf); #ifdef GA_HOSTNAME_SUPPORT ascToUni(wbuf, host, min(strlen(host) + 1, sizeof(wbuf))); #else //use ip address (already in wbuf) as host #endif websSetHost(wbuf); /* * Configure the web server options before opening the web server */ websSetDefaultPage(T("default.asp")); websSetPassword(password); /* * Open the web server on the given port. If that port is taken, try * the next sequential port for up to "retries" attempts. */ websOpenServer(port, retries); /* * First create the URL handlers. Note: handlers are called in sorted order * with the longest path handler examined first. Here we define the security * handler, forms handler and the default web page handler. */ websUrlHandlerDefine(T(""), NULL, 0, websSecurityHandler, WEBS_HANDLER_FIRST); websUrlHandlerDefine(T("/goform"), NULL, 0, websFormHandler, 0); websUrlHandlerDefine(T("/cgi-bin"), NULL, 0, websCgiHandler, 0); websUrlHandlerDefine(T(""), NULL, 0, websDefaultHandler, WEBS_HANDLER_LAST); /* * Define our functions */ formDefineUtilities(); formDefineInternet(); #if defined CONFIG_RALINKAPP_SWQOS formDefineQoS(); #endif #if (defined CONFIG_USB) || (defined CONFIG_MMC) formDefineUSB(); #endif #if defined CONFIG_RALINKAPP_MPLAYER formDefineMedia(); #endif formDefineWireless(); #if defined (RTDEV_SUPPORT) formDefineInic(); #elif defined (CONFIG_RT2561_AP) || defined (CONFIG_RT2561_AP_MODULE) formDefineLegacy(); #endif #if defined CONFIG_RT2860V2_STA || defined CONFIG_RT2860V2_STA_MODULE formDefineStation(); #endif formDefineFirewall(); formDefineManagement(); /* * Create the Form handlers for the User Management pages */ #ifdef USER_MANAGEMENT_SUPPORT //formDefineUserMgmt(); winfred: we do it ourselves #endif /* * Create a handler for the default home page */ websUrlHandlerDefine(T("/"), NULL, 0, websHomePageHandler, 0); return 0; }
static void qosClassifier(webs_t wp, char_t *path, char_t *query) { char rule[8192]; const char *old_rule; char tmp[8]; char_t *dir, *af_index, *dp_index, *comment, *mac_address, *dip_address, *sip_address, *pktlenfrom, *pktlento, *protocol, *dprf, *dprt, *sprf, *sprt, *layer7, *dscp, *ingress_if, *remark ; int af_index_i, dp_index_i, sprf_int, dprf_int, sprt_int, dprt_int; dir = websGetVar(wp, T("dir"), T("")); af_index = websGetVar(wp, T("af_index"), T("")); dp_index = websGetVar(wp, T("dp_index"), T("")); comment = websGetVar(wp, T("comment"), T("")); mac_address = websGetVar(wp, T("mac_address"), T("")); dip_address = websGetVar(wp, T("dip_address"), T("")); sip_address = websGetVar(wp, T("sip_address"), T("")); pktlenfrom = websGetVar(wp, T("pktlenfrom"), T("")); pktlento = websGetVar(wp, T("pktlento"), T("")); protocol = websGetVar(wp, T("protocol"), T("")); dprf = websGetVar(wp, T("dFromPort"), T("")); dprt = websGetVar(wp, T("dToPort"), T("")); sprf = websGetVar(wp, T("sFromPort"), T("")); sprt = websGetVar(wp, T("sToPort"), T("")); layer7 = websGetVar(wp, T("layer7"), T("")); dscp = websGetVar(wp, T("dscp"), T("")); ingress_if = ""; remark = websGetVar(wp, T("remark_dscp"), T("")); if(!dir || !af_index || !dp_index || !comment || !remark) return; if(!strlen(dir) || !strlen(af_index) || !strlen(dp_index) || strlen(comment) > 32) return; // i know you will try to break our box... ;) if(strchr(comment, ';') || strchr(comment, ',')) return; af_index_i = atoi(af_index); dp_index_i = atoi(dp_index); /* if(qosGetIndexByName(af_index_i, dp_index_i, comment) != -1){ // This name is not unique. // return; } */ // pkt len from/to must be co-exist. if( (!strlen(pktlenfrom) && strlen(pktlento)) || (strlen(pktlenfrom) && !strlen(pktlento)) ) return; if(!strlen(protocol)) { if( !strlen(mac_address) && !strlen(sip_address) && !strlen(dip_address) && !strlen(dscp) /*&& !strlen(ingress_if)*/ && !strlen(pktlenfrom) ) return; layer7 = ""; } else if(!strcmp(protocol, "TCP") || !strcmp(protocol, "UDP")) { if(!strlen(dprf) && !strlen(sprf)) return; layer7 = ""; } else if(!strcmp(protocol, "Application")) { if(!strlen(layer7)) return; } else if(!strcmp(protocol, "ICMP")) { layer7 = ""; // do nothing. } else return; // we dont trust user input..... if(strlen(mac_address)) { if(!isMacValid(mac_address)) return; } if(strlen(sip_address)) { if(!isIpNetmaskValid(sip_address)) return; } if(strlen(dip_address)) { if(!isIpNetmaskValid(dip_address)) return; } if(!strlen(sprf)) { sprf_int = 0; } else { sprf_int = atoi(sprf); if(sprf_int == 0 || sprf_int > 65535) return; } if(!strlen(sprt)) { sprt_int = 0; } else { sprt_int = atoi(sprt); if(sprt_int ==0 || sprt_int > 65535) return; } if(!strlen(dprf)) { dprf_int = 0; } else { dprf_int = atoi(dprf); if(dprf_int == 0 || dprf_int > 65535) return; } if(!strlen(dprt)) { dprt_int = 0; } else { dprt_int = atoi(dprt); if(dprt_int == 0 || dprt_int > 65535) return; } if(!strcmp(remark, "Auto")) { if(af_index_i == 5 && dp_index_i == 1) { /* EF class */ remark = "EF"; } else if(af_index_i == 6 && dp_index_i == 1) { /* BE class */ remark = "BE"; } else { /* AF classes */ snprintf(tmp, sizeof(tmp), "AF%d%d", af_index_i, dp_index_i); remark = tmp; } } if(!strcmp(dir, "Download")) old_rule = nvram_bufget(RT2860_NVRAM, "QoSDLRules"); else old_rule = nvram_bufget(RT2860_NVRAM, "QoSULRules"); if(!old_rule || !strlen(old_rule)) snprintf(rule, sizeof(rule), "%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s", comment, af_index, dp_index, mac_address, protocol, dip_address, sip_address, pktlenfrom, pktlento, dprf, dprt, sprf, sprt, layer7, dscp, ingress_if, remark); else snprintf(rule, sizeof(rule), "%s;%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s", old_rule, comment, af_index, dp_index, mac_address, protocol, dip_address, sip_address, pktlenfrom, pktlento, dprf, dprt, sprf, sprt, layer7, dscp, ingress_if, remark); if(!strcmp(dir, "Download")) nvram_bufset(RT2860_NVRAM, "QoSDLRules", rule); else nvram_bufset(RT2860_NVRAM, "QoSULRules", rule); nvram_commit(RT2860_NVRAM); QoSRestart(); // websHeader(wp); websWrite(wp, T("HTTP/1.0 200 OK\n")); websWrite(wp, T("Server: %s\r\n"), WEBS_NAME); websWrite(wp, T("Pragma: no-cache\n")); websWrite(wp, T("Cache-control: no-cache\n")); websWrite(wp, T("Content-Type: text/html\n")); websWrite(wp, T("\n")); websWrite(wp, T("<html>\n<head>\n")); websWrite(wp, T("<title>My Title</title>")); websWrite(wp, T("<link rel=\"stylesheet\" href=\"/style/normal_ws.css\" type=\"text/css\">")); websWrite(wp, T("<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">")); websWrite(wp, T("</head>\n<body onload=\"opener.location.reload();window.close();\">\n")); websWrite(wp, T("name: %s<br>\n"), comment); websWrite(wp, T("dir: %s<br>\n"), dir); websWrite(wp, T("mac: %s<br>\n"), mac_address); websWrite(wp, T("ingress interface: %s<br>\n"), ingress_if); websWrite(wp, T("sip_address: %s<br>\n"), sip_address); websWrite(wp, T("sFromPort: %s<br>\n"), sprf); websWrite(wp, T("sToPort: %s<br>\n"), sprt); websWrite(wp, T("dip_address: %s<br>\n"), dip_address); websWrite(wp, T("dFromPort: %s<br>\n"), dprf); websWrite(wp, T("dToPort: %s<br>\n"), dprt); websWrite(wp, T("protocol: %s<br>\n"), protocol); websWrite(wp, T("application: %s<br>\n"), layer7); websWrite(wp, T("dscp: %s<br>\n"), dscp); websWrite(wp, T("remark: %s<br>\n"), remark); websFooter(wp); websDone(wp, 200); }
int gen_config(int mode) { FILE *fp; int i, ssid_num = 1; char tx_rate[16], wmm_enable[16]; nvram_init(mode); /* nvram_bufset(mode, "SystemName", "RalinkAP"); nvram_bufset(mode, "ModuleName", "RT2860"); nvram_commit(mode); */ system("mkdir -p /etc/Wireless/RT2860"); if (mode == RT2860_NVRAM) { fp = fopen("/etc/Wireless/RT2860/RT2860.dat", "w+"); } else if (mode == RTDEV_NVRAM) { #if defined (CONFIG_RTDEV) system("mkdir -p /etc/Wireless/iNIC"); fp = fopen("/etc/Wireless/iNIC/iNIC_ap.dat", "w+"); #elif defined (CONFIG_RT2561_AP) || defined (CONFIG_RT2561_AP_MODULE) system("mkdir -p /etc/Wireless/RT2561"); fp = fopen("/etc/Wireless/RT2561/RT2561.dat", "w+"); #elif defined (CONFIG_RTDEV_PLC) system("mkdir -p /etc/PLC"); fp = fopen("/etc/PLC/plc.dat", "w+"); #endif } else return 0; fprintf(fp, "#The word of \"Default\" must not be removed\n"); fprintf(fp, "Default\n"); #define FPRINT_NUM(x) fprintf(fp, #x"=%d\n", atoi(nvram_bufget(mode, #x))); #define FPRINT_STR(x) fprintf(fp, #x"=%s\n", nvram_bufget(mode, #x)); if ((RT2860_NVRAM == mode) #if defined (CONFIG_RTDEV) || (RTDEV_NVRAM == mode) #endif ) { FPRINT_NUM(CountryRegion); FPRINT_NUM(CountryRegionABand); FPRINT_STR(CountryCode); FPRINT_NUM(BssidNum); ssid_num = atoi(nvram_get(mode, "BssidNum")); FPRINT_STR(SSID1); FPRINT_STR(SSID2); FPRINT_STR(SSID3); FPRINT_STR(SSID4); FPRINT_STR(SSID5); FPRINT_STR(SSID6); FPRINT_STR(SSID7); FPRINT_STR(SSID8); #if defined (CONFIG_16MBSSID_MODE) FPRINT_STR(SSID9); FPRINT_STR(SSID10); FPRINT_STR(SSID11); FPRINT_STR(SSID12); FPRINT_STR(SSID13); FPRINT_STR(SSID14); FPRINT_STR(SSID15); FPRINT_STR(SSID16); #endif FPRINT_NUM(WirelessMode); FPRINT_STR(FixedTxMode); //TxRate(FixedRate) bzero(tx_rate, sizeof(char)*16); for (i = 0; i < ssid_num; i++) { sprintf(tx_rate+strlen(tx_rate), "%d", atoi(nvram_bufget(mode, "TxRate"))); sprintf(tx_rate+strlen(tx_rate), "%c", ';'); } tx_rate[strlen(tx_rate) - 1] = '\0'; fprintf(fp, "TxRate=%s\n", tx_rate); FPRINT_NUM(Channel); FPRINT_NUM(BasicRate); FPRINT_NUM(BeaconPeriod); FPRINT_NUM(DtimPeriod); FPRINT_NUM(TxPower); FPRINT_NUM(DisableOLBC); FPRINT_NUM(BGProtection); fprintf(fp, "TxAntenna=\n"); fprintf(fp, "RxAntenna=\n"); FPRINT_NUM(TxPreamble); FPRINT_NUM(RTSThreshold ); FPRINT_NUM(FragThreshold ); FPRINT_NUM(TxBurst); FPRINT_NUM(PktAggregate); FPRINT_NUM(AutoProvisionEn); FPRINT_NUM(FreqDelta); fprintf(fp, "TurboRate=0\n"); #if defined (CONFIG_RT2860V2_AP_VIDEO_TURBINE) || defined (CONFIG_RT2860V2_STA_VIDEO_TURBINE) FPRINT_NUM(VideoTurbine); #endif //WmmCapable bzero(wmm_enable, sizeof(char)*16); for (i = 0; i < ssid_num; i++) { sprintf(wmm_enable+strlen(wmm_enable), "%d", atoi(nvram_bufget(mode, "WmmCapable"))); sprintf(wmm_enable+strlen(wmm_enable), "%c", ';'); } wmm_enable[strlen(wmm_enable) - 1] = '\0'; fprintf(fp, "WmmCapable=%s\n", wmm_enable); FPRINT_STR(APAifsn); FPRINT_STR(APCwmin); FPRINT_STR(APCwmax); FPRINT_STR(APTxop); FPRINT_STR(APACM); FPRINT_STR(BSSAifsn); FPRINT_STR(BSSCwmin); FPRINT_STR(BSSCwmax); FPRINT_STR(BSSTxop); FPRINT_STR(BSSACM); FPRINT_STR(AckPolicy); FPRINT_STR(APSDCapable); FPRINT_STR(DLSCapable); FPRINT_STR(NoForwarding); FPRINT_NUM(NoForwardingBTNBSSID); FPRINT_STR(HideSSID); FPRINT_NUM(ShortSlot); FPRINT_NUM(AutoChannelSelect); FPRINT_STR(IEEE8021X); FPRINT_NUM(IEEE80211H); FPRINT_NUM(CarrierDetect); FPRINT_NUM(ITxBfEn); FPRINT_STR(PreAntSwitch); FPRINT_NUM(PhyRateLimit); FPRINT_NUM(DebugFlags); FPRINT_NUM(ETxBfEnCond); FPRINT_NUM(ITxBfTimeout); FPRINT_NUM(ETxBfTimeout); FPRINT_NUM(ETxBfNoncompress); FPRINT_NUM(ETxBfIncapable); FPRINT_NUM(FineAGC); FPRINT_NUM(StreamMode); FPRINT_STR(StreamModeMac0); FPRINT_STR(StreamModeMac1); FPRINT_STR(StreamModeMac2); FPRINT_STR(StreamModeMac3); FPRINT_NUM(CSPeriod); FPRINT_STR(RDRegion); FPRINT_NUM(StationKeepAlive); FPRINT_NUM(DfsLowerLimit); FPRINT_NUM(DfsUpperLimit); FPRINT_NUM(DfsOutdoor); FPRINT_NUM(SymRoundFromCfg); FPRINT_NUM(BusyIdleFromCfg); FPRINT_NUM(DfsRssiHighFromCfg); FPRINT_NUM(DfsRssiLowFromCfg); FPRINT_NUM(DFSParamFromConfig); FPRINT_STR(FCCParamCh0); FPRINT_STR(FCCParamCh1); FPRINT_STR(FCCParamCh2); FPRINT_STR(FCCParamCh3); FPRINT_STR(CEParamCh0); FPRINT_STR(CEParamCh1); FPRINT_STR(CEParamCh2); FPRINT_STR(CEParamCh3); FPRINT_STR(JAPParamCh0); FPRINT_STR(JAPParamCh1); FPRINT_STR(JAPParamCh2); FPRINT_STR(JAPParamCh3); FPRINT_STR(JAPW53ParamCh0); FPRINT_STR(JAPW53ParamCh1); FPRINT_STR(JAPW53ParamCh2); FPRINT_STR(JAPW53ParamCh3); FPRINT_NUM(FixDfsLimit); FPRINT_NUM(LongPulseRadarTh); FPRINT_NUM(AvgRssiReq); FPRINT_NUM(DFS_R66); FPRINT_STR(BlockCh); FPRINT_NUM(GreenAP); FPRINT_STR(PreAuth); FPRINT_STR(AuthMode); FPRINT_STR(EncrypType); /*kurtis: WAPI*/ FPRINT_STR(WapiPsk1); FPRINT_STR(WapiPsk2); FPRINT_STR(WapiPsk3); FPRINT_STR(WapiPsk4); FPRINT_STR(WapiPsk5); FPRINT_STR(WapiPsk6); FPRINT_STR(WapiPsk7); FPRINT_STR(WapiPsk8); #if defined (CONFIG_16MBSSID_MODE) FPRINT_STR(WapiPsk9); FPRINT_STR(WapiPsk10); FPRINT_STR(WapiPsk11); FPRINT_STR(WapiPsk12); FPRINT_STR(WapiPsk13); FPRINT_STR(WapiPsk14); FPRINT_STR(WapiPsk15); FPRINT_STR(WapiPsk16); #endif FPRINT_STR(WapiPskType); FPRINT_STR(Wapiifname); FPRINT_STR(WapiAsCertPath); FPRINT_STR(WapiUserCertPath); FPRINT_STR(WapiAsIpAddr); FPRINT_STR(WapiAsPort); FPRINT_NUM(BssidNum); FPRINT_STR(RekeyMethod); FPRINT_NUM(RekeyInterval); FPRINT_STR(PMKCachePeriod); FPRINT_NUM(MeshAutoLink); FPRINT_STR(MeshAuthMode); FPRINT_STR(MeshEncrypType); FPRINT_NUM(MeshDefaultkey); FPRINT_STR(MeshWEPKEY); FPRINT_STR(MeshWPAKEY); FPRINT_STR(MeshId); //WPAPSK FPRINT_STR(WPAPSK1); FPRINT_STR(WPAPSK2); FPRINT_STR(WPAPSK3); FPRINT_STR(WPAPSK4); FPRINT_STR(WPAPSK5); FPRINT_STR(WPAPSK6); FPRINT_STR(WPAPSK7); FPRINT_STR(WPAPSK8); #if defined (CONFIG_16MBSSID_MODE) FPRINT_STR(WPAPSK9); FPRINT_STR(WPAPSK10); FPRINT_STR(WPAPSK11); FPRINT_STR(WPAPSK12); FPRINT_STR(WPAPSK13); FPRINT_STR(WPAPSK14); FPRINT_STR(WPAPSK15); FPRINT_STR(WPAPSK16); #endif FPRINT_STR(DefaultKeyID); FPRINT_STR(Key1Type); FPRINT_STR(Key1Str1); FPRINT_STR(Key1Str2); FPRINT_STR(Key1Str3); FPRINT_STR(Key1Str4); FPRINT_STR(Key1Str5); FPRINT_STR(Key1Str6); FPRINT_STR(Key1Str7); FPRINT_STR(Key1Str8); #if defined (CONFIG_16MBSSID_MODE) FPRINT_STR(Key1Str9); FPRINT_STR(Key1Str10); FPRINT_STR(Key1Str11); FPRINT_STR(Key1Str12); FPRINT_STR(Key1Str13); FPRINT_STR(Key1Str14); FPRINT_STR(Key1Str15); FPRINT_STR(Key1Str16); #endif FPRINT_STR(Key2Type); FPRINT_STR(Key2Str1); FPRINT_STR(Key2Str2); FPRINT_STR(Key2Str3); FPRINT_STR(Key2Str4); FPRINT_STR(Key2Str5); FPRINT_STR(Key2Str6); FPRINT_STR(Key2Str7); FPRINT_STR(Key2Str8); #if defined (CONFIG_16MBSSID_MODE) FPRINT_STR(Key2Str9); FPRINT_STR(Key2Str10); FPRINT_STR(Key2Str11); FPRINT_STR(Key2Str12); FPRINT_STR(Key2Str13); FPRINT_STR(Key2Str14); FPRINT_STR(Key2Str15); FPRINT_STR(Key2Str16); #endif FPRINT_STR(Key3Type); FPRINT_STR(Key3Str1); FPRINT_STR(Key3Str2); FPRINT_STR(Key3Str3); FPRINT_STR(Key3Str4); FPRINT_STR(Key3Str5); FPRINT_STR(Key3Str6); FPRINT_STR(Key3Str7); FPRINT_STR(Key3Str8); #if defined (CONFIG_16MBSSID_MODE) FPRINT_STR(Key3Str9); FPRINT_STR(Key3Str10); FPRINT_STR(Key3Str11); FPRINT_STR(Key3Str12); FPRINT_STR(Key3Str13); FPRINT_STR(Key3Str14); FPRINT_STR(Key3Str15); FPRINT_STR(Key3Str16); #endif FPRINT_STR(Key4Type); FPRINT_STR(Key4Str1); FPRINT_STR(Key4Str2); FPRINT_STR(Key4Str3); FPRINT_STR(Key4Str4); FPRINT_STR(Key4Str5); FPRINT_STR(Key4Str6); FPRINT_STR(Key4Str7); FPRINT_STR(Key4Str8); #if defined (CONFIG_16MBSSID_MODE) FPRINT_STR(Key4Str9); FPRINT_STR(Key4Str10); FPRINT_STR(Key4Str11); FPRINT_STR(Key4Str12); FPRINT_STR(Key4Str13); FPRINT_STR(Key4Str14); FPRINT_STR(Key4Str15); FPRINT_STR(Key4Str16); #endif FPRINT_NUM(HSCounter); FPRINT_NUM(HT_HTC); FPRINT_NUM(HT_RDG); FPRINT_NUM(HT_LinkAdapt); FPRINT_NUM(HT_OpMode); FPRINT_NUM(HT_MpduDensity); FPRINT_NUM(HT_EXTCHA); FPRINT_NUM(HT_BW); FPRINT_NUM(HT_AutoBA); FPRINT_NUM(HT_BADecline); FPRINT_NUM(HT_AMSDU); FPRINT_NUM(HT_BAWinSize); FPRINT_NUM(HT_GI); FPRINT_NUM(HT_STBC); FPRINT_STR(HT_MCS); FPRINT_NUM(HT_TxStream); FPRINT_NUM(HT_RxStream); FPRINT_NUM(HT_PROTECT); FPRINT_NUM(HT_DisallowTKIP); FPRINT_NUM(HT_BSSCoexistence); FPRINT_NUM(GreenAP); FPRINT_NUM(WscConfMode); //WscConfStatus if (atoi(nvram_bufget(mode, "WscConfigured")) == 0) fprintf(fp, "WscConfStatus=%d\n", 1); else fprintf(fp, "WscConfStatus=%d\n", 2); if (strcmp(nvram_bufget(mode, "WscVendorPinCode"), "") != 0) FPRINT_STR(WscVendorPinCode); FPRINT_NUM(WCNTest); #if defined CONFIG_UNIQUE_WPS FPRINT_STR(WSC_UUID_Str1); FPRINT_STR(WSC_UUID_E1); #endif FPRINT_NUM(AccessPolicy0); FPRINT_STR(AccessControlList0); FPRINT_NUM(AccessPolicy1); FPRINT_STR(AccessControlList1); FPRINT_NUM(AccessPolicy2); FPRINT_STR(AccessControlList2); FPRINT_NUM(AccessPolicy3); FPRINT_STR(AccessControlList3); FPRINT_NUM(AccessPolicy4); FPRINT_STR(AccessControlList4); FPRINT_NUM(AccessPolicy5); FPRINT_STR(AccessControlList5); FPRINT_NUM(AccessPolicy6); FPRINT_STR(AccessControlList6); FPRINT_NUM(AccessPolicy7); FPRINT_STR(AccessControlList7); #if defined (CONFIG_16MBSSID_MODE) FPRINT_NUM(AccessPolicy8); FPRINT_STR(AccessControlList8); FPRINT_NUM(AccessPolicy9); FPRINT_STR(AccessControlList9); FPRINT_NUM(AccessPolicy10); FPRINT_STR(AccessControlList10); FPRINT_NUM(AccessPolicy11); FPRINT_STR(AccessControlList11); FPRINT_NUM(AccessPolicy12); FPRINT_STR(AccessControlList12); FPRINT_NUM(AccessPolicy13); FPRINT_STR(AccessControlList13); FPRINT_NUM(AccessPolicy14); FPRINT_STR(AccessControlList14); FPRINT_NUM(AccessPolicy15); FPRINT_STR(AccessControlList15); #endif FPRINT_NUM(WdsEnable); FPRINT_STR(WdsPhyMode); FPRINT_STR(WdsEncrypType); FPRINT_STR(WdsList); FPRINT_STR(Wds0Key); FPRINT_STR(Wds1Key); FPRINT_STR(Wds2Key); FPRINT_STR(Wds3Key); FPRINT_STR(RADIUS_Server); FPRINT_STR(RADIUS_Port); FPRINT_STR(RADIUS_Key1); FPRINT_STR(RADIUS_Key2); FPRINT_STR(RADIUS_Key3); FPRINT_STR(RADIUS_Key4); FPRINT_STR(RADIUS_Key5); FPRINT_STR(RADIUS_Key6); FPRINT_STR(RADIUS_Key7); FPRINT_STR(RADIUS_Key8); #if defined (CONFIG_16MBSSID_MODE) FPRINT_STR(RADIUS_Key9); FPRINT_STR(RADIUS_Key10); FPRINT_STR(RADIUS_Key11); FPRINT_STR(RADIUS_Key12); FPRINT_STR(RADIUS_Key13); FPRINT_STR(RADIUS_Key14); FPRINT_STR(RADIUS_Key15); FPRINT_STR(RADIUS_Key16); #endif FPRINT_STR(RADIUS_Acct_Server); FPRINT_NUM(RADIUS_Acct_Port); FPRINT_STR(RADIUS_Acct_Key); FPRINT_STR(own_ip_addr); FPRINT_STR(Ethifname); FPRINT_STR(EAPifname); FPRINT_STR(PreAuthifname); FPRINT_NUM(session_timeout_interval); FPRINT_NUM(idle_timeout_interval); FPRINT_NUM(WiFiTest); FPRINT_NUM(TGnWifiTest); //AP Client parameters FPRINT_NUM(ApCliEnable); FPRINT_STR(ApCliSsid); FPRINT_STR(ApCliBssid); FPRINT_STR(ApCliAuthMode); FPRINT_STR(ApCliEncrypType); FPRINT_STR(ApCliWPAPSK); FPRINT_NUM(ApCliDefaultKeyID); FPRINT_NUM(ApCliKey1Type); FPRINT_STR(ApCliKey1Str); FPRINT_NUM(ApCliKey2Type); FPRINT_STR(ApCliKey2Str); FPRINT_NUM(ApCliKey3Type); FPRINT_STR(ApCliKey3Str); FPRINT_NUM(ApCliKey4Type); FPRINT_STR(ApCliKey4Str); //FPRINT_NUM(TempComp); //FPRINT_NUM(EfuseBufferMode); //Radio On/Off if (atoi(nvram_bufget(mode, "RadioOff")) == 1) fprintf(fp, "RadioOn=0\n"); else fprintf(fp, "RadioOn=1\n"); /* * There are no SSID/WPAPSK/Key1Str/Key2Str/Key3Str/Key4Str anymore since driver1.5 , but * STA WPS still need these entries to show the WPS result(That is the only way i know to get WPAPSK key) and * so we create empty entries here. --YY */ fprintf(fp, "SSID=\nWPAPSK=\nKey1Str=\nKey2Str=\nKey3Str=\nKey4Str=\n"); } #if defined (CONFIG_RT2561_AP) || defined (CONFIG_RT2561_AP_MODULE) if (RTDEV_NVRAM == mode) { FPRINT_NUM(CountryRegion); FPRINT_NUM(CountryRegionABand); FPRINT_STR(CountryCode); FPRINT_NUM(BssidNum); ssid_num = atoi(nvram_get(mode, "BssidNum")); FPRINT_STR(SSID); FPRINT_NUM(WirelessMode); //TxRate(FixedRate) bzero(tx_rate, sizeof(char)*12); for (i = 0; i < ssid_num; i++) { sprintf(tx_rate+strlen(tx_rate), "%d", atoi(nvram_bufget(mode, "TxRate"))); sprintf(tx_rate+strlen(tx_rate), "%c", ';'); } tx_rate[strlen(tx_rate) - 1] = '\0'; fprintf(fp, "TxRate=%s\n", tx_rate); FPRINT_NUM(Channel); FPRINT_NUM(BasicRate); FPRINT_NUM(BeaconPeriod); FPRINT_NUM(DtimPeriod); FPRINT_NUM(TxPower); FPRINT_NUM(DisableOLBC); FPRINT_NUM(BGProtection); fprintf(fp, "TxAntenna=\n"); fprintf(fp, "RxAntenna=\n"); FPRINT_NUM(TxPreamble); FPRINT_NUM(RTSThreshold ); FPRINT_NUM(FragThreshold ); FPRINT_NUM(TxBurst); FPRINT_NUM(PktAggregate); fprintf(fp, "TurboRate=0\n"); //WmmCapable bzero(wmm_enable, sizeof(char)*8); for (i = 0; i < ssid_num; i++) { sprintf(wmm_enable+strlen(wmm_enable), "%d", atoi(nvram_bufget(mode, "WmmCapable"))); sprintf(wmm_enable+strlen(wmm_enable), "%c", ';'); } wmm_enable[strlen(wmm_enable) - 1] = '\0'; fprintf(fp, "WmmCapable=%s\n", wmm_enable); FPRINT_STR(APAifsn); FPRINT_STR(APCwmin); FPRINT_STR(APCwmax); FPRINT_STR(APTxop); FPRINT_STR(APACM); FPRINT_STR(BSSAifsn); FPRINT_STR(BSSCwmin); FPRINT_STR(BSSCwmax); FPRINT_STR(BSSTxop); FPRINT_STR(BSSACM); FPRINT_STR(AckPolicy); FPRINT_STR(APSDCapable); FPRINT_STR(DLSCapable); FPRINT_STR(NoForwarding); FPRINT_NUM(NoForwardingBTNBSSID); FPRINT_STR(HideSSID); FPRINT_NUM(ShortSlot); FPRINT_NUM(AutoChannelSelect); FPRINT_NUM(MaxTxPowerLevel); FPRINT_STR(IEEE8021X); FPRINT_NUM(IEEE80211H); FPRINT_NUM(CSPeriod); FPRINT_STR(RDRegion); FPRINT_STR(PreAuth); FPRINT_STR(AuthMode); FPRINT_STR(EncrypType); /*kurtis: WAPI*/ FPRINT_STR(WapiPsk1); FPRINT_STR(WapiPskType); FPRINT_STR(Wapiifname); FPRINT_STR(WapiAsCertPath); FPRINT_STR(WapiUserCertPath); FPRINT_STR(WapiAsIpAddr); FPRINT_STR(WapiAsPort); FPRINT_NUM(RekeyInterval); FPRINT_STR(RekeyMethod); FPRINT_STR(PMKCachePeriod); FPRINT_STR(WPAPSK); FPRINT_STR(DefaultKeyID); FPRINT_STR(Key1Type); FPRINT_STR(Key1Str); FPRINT_STR(Key2Type); FPRINT_STR(Key2Str); FPRINT_STR(Key3Type); FPRINT_STR(Key3Str); FPRINT_STR(Key4Type); FPRINT_STR(Key4Str); FPRINT_NUM(HSCounter); FPRINT_NUM(AccessPolicy0); FPRINT_STR(AccessControlList0); FPRINT_NUM(AccessPolicy1); FPRINT_STR(AccessControlList1); FPRINT_NUM(AccessPolicy2); FPRINT_STR(AccessControlList2); FPRINT_NUM(AccessPolicy3); FPRINT_STR(AccessControlList3); FPRINT_NUM(WdsEnable); FPRINT_STR(WdsPhyMode); FPRINT_STR(WdsEncrypType); FPRINT_STR(WdsList); FPRINT_STR(WdsKey); FPRINT_STR(RADIUS_Server); FPRINT_STR(RADIUS_Port); FPRINT_STR(RADIUS_Key); FPRINT_STR(own_ip_addr); FPRINT_STR(Ethifname); //AP Client parameters FPRINT_NUM(ApCliEnable); FPRINT_STR(ApCliSsid); FPRINT_STR(ApCliBssid); FPRINT_STR(ApCliAuthMode); FPRINT_STR(ApCliEncrypType); FPRINT_STR(ApCliWPAPSK); FPRINT_NUM(ApCliDefaultKeyID); FPRINT_NUM(ApCliKey1Type); FPRINT_STR(ApCliKey1Str); FPRINT_NUM(ApCliKey2Type); FPRINT_STR(ApCliKey2Str); FPRINT_NUM(ApCliKey3Type); FPRINT_STR(ApCliKey3Str); FPRINT_NUM(ApCliKey4Type); FPRINT_STR(ApCliKey4Str); FPRINT_NUM(WscConfMode); //WscConfStatus if (atoi(nvram_bufget(mode, "WscConfigured")) == 0) fprintf(fp, "WscConfStatus=%d\n", 1); else fprintf(fp, "WscConfStatus=%d\n", 2); } #elif defined (CONFIG_RTDEV_PLC) if (RTDEV_NVRAM == mode) { FPRINT_STR(MacAddress); FPRINT_STR(NPW); FPRINT_STR(DPW); FPRINT_NUM(BackupCCo); FPRINT_NUM(CCo); FPRINT_NUM(UnAssoCCo); FPRINT_NUM(STA); FPRINT_NUM(UnAssoSTA); } #endif nvram_close(mode); fclose(fp); return 0; }