diff options
Diffstat (limited to 'main/common/cmdtbl.c')
-rw-r--r-- | main/common/cmdtbl.c | 548 |
1 files changed, 278 insertions, 270 deletions
diff --git a/main/common/cmdtbl.c b/main/common/cmdtbl.c index e2010c0..858300c 100644 --- a/main/common/cmdtbl.c +++ b/main/common/cmdtbl.c @@ -1,7 +1,7 @@ /************************************************************************** * * Copyright (c) 2013 Alcatel-Lucent - * + * * Alcatel Lucent licenses this file to You under the Apache License, * Version 2.0 (the "License"); you may not use this file except in * compliance with the License. A copy of the License is contained the @@ -31,7 +31,7 @@ #include "genlib.h" #include "xcmddcl.h" -#define ULVLCMD "ulvl" +#define ULVLCMD "ulvl" #if INCLUDE_MEMCMDS #define INCLUDE_PM 1 @@ -42,443 +42,451 @@ #define INCLUDE_MT 1 #endif -extern int Arp(int, char **); -extern int BbcCmd(int, char **); -extern int BinfoCmd(int, char **); -extern int BmemCmd(int, char **); -extern int Call(int, char **); -extern int Cast(int, char **); -extern int Cm(int, char **); -extern int CfCmd(int, char **); -extern int Dis(int, char **); -extern int Dm(int, char **); -extern int Dhcp(int, char **); -extern int DnsCmd(int, char **); -extern int Echo(int, char **); -extern int Edit(int, char **); -extern int Ether(int, char **); -extern int Exit(int, char **); -extern int FatfsCmd(int, char **); -extern int FbiCmd(int, char **); -extern int FlashCmd(int, char **); -extern int Fm(int, char **); -extern int Gdb(int, char **); -extern int Goto(int, char **); -extern int Gosub(int, char **); -extern int Heap(int, char **); -extern int Help(int, char **); -extern int History(int, char **); -extern int Icmp(int, char **); -extern int Ide(int, char **); -extern int I2cCmd(int, char **); -extern int If(int, char **); -extern int Igmp(int, char **); -extern int Item(int, char **); -extern int Jffs2Cmd(int, char **); -extern int Mt(int, char **); -extern int MtraceCmd(int, char **); -extern int Pm(int, char **); -extern int Prof(int, char **); -extern int Read(int, char **); -extern int Reg(int, char **); -extern int Reset(int, char **); -extern int Return(int, char **); -extern int SdCmd(int, char **); -extern int Set(int, char **); -extern int Sleep(int, char **); -extern int Sm(int, char **); -extern int SpifCmd(int, char **); -extern int Strace(int, char **); -extern int StructCmd(int, char **); -extern int SyslogCmd(int, char **); -extern int Tfs(int, char **); -extern int Tftp(int, char **); -extern int TsiCmd(int, char **); -extern int Ulvl(int, char **); -extern int Unzip(int, char **); -extern int Version(int, char **); -extern int WhatCmd(int, char **); -extern int Xmodem(int, char **); - -extern char *ArpHelp[]; +extern int Arp(int, char **); +extern int BbcCmd(int, char **); +extern int BinfoCmd(int, char **); +extern int BmemCmd(int, char **); +extern int Call(int, char **); +extern int Cast(int, char **); +extern int Cm(int, char **); +extern int CfCmd(int, char **); +extern int Dis(int, char **); +extern int Dm(int, char **); +extern int Dhcp(int, char **); +extern int DnsCmd(int, char **); +extern int Echo(int, char **); +extern int Edit(int, char **); +extern int Ether(int, char **); +extern int Exit(int, char **); +extern int FatfsCmd(int, char **); +extern int FbiCmd(int, char **); +extern int FlashCmd(int, char **); +extern int Fm(int, char **); +extern int Gdb(int, char **); +extern int Goto(int, char **); +extern int Gosub(int, char **); +extern int Heap(int, char **); +extern int Help(int, char **); +extern int History(int, char **); +extern int Icmp(int, char **); +extern int Ide(int, char **); +extern int I2cCmd(int, char **); +extern int If(int, char **); +extern int Igmp(int, char **); +extern int Item(int, char **); +extern int Jffs2Cmd(int, char **); +extern int Mt(int, char **); +extern int MtraceCmd(int, char **); +extern int Pm(int, char **); +extern int Prof(int, char **); +extern int Read(int, char **); +extern int Reg(int, char **); +extern int Reset(int, char **); +extern int Return(int, char **); +extern int SdCmd(int, char **); +extern int Set(int, char **); +extern int Sleep(int, char **); +extern int Sm(int, char **); +extern int SpifCmd(int, char **); +extern int Strace(int, char **); +extern int StructCmd(int, char **); +extern int SyslogCmd(int, char **); +extern int Tfs(int, char **); +extern int Tftp(int, char **); +extern int TsiCmd(int, char **); +extern int Ulvl(int, char **); +extern int Unzip(int, char **); +extern int Version(int, char **); +extern int WhatCmd(int, char **); +extern int Xmodem(int, char **); + +extern char *ArpHelp[]; extern char *BbcHelp[]; extern char *BinfoHelp[]; extern char *BmemHelp[]; -extern char *CallHelp[]; +extern char *CallHelp[]; extern char *CastHelp[]; -extern char *CfHelp[]; -extern char *CmHelp[]; -extern char *DisHelp[]; -extern char *DhcpHelp[]; +extern char *CfHelp[]; +extern char *CmHelp[]; +extern char *DisHelp[]; +extern char *DhcpHelp[]; extern char *DmHelp[]; extern char *DnsHelp[]; -extern char *EchoHelp[]; -extern char *EditHelp[]; -extern char *EtherHelp[]; -extern char *ExitHelp[]; -extern char *FatfsHelp[]; -extern char *FbiHelp[]; -extern char *FlashHelp[]; -extern char *FmHelp[]; +extern char *EchoHelp[]; +extern char *EditHelp[]; +extern char *EtherHelp[]; +extern char *ExitHelp[]; +extern char *FatfsHelp[]; +extern char *FbiHelp[]; +extern char *FlashHelp[]; +extern char *FmHelp[]; extern char *GdbHelp[]; -extern char *GosubHelp[]; -extern char *GotoHelp[]; -extern char *HelpHelp[]; +extern char *GosubHelp[]; +extern char *GotoHelp[]; +extern char *HelpHelp[]; extern char *HeapHelp[]; -extern char *HistoryHelp[]; -extern char *IcmpHelp[]; +extern char *HistoryHelp[]; +extern char *IcmpHelp[]; extern char *IdeHelp[]; extern char *I2cHelp[]; -extern char *IfHelp[]; +extern char *IfHelp[]; extern char *IgmpHelp[]; -extern char *ItemHelp[]; -extern char *Jffs2Help[]; -extern char *MtHelp[]; +extern char *ItemHelp[]; +extern char *Jffs2Help[]; +extern char *MtHelp[]; extern char *MtraceHelp[]; -extern char *PmHelp[]; -extern char *ProfHelp[]; -extern char *ReadHelp[]; -extern char *RegHelp[]; -extern char *ResetHelp[]; -extern char *ReturnHelp[]; -extern char *SdHelp[]; -extern char *SetHelp[]; -extern char *SleepHelp[]; -extern char *SmHelp[]; -extern char *SpifHelp[]; -extern char *StraceHelp[]; -extern char *StructHelp[]; +extern char *PmHelp[]; +extern char *ProfHelp[]; +extern char *ReadHelp[]; +extern char *RegHelp[]; +extern char *ResetHelp[]; +extern char *ReturnHelp[]; +extern char *SdHelp[]; +extern char *SetHelp[]; +extern char *SleepHelp[]; +extern char *SmHelp[]; +extern char *SpifHelp[]; +extern char *StraceHelp[]; +extern char *StructHelp[]; extern char *SyslogHelp[]; -extern char *TfsHelp[]; -extern char *TftpHelp[]; -extern char *TsiHelp[]; -extern char *UlvlHelp[]; +extern char *TfsHelp[]; +extern char *TftpHelp[]; +extern char *TsiHelp[]; +extern char *UlvlHelp[]; extern char *UnzipHelp[]; -extern char *VersionHelp[]; -extern char *WhatHelp[]; -extern char *XmodemHelp[]; +extern char *VersionHelp[]; +extern char *WhatHelp[]; +extern char *XmodemHelp[]; struct monCommand cmdlist[] = { #if INCLUDE_ETHERNET - { "arp", Arp, ArpHelp, CMDFLAG_NOMONRC }, + { "arp", Arp, ArpHelp, CMDFLAG_NOMONRC }, #endif #if INCLUDE_BBC - { "bbc", BbcCmd, BbcHelp, 0 }, + { "bbc", BbcCmd, BbcHelp, 0 }, #endif #if INCLUDE_BMEM - { "bmem", BmemCmd, BmemHelp, 0 }, + { "bmem", BmemCmd, BmemHelp, 0 }, #endif #if INCLUDE_BOARDINFO - { "brdinfo", BinfoCmd, BinfoHelp, 0 }, + { "brdinfo", BinfoCmd, BinfoHelp, 0 }, #endif - { "call", Call, CallHelp, CMDFLAG_NOMONRC }, + { "call", Call, CallHelp, CMDFLAG_NOMONRC }, #if INCLUDE_CAST - { "cast", Cast, CastHelp, 0 }, + { "cast", Cast, CastHelp, 0 }, #endif #if INCLUDE_CF - { "cf", CfCmd, CfHelp, 0 }, + { "cf", CfCmd, CfHelp, 0 }, #endif #if INCLUDE_CM - { "cm", Cm, CmHelp, 0 }, + { "cm", Cm, CmHelp, 0 }, #endif #if INCLUDE_DHCPBOOT - { "dhcp", Dhcp, DhcpHelp, CMDFLAG_NOMONRC }, + { "dhcp", Dhcp, DhcpHelp, CMDFLAG_NOMONRC }, #endif #if INCLUDE_DISASSEMBLER - { "dis", Dis, DisHelp, 0 }, + { "dis", Dis, DisHelp, 0 }, #endif #if INCLUDE_DM - { "dm", Dm, DmHelp, 0 }, + { "dm", Dm, DmHelp, 0 }, #endif #if INCLUDE_DNS - { "dns", DnsCmd, DnsHelp, 0 }, + { "dns", DnsCmd, DnsHelp, 0 }, #endif #if INCLUDE_TFSSCRIPT - { "echo", Echo, EchoHelp, 0 }, + { "echo", Echo, EchoHelp, 0 }, #endif #if INCLUDE_EDIT - { "edit", Edit, EditHelp, 0 }, + { "edit", Edit, EditHelp, 0 }, #endif #if INCLUDE_ETHERNET - { "ether", Ether, EtherHelp, CMDFLAG_NOMONRC }, + { "ether", Ether, EtherHelp, CMDFLAG_NOMONRC }, #endif #if INCLUDE_TFSSCRIPT - { "exit", Exit, ExitHelp, 0 }, + { "exit", Exit, ExitHelp, 0 }, #endif #if INCLUDE_FATFS - { "fatfs", FatfsCmd, FatfsHelp, 0 }, + { "fatfs", FatfsCmd, FatfsHelp, 0 }, #endif #if INCLUDE_FBI - { "fbi", FbiCmd, FbiHelp, 0 }, + { "fbi", FbiCmd, FbiHelp, 0 }, #endif #if INCLUDE_FLASH - { "flash", FlashCmd, FlashHelp, 0 }, + { "flash", FlashCmd, FlashHelp, 0 }, #endif #if INCLUDE_FM - { "fm", Fm, FmHelp, 0 }, + { "fm", Fm, FmHelp, 0 }, #endif #if INCLUDE_GDB - { "gdb", Gdb, GdbHelp, CMDFLAG_NOMONRC }, + { "gdb", Gdb, GdbHelp, CMDFLAG_NOMONRC }, #endif #if INCLUDE_TFSSCRIPT - { "gosub", Gosub, GosubHelp, 0 }, - { "goto", Goto, GotoHelp, 0 }, + { "gosub", Gosub, GosubHelp, 0 }, + { "goto", Goto, GotoHelp, 0 }, #endif #if INCLUDE_MALLOC - { "heap", Heap, HeapHelp, 0 }, + { "heap", Heap, HeapHelp, 0 }, #endif - { "help", Help, HelpHelp, 0 }, - { "?", Help, HelpHelp, 0 }, + { "help", Help, HelpHelp, 0 }, + { "?", Help, HelpHelp, 0 }, #if INCLUDE_LINEEDIT - { "history", History, HistoryHelp, 0 }, + { "history", History, HistoryHelp, 0 }, #endif #if INCLUDE_I2C - { "i2c", I2cCmd, I2cHelp, 0 }, + { "i2c", I2cCmd, I2cHelp, 0 }, #endif #if INCLUDE_ICMP - { "icmp", Icmp, IcmpHelp, CMDFLAG_NOMONRC }, + { "icmp", Icmp, IcmpHelp, CMDFLAG_NOMONRC }, #endif #if INCLUDE_IDE - { "ide", Ide, IdeHelp, CMDFLAG_NOMONRC }, + { "ide", Ide, IdeHelp, CMDFLAG_NOMONRC }, #endif #if INCLUDE_IGMP - { "igmp", Igmp, IgmpHelp, CMDFLAG_NOMONRC }, + { "igmp", Igmp, IgmpHelp, CMDFLAG_NOMONRC }, #endif #if INCLUDE_TFSSCRIPT - { "if", If, IfHelp, 0 }, + { "if", If, IfHelp, 0 }, #endif #if INCLUDE_TFSSCRIPT - { "item", Item, ItemHelp, 0 }, + { "item", Item, ItemHelp, 0 }, #endif #if INCLUDE_JFFS2 - { "jffs2", Jffs2Cmd, Jffs2Help, 0 }, + { "jffs2", Jffs2Cmd, Jffs2Help, 0 }, #endif #if INCLUDE_MT - { "mt", Mt, MtHelp, 0 }, + { "mt", Mt, MtHelp, 0 }, #endif #if INCLUDE_MEMTRACE - { "mtrace", MtraceCmd, MtraceHelp, 0 }, + { "mtrace", MtraceCmd, MtraceHelp, 0 }, #endif #if INCLUDE_PM - { "pm", Pm, PmHelp, 0 }, + { "pm", Pm, PmHelp, 0 }, #endif #if INCLUDE_PROFILER - { "prof", Prof, ProfHelp, 0 }, + { "prof", Prof, ProfHelp, 0 }, #endif #if INCLUDE_TFSSCRIPT - { "read", Read, ReadHelp, 0 }, + { "read", Read, ReadHelp, 0 }, #endif #if INCLUDE_STRACE - { "reg", Reg, RegHelp, 0 }, + { "reg", Reg, RegHelp, 0 }, #endif - { "reset", Reset, ResetHelp, 0 }, + { "reset", Reset, ResetHelp, 0 }, #if INCLUDE_TFSSCRIPT - { "return", Return, ReturnHelp, 0 }, + { "return", Return, ReturnHelp, 0 }, #endif #if INCLUDE_SD - { "sd", SdCmd, SdHelp, 0 }, + { "sd", SdCmd, SdHelp, 0 }, #endif - { "set", Set, SetHelp, 0 }, + { "set", Set, SetHelp, 0 }, #if INCLUDE_TFSSCRIPT - { "sleep", Sleep, SleepHelp, 0 }, + { "sleep", Sleep, SleepHelp, 0 }, #endif #if INCLUDE_SM - { "sm", Sm, SmHelp, 0 }, + { "sm", Sm, SmHelp, 0 }, #endif #if INCLUDE_SPIF - { "spif", SpifCmd, SpifHelp, 0 }, + { "spif", SpifCmd, SpifHelp, 0 }, #endif #if INCLUDE_STRACE - { "strace", Strace, StraceHelp, 0 }, + { "strace", Strace, StraceHelp, 0 }, #endif #if INCLUDE_STRUCT - { "struct", StructCmd, StructHelp, 0 }, + { "struct", StructCmd, StructHelp, 0 }, #endif #if INCLUDE_SYSLOG - { "syslog", SyslogCmd, SyslogHelp, CMDFLAG_NOMONRC }, + { "syslog", SyslogCmd, SyslogHelp, CMDFLAG_NOMONRC }, #endif #if INCLUDE_USRLVL - { ULVLCMD, Ulvl, UlvlHelp, 0 }, + { ULVLCMD, Ulvl, UlvlHelp, 0 }, #endif #if INCLUDE_TFTP - { "tftp", Tftp, TftpHelp, CMDFLAG_NOMONRC }, + { "tftp", Tftp, TftpHelp, CMDFLAG_NOMONRC }, #endif #if INCLUDE_TFSCLI - { "tfs", Tfs, TfsHelp, 0 }, + { "tfs", Tfs, TfsHelp, 0 }, #endif #if INCLUDE_TSI - { "tsi", TsiCmd, TsiHelp, 0 }, + { "tsi", TsiCmd, TsiHelp, 0 }, #endif #if INCLUDE_UNZIP - { "unzip", Unzip, UnzipHelp, 0 }, + { "unzip", Unzip, UnzipHelp, 0 }, #endif #if INCLUDE_XMODEM - { "xmodem", Xmodem, XmodemHelp, 0 }, + { "xmodem", Xmodem, XmodemHelp, 0 }, #endif - { "version", Version, VersionHelp, 0 }, + { "version", Version, VersionHelp, 0 }, #if INCLUDE_TFS - { "what", WhatCmd, WhatHelp, 0 }, + { "what", WhatCmd, WhatHelp, 0 }, #endif -#include "xcmdtbl.h" /* For non-generic commands that are */ - /* specific to a particular target. */ - { 0,0,0,0 }, +#include "xcmdtbl.h" /* For non-generic commands that are */ + /* specific to a particular target. */ + { 0,0,0,0 }, }; #if INCLUDE_USRLVL /* cmdUlvl[]: - * This table stores one char per command that contains that command's - * user level. The default user level of all commands is 0, but can - * be re-defined by the ulvl -c command. + * This table stores one char per command that contains that command's + * user level. The default user level of all commands is 0, but can + * be re-defined by the ulvl -c command. */ char cmdUlvl[(sizeof(cmdlist)/sizeof(struct monCommand))]; /* setCmdUlvl(): - * The incoming string is a command name followed by a comma and a user - * level (ranging from 0 thru 4). - * Return 0 if pass, 1 if new level was user-level rejected, -1 if error. + * The incoming string is a command name followed by a comma and a user + * level (ranging from 0 thru 4). + * Return 0 if pass, 1 if new level was user-level rejected, -1 if error. */ int setCmdUlvl(char *cmdlvl, int verbose) { - extern char *appcmdUlvl; - extern struct monCommand *appCmdlist; - struct monCommand *cptr; - int newlevel, idx, pass, doall; - char *comma, *lvlptr, buffer[32], *cmdandlevel; - - /* Make a copy of the incoming string so that we can - * modify it... - */ - if (strlen(cmdlvl) > (sizeof(buffer)-1)) - goto showerr; - - strcpy(buffer,cmdlvl); - cmdandlevel = buffer; - - /* First verify that the comma is in the string... */ - comma = strchr(cmdandlevel,','); - if (!comma) - goto showerr; - - /* Retrieve and verify the new level to be assigned... - * If the level value is the string "off", then we assign a level - * value that is greater than MAXUSRLEVEL so that the command is - * essentially disabled as a built-in. - */ - if (strcmp(comma+1,"off") == 0) { - newlevel = MAXUSRLEVEL+1; - } - else { - newlevel = atoi(comma+1); - if ((newlevel < MINUSRLEVEL) || (newlevel > MAXUSRLEVEL)) - goto showerr; - } - - *comma = 0; - - /* Don't allow adjustment of the ulvl command itself. It must be - * able to run as user level 0 all the time... - */ - if (!strcmp(cmdandlevel,ULVLCMD)) { - printf("Can't adjust '%s' user level.\n",ULVLCMD); - return(-1); - } - - if (appCmdlist) { - pass = 0; - cptr = appCmdlist; - lvlptr = appcmdUlvl; - } - else { - pass = 1; - cptr = cmdlist; - lvlptr = cmdUlvl; - } - - /* If the command string is "ALL" then we set all commands - * to the requested level. - */ - if (!strcmp(cmdandlevel,"ALL")) - doall = 1; - else - doall = 0; - - while(pass < 2) { - if ((cptr == cmdlist) && (cmdandlevel[0] == '_')) - cmdandlevel++; - - /* Find the command in the table that is to be adjusted... */ - for(idx=0;cptr->name;cptr++,idx++) { - if (doall || (!strcmp(cmdandlevel,cptr->name))) { - /* Even with doall set, we don't want to touch - * the ULVLCMD level... - */ - if (doall && !strcmp(cptr->name,ULVLCMD)) - continue; - - /* If the command's user level is to be lowered, then the - * current monitor userlevel must be at least as high as the - * command's current user level... - */ - if ((newlevel < lvlptr[idx]) && (getUsrLvl() < lvlptr[idx])) { - if (verbose) - printf("User-level access denied: %s\n",cmdandlevel); - return(1); - } - lvlptr[idx] = newlevel; - if (!doall) - return(0); - } - } - cptr = cmdlist; - lvlptr = cmdUlvl; - pass++; - } - - if (doall) - return(0); + extern char *appcmdUlvl; + extern struct monCommand *appCmdlist; + struct monCommand *cptr; + int newlevel, idx, pass, doall; + char *comma, *lvlptr, buffer[32], *cmdandlevel; + + /* Make a copy of the incoming string so that we can + * modify it... + */ + if(strlen(cmdlvl) > (sizeof(buffer)-1)) { + goto showerr; + } + + strcpy(buffer,cmdlvl); + cmdandlevel = buffer; + + /* First verify that the comma is in the string... */ + comma = strchr(cmdandlevel,','); + if(!comma) { + goto showerr; + } + + /* Retrieve and verify the new level to be assigned... + * If the level value is the string "off", then we assign a level + * value that is greater than MAXUSRLEVEL so that the command is + * essentially disabled as a built-in. + */ + if(strcmp(comma+1,"off") == 0) { + newlevel = MAXUSRLEVEL+1; + } else { + newlevel = atoi(comma+1); + if((newlevel < MINUSRLEVEL) || (newlevel > MAXUSRLEVEL)) { + goto showerr; + } + } + + *comma = 0; + + /* Don't allow adjustment of the ulvl command itself. It must be + * able to run as user level 0 all the time... + */ + if(!strcmp(cmdandlevel,ULVLCMD)) { + printf("Can't adjust '%s' user level.\n",ULVLCMD); + return(-1); + } + + if(appCmdlist) { + pass = 0; + cptr = appCmdlist; + lvlptr = appcmdUlvl; + } else { + pass = 1; + cptr = cmdlist; + lvlptr = cmdUlvl; + } + + /* If the command string is "ALL" then we set all commands + * to the requested level. + */ + if(!strcmp(cmdandlevel,"ALL")) { + doall = 1; + } else { + doall = 0; + } + + while(pass < 2) { + if((cptr == cmdlist) && (cmdandlevel[0] == '_')) { + cmdandlevel++; + } + + /* Find the command in the table that is to be adjusted... */ + for(idx=0; cptr->name; cptr++,idx++) { + if(doall || (!strcmp(cmdandlevel,cptr->name))) { + /* Even with doall set, we don't want to touch + * the ULVLCMD level... + */ + if(doall && !strcmp(cptr->name,ULVLCMD)) { + continue; + } + + /* If the command's user level is to be lowered, then the + * current monitor userlevel must be at least as high as the + * command's current user level... + */ + if((newlevel < lvlptr[idx]) && (getUsrLvl() < lvlptr[idx])) { + if(verbose) { + printf("User-level access denied: %s\n",cmdandlevel); + } + return(1); + } + lvlptr[idx] = newlevel; + if(!doall) { + return(0); + } + } + } + cptr = cmdlist; + lvlptr = cmdUlvl; + pass++; + } + + if(doall) { + return(0); + } showerr: - if (verbose) - printf("Input error: %s\n",cmdlvl); - return(-1); + if(verbose) { + printf("Input error: %s\n",cmdlvl); + } + return(-1); } #endif |