#include
#include
#include
#include
#include
#include
struct BootInfo Bootrecord = {
"192.168.1.50", /* Default IP address */
"192.168.1.1", /* Default Gateway */
"192.168.1.5", /* Default Timer Server */
"192.168.1.6", /* Default File Server - Not currently Used */
"",
"192.168.1.7", /* Default Name Server */
"",
0xffffff00UL /* Default Subnet Mask */
};
extern Webpage website[];
static char *mail_name="mail";
static char *tftpdemo_name="tftpdemo";
static char *fred_name="fred";
void x_fred()
{
kprintf("Cool!\r\n");
}
main()
{
int fd;
struct cmdent *mycmds;
mycmds=(struct cmdent *) getmem(sizeof(struct cmdent)* 3);
/* Set up mail and tftpdemo commands */
mycmds[0].cmdnam = mail_name;
mycmds[0].cbuiltin = TRUE;
mycmds[0].cproc = (SHELL_CMD)x_mail;
mycmds[0].cnext=(struct cmdent *)NULL;
mycmds[1].cmdnam = tftpdemo_name;
mycmds[1].cbuiltin = TRUE;
mycmds[1].cproc = (SHELL_CMD)x_tftpdemo;
mycmds[1].cnext=(struct cmdent *)NULL;
mycmds[2].cmdnam = fred_name;
mycmds[2].cbuiltin = TRUE;
mycmds[2].cproc = (SHELL_CMD)x_fred;
mycmds[2].cnext=(struct cmdent *)NULL;
kprintf("\nWebserver Demo\n");
telnet_init();
http_init(http_defmethods,httpdefheaders,website,80);
snmp_init();
shell_add_commands(mycmds, 3);
open(SERIAL0, 0,0);
if ((fd=open(TTY, (char *)SERIAL0,0)) == SYSERR)
{
kprintf("Can't open tty for SERIAL0\n");
return SYSERR;
}
kprintf("Starting up a shell on device %d\n", fd );
shell_init(fd);
}
Listing 2—There’s lots of
functionality here that was assembled with very little code.