int main(int argc,char **argv) { pid_t pid; int fd; init_flash_sem(); printf("debug:~~~~~~~~~~~ start load default para!"); if (strcmp(nvram_bufget(RT2860_NVRAM, "WebInit"),"1")) { if (strcmp(nvram_bufget(RT2860_NVRAM, "WebInit"),"1")) { if (strcmp(nvram_bufget(RT2860_NVRAM, "WebInit"),"1")) { printf("debug:load 2860 para!"); loadDefault(2860); printf("debug:load 2860 para end!"); } } } #if defined CONFIG_INIC_MII || defined CONFIG_INIC_USB || defined CONFIG_INIC_PCI if (strcmp(nvram_bufget(RTINIC_NVRAM, "WebInit"),"1")) { loadDefault(2880); } #endif #if defined (CONFIG_RT2561_AP) || defined (CONFIG_RT2561_AP_MODULE) if (strcmp(nvram_bufget(RT2561_NVRAM, "WebInit"),"1")) { loadDefault(2561); } #endif nvram_close(RT2860_NVRAM); nvram_close(RTINIC_NVRAM); #if defined (CONFIG_RT2561_AP) || defined (CONFIG_RT2561_AP_MODULE) nvram_close(RT2561_NVRAM); #endif printf("debug:load para end!"); //close wps key it used in wpsledpbc.c // if (initGpio() != 0) // exit(EXIT_FAILURE); printf("debug:set /var/run/nvramd.pid!"); fd = pidfile_acquire("/var/run/nvramd.pid"); pidfile_write_release(fd); printf("debug:set end /var/run/nvramd.pid!"); printf("debug:nvram started!"); #ifdef CONFIG_RT2880_L2_MANAGE //start the management daemon (blocking) ramad_start(); #else while (1) { pause(); } #endif exit(EXIT_SUCCESS); }
static void QoSSetup(webs_t wp, char_t *path, char_t *query) { char *submitUrl; char_t *QoS_type = websGetVar(wp, T("QoSSelect"), T("0")); if (QoS_type == NULL) QoS_type = "0"; char_t *simpleqos = websGetVar(wp, T("simple_qos"), T("0")); if (strcmp(simpleqos, "on") != 0) simpleqos = "off"; simpleqos = (strcmp(simpleqos, "on") == 0) ? "1" : "0"; nvram_init(RT2860_NVRAM); nvram_bufset(RT2860_NVRAM, "QoSEnable", QoS_type); nvram_bufset(RT2860_NVRAM, "simple_qos", simpleqos); if (CHK_IF_DIGIT(QoS_type, 2)) setupParameters(wp, QoS_args, 0); nvram_close(RT2860_NVRAM); doSystem("service shaper restart && service iptables restart && service kext restart"); submitUrl = websGetVar(wp, T("submit-url"), T("")); // hidden page #ifdef PRINT_DEBUG if (!submitUrl || !submitUrl[0]) websDone(wp, 200); else #endif websRedirect(wp, submitUrl); }
int ra_nv_get(int argc, char *argv[]) { char *fz; char *key; char *value; int index; if (argc != 3 && argc != 2) return get_usage(argv[0]); if (argc == 2) { fz = DEFAULT_FLASH_ZONE_NAME; key = argv[1]; } else { fz = argv[1]; key = argv[2]; } if ((index = getNvramIndex(fz)) == -1) { printf("%s: Error: \"%s\" flash zone not existed\n", argv[0], fz); return get_usage(argv[0]); } nvram_init(index); printf("%s\n", nvram_bufget(index, key)); nvram_close(index); return 0; }
int ra_nv_set(int argc,char **argv) { int index, rc; char *fz, *key, *value; if (argc == 1 || argc > 5) return set_usage(argv[0]); if (argc == 2) { fz = DEFAULT_FLASH_ZONE_NAME; key = argv[1]; value = ""; } else if (argc == 3) { fz = DEFAULT_FLASH_ZONE_NAME; key = argv[1]; value = argv[2]; } else if (argc == 4) { fz = argv[1]; key = argv[2]; value = argv[3]; } if ((index = getNvramIndex(fz)) == -1) { printf("%s: Error: \"%s\" flash zone not existed\n", argv[0], fz); return set_usage(argv[0]); } nvram_init(index); rc = nvram_set(index, key, value); nvram_close(index); return rc; }
int env_save(void) { int size; unsigned char *buffer; unsigned char *buffer_end; unsigned char *ptr; queue_t *qb; cfe_envvar_t *env; int namelen; int valuelen; int flg; flg = nvram_open(); if (flg < 0) return flg; nvram_erase(); size = nvram_getsize(); buffer = KMALLOC(size,0); if (buffer == NULL) return CFE_ERR_NOMEM; buffer_end = buffer + size; ptr = buffer; for (qb = env_envvars.q_next; qb != &env_envvars; qb = qb->q_next) { env = (cfe_envvar_t *) qb; if (env->flags & (ENV_FLG_BUILTIN)) continue; namelen = strlen(env->name); valuelen = strlen(env->value); if ((ptr + 2 + namelen + valuelen + 1 + 1 + 1) > buffer_end) break; *ptr++ = ENV_TLV_TYPE_ENV; /* TLV record type */ *ptr++ = (namelen + valuelen + 1 + 1); /* TLV record length */ *ptr++ = (unsigned char)env->flags; memcpy(ptr,env->name,namelen); /* TLV record data */ ptr += namelen; *ptr++ = '='; memcpy(ptr,env->value,valuelen); ptr += valuelen; } *ptr++ = ENV_TLV_TYPE_END; size = nvram_write(buffer,0,ptr-buffer); KFREE(buffer); nvram_close(); return (size == (ptr-buffer)) ? 0 : CFE_ERR_IOERR; }
void nvram_open(uint8_t mode) { if (_mode != NVRAM_MODE_CLOSED) nvram_close(); _address = (char *)FLASH_WRITE_ADDR; _mode = mode; if (_mode == NVRAM_MODE_WRITE) { FLASH_Unlock(); FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR); FLASH_ErasePage(FLASH_WRITE_ADDR); _flash_word = 0; _flash_word_idx = 0; } }
const char *nvram_get(int index, char *name) { //LIBNV_PRINT("--> nvram_get\n"); #ifdef CONFIG_KERNEL_NVRAM /* Get the fresh value from Kernel NVRAM moduel, * so there is no need to do nvram_close() and nvram_init() again */ //nvram_close(index); //nvram_init(index); #else nvram_close(index); nvram_init(index); #endif return nvram_bufget(index, name); }
/* * clear flash by writing all 1's value */ int nvram_clear(int index) { int fd; char fname[64]; LIBNV_PRINT("--> nvram_clear %d\n", index); LIBNV_CHECK_INDEX(-1); nvram_close(index); sprintf(fname, "%s/%s", NV_DEV, fb[index].name); fd = open(fname, O_WRONLY); if (fd < 0) { perror(NV_DEV); return -1; } //construct all 1s env block write(fd, "\0", 1); close(fd); fb[index].dirty = 0; return 0; }
int main( int argc, const char *argv[] ) { nvram_handle_t *nvram; int commit = 0; int write = 0; int stat = 1; int done = 0; int i; /* Ugly... iterate over arguments to see whether we can expect a write */ for( i = 1; i < argc; i++ ) if( ( !strcmp(argv[i], "set") && ++i < argc ) || ( !strcmp(argv[i], "unset") && ++i < argc ) || !strcmp(argv[i], "commit") ) { write = 1; break; } nvram = write ? nvram_open_staging() : nvram_open_rdonly(); if( nvram != NULL && argc > 1 ) { for( i = 1; i < argc; i++ ) { if( !strcmp(argv[i], "show") ) { stat = do_show(nvram); done++; } else if( !strcmp(argv[i], "info") ) { stat = do_info(nvram); done++; } else if( !strcmp(argv[i], "get") || !strcmp(argv[i], "unset") || !strcmp(argv[i], "set") ) { if( (i+1) < argc ) { switch(argv[i++][0]) { case 'g': stat = do_get(nvram, argv[i]); break; case 'u': stat = do_unset(nvram, argv[i]); break; case 's': stat = do_set(nvram, argv[i]); break; } done++; } else { fprintf(stderr, "Command '%s' requires an argument!\n", argv[i]); done = 0; break; } } else if( !strcmp(argv[i], "commit") ) { commit = 1; done++; } else { fprintf(stderr, "Unknown option '%s' !\n", argv[i]); done = 0; break; } } if( write ) stat = nvram_commit(nvram); nvram_close(nvram); if( commit ) stat = staging_to_nvram(); } if( !nvram ) { fprintf(stderr, "Could not open nvram! Possible reasons are:\n" " - No device found (/proc not mounted or no nvram present)\n" " - Insufficient permissions to open mtd device\n" " - Insufficient memory to complete operation\n" " - Memory mapping failed or not supported\n" ); stat = 1; } else if( !done ) { fprintf(stderr, "Usage:\n" " nvram show\n" " nvram info\n" " nvram get variable\n" " nvram set variable=value [set ...]\n" " nvram unset variable [unset ...]\n" " nvram commit\n" ); stat = 1; } return stat; }
int env_load(void) { int size; unsigned char *buffer; unsigned char *ptr; unsigned char *envval; unsigned int reclen; unsigned int rectype; int offset; int flg; int retval = -1; char valuestr[256]; /* * If in 'safe mode', don't read the environment the first time. */ if (cfe_startflags & CFE_INIT_SAFE) { cfe_startflags &= ~CFE_INIT_SAFE; return 0; } flg = nvram_open(); if (flg < 0) return flg; size = nvram_getsize(); buffer = KMALLOC(size,0); if (buffer == NULL) return CFE_ERR_NOMEM; ptr = buffer; offset = 0; /* Read the record type and length */ if (nvram_read(ptr,offset,1) != 1) { retval = CFE_ERR_IOERR; goto error; } while ((*ptr != ENV_TLV_TYPE_END) && (size > 1)) { /* Adjust pointer for TLV type */ rectype = *(ptr); offset++; size--; /* * Read the length. It can be either 1 or 2 bytes * depending on the code */ if (rectype & ENV_LENGTH_8BITS) { /* Read the record type and length - 8 bits */ if (nvram_read(ptr,offset,1) != 1) { retval = CFE_ERR_IOERR; goto error; } reclen = *(ptr); size--; offset++; } else { /* Read the record type and length - 16 bits, MSB first */ if (nvram_read(ptr,offset,2) != 2) { retval = CFE_ERR_IOERR; goto error; } reclen = (((unsigned int) *(ptr)) << 8) + (unsigned int) *(ptr+1); size -= 2; offset += 2; } if (reclen > size) break; /* should not happen, bad NVRAM */ switch (rectype) { case ENV_TLV_TYPE_ENV: /* Read the TLV data */ if (nvram_read(ptr,offset,reclen) != reclen) goto error; flg = *ptr++; envval = (unsigned char *) strnchr(ptr,'=',(reclen-1)); if (envval) { *envval++ = '\0'; memcpy(valuestr,envval,(reclen-1)-(envval-ptr)); valuestr[(reclen-1)-(envval-ptr)] = '\0'; env_setenv(ptr,valuestr,flg); } break; default: /* Unknown TLV type, skip it. */ break; } /* * Advance to next TLV */ size -= (int)reclen; offset += reclen; /* Read the next record type */ ptr = buffer; if (nvram_read(ptr,offset,1) != 1) goto error; } retval = 0; /* success! */ error: KFREE(buffer); nvram_close(); return retval; }
int renew_nvram(int mode, char *fname) { FILE *fp; #define BUFSZ 1024 unsigned char buf[BUFSZ], *p; unsigned char wan_mac[32]; int found = 0, need_commit = 0; if (NULL == (fp = fopen(fname, "ro"))) { perror("fopen"); return -1; } //find "Default" first while (NULL != fgets(buf, BUFSZ, fp)) { if (buf[0] == '\n' || buf[0] == '#') continue; if (!strncmp(buf, "Default\n", 8)) { found = 1; break; } } if (!found) { printf("file format error!\n"); fclose(fp); return -1; } nvram_init(mode); while (NULL != fgets(buf, BUFSZ, fp)) { if (buf[0] == '\n' || buf[0] == '#') continue; if (NULL == (p = strchr(buf, '='))) { if (need_commit) nvram_commit(mode); printf("%s file format error!\n", fname); fclose(fp); return -1; } buf[strlen(buf) - 1] = '\0'; //remove carriage return *p++ = '\0'; //seperate the string //printf("bufset %d '%s'='%s'\n", mode, buf, p); nvram_bufset(mode, buf, p); need_commit = 1; } //Get wan port mac address, please refer to eeprom format doc //0x30000=user configure, 0x32000=rt2860 parameters, 0x40000=RF parameter flash_read_mac(buf); sprintf(wan_mac,"%0X:%0X:%0X:%0X:%0X:%0X\n",buf[0],buf[1],buf[2],buf[3],buf[4],buf[5]); nvram_bufset(RT2860_NVRAM, "WAN_MAC_ADDR", wan_mac); need_commit = 1; if (need_commit) nvram_commit(mode); nvram_close(mode); fclose(fp); return 0; }
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; }