summaryrefslogtreecommitdiff
path: root/sys/pc98/boot/netboot/bootmenu.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/pc98/boot/netboot/bootmenu.c')
-rw-r--r--sys/pc98/boot/netboot/bootmenu.c377
1 files changed, 0 insertions, 377 deletions
diff --git a/sys/pc98/boot/netboot/bootmenu.c b/sys/pc98/boot/netboot/bootmenu.c
deleted file mode 100644
index 4ec2106bdf00..000000000000
--- a/sys/pc98/boot/netboot/bootmenu.c
+++ /dev/null
@@ -1,377 +0,0 @@
-/**************************************************************************
-NETBOOT - BOOTP/TFTP Bootstrap Program
-
-Author: Martin Renters
- Date: Dec/93
-
-**************************************************************************/
-#include "netboot.h"
-
-extern struct nfs_diskless nfsdiskless;
-extern int hostnamelen;
-extern unsigned long netmask;
-extern eth_reset();
-extern short aui;
-extern int howto;
-
-int cmd_ip(), cmd_server(), cmd_kernel(), cmd_help(), exit();
-int cmd_rootfs(), cmd_swapfs(), cmd_interface(), cmd_hostname();
-int cmd_netmask(), cmd_swapsize(), cmd_swapopts(), cmd_rootopts();
-int cmd_aui(), cmd_gateway(), cmd_flags();
-
-struct bootcmds_t {
- char *name;
- int (*func)();
- char *help;
-} bootcmds[] = {
- {"?", cmd_help, " this list"},
- {"help", cmd_help, " this list"},
- {"ip", cmd_ip, "<addr> set my IP addr"},
- {"server", cmd_server, "<addr> set TFTP server IP addr"},
- {"gateway", cmd_gateway, "<addr> set default router"},
- {"netmask", cmd_netmask, "<addr> set network mask"},
- {"hostname", cmd_hostname, "<name> set hostname"},
- {"kernel", cmd_kernel, "<file> set boot filename"},
- {"rootfs", cmd_rootfs, "[ip:]/fs set root filesystem"},
- {"swapfs", cmd_swapfs, "[ip:]/fs set swap filesystem"},
- {"swapsize", cmd_swapsize, "<nblks> set swap size"},
- {"swapopts", cmd_swapopts, "<options> swap mount options"},
- {"rootopts", cmd_rootopts, "<options> root mount options"},
- {"diskboot", exit, " boot from disk"},
- {"autoboot", NULL, " continue"},
- {"trans", cmd_aui, "<on|off> turn transceiver on|off"},
- {"flags", cmd_flags, "[bcdghsv] set boot flags"},
- {NULL, NULL, NULL}
-};
-
-/**************************************************************************
-CMD_HELP - Display help screen
-**************************************************************************/
-cmd_help()
-{
- struct bootcmds_t *cmd = bootcmds;
- printf("\n");
- while (cmd->name) {
- printf("%s %s\n",cmd->name,cmd->help);
- cmd++;
- }
-}
-
-/**************************************************************************
-CMD_IP - Set my IP address
-**************************************************************************/
-cmd_ip(p)
- char *p;
-{
- int i;
- if (!setip(p, &arptable[ARP_CLIENT].ipaddr)) {
- printf("IP address is %I\n",
- arptable[ARP_CLIENT].ipaddr);
- } else default_netmask();
-}
-
-/**************************************************************************
-CMD_AUI - Turn on-board transceiver on or off
-**************************************************************************/
-cmd_aui(p)
- char *p;
-{
- if (*(p+1) == 'f') {
- aui = 1;
- eth_reset();
- return(0);
- }
- if (*(p+1) == 'n') {
- aui = 0;
- eth_reset();
- return(0);
- }
- printf ("Transceiver is %s\n",aui ? "off" : "on");
-}
-
-/**************************************************************************
-CMD_GATEWAY - Set routers IP address
-**************************************************************************/
-cmd_gateway(p)
- char *p;
-{
- int i;
- if (!setip(p, &arptable[ARP_GATEWAY].ipaddr)) {
- printf("Server IP address is %I\n",
- arptable[ARP_GATEWAY].ipaddr);
- } else /* Need to clear arp entry if we change IP address */
- for (i=0; i<6; i++) arptable[ARP_GATEWAY].node[i] = 0;
-}
-
-/**************************************************************************
-CMD_SERVER - Set server's IP address
-**************************************************************************/
-cmd_server(p)
- char *p;
-{
- int i;
- if (!setip(p, &arptable[ARP_SERVER].ipaddr)) {
- printf("Server IP address is %I\n",
- arptable[ARP_SERVER].ipaddr);
- } else /* Need to clear arp entry if we change IP address */
- for (i=0; i<6; i++) arptable[ARP_SERVER].node[i] = 0;
-}
-
-/**************************************************************************
-CMD_NETMASK - Set network mask
-**************************************************************************/
-cmd_netmask(p)
- char *p;
-{
- int i;
- if (!setip(p, &netmask)) {
- netmask = ntohl(netmask);
- printf("netmask is %I\n", netmask);
- }
- netmask = htonl(netmask);
-}
-
-/**************************************************************************
-CMD_SWAPSIZE - Set number of blocks for swap
-**************************************************************************/
-cmd_swapsize(p)
- char *p;
-{
- int blks = getdec(&p);
- if (blks > 0) nfsdiskless.swap_nblks = blks;
- else printf("Swap size is: %d blocks\n",nfsdiskless.swap_nblks);
-}
-
-extern char kernel_buf[], *kernel;
-/**************************************************************************
-CMD_KERNEL - set kernel filename
-**************************************************************************/
-cmd_kernel(p)
- char *p;
-{
- if (*p) sprintf(kernel = kernel_buf,"%s",p);
- printf("Bootfile is: %s\n", kernel);
-}
-
-
-/**************************************************************************
-CMD_ROOTFS - Set root filesystem name
-**************************************************************************/
-cmd_rootfs(p)
- char *p;
-{
- if (*p == '/') {
- bcopy(&arptable[ARP_SERVER].ipaddr,
- &arptable[ARP_ROOTSERVER].ipaddr, 4);
- } else if (!setip(p, &arptable[ARP_ROOTSERVER].ipaddr)) {
- printf("Root filesystem is %I:%s\r\n",
- nfsdiskless.root_saddr.sin_addr,
- nfsdiskless.root_hostnam);
- return;
- } else {
- while (*p && (*p != ':')) p++;
- if (*p == ':') p++;
- }
-
- bcopy(&arptable[ARP_ROOTSERVER].ipaddr,
- &nfsdiskless.root_saddr.sin_addr, 4);
- sprintf(&nfsdiskless.root_hostnam, "%s", p);
-}
-
-/**************************************************************************
-CMD_SWAPFS - Set swap filesystem name
-**************************************************************************/
-cmd_swapfs(p)
- char *p;
-{
- if (*p == '/') {
- bcopy(&arptable[ARP_SERVER].ipaddr,
- &arptable[ARP_SWAPSERVER].ipaddr, 4);
- } else if (!setip(p, &arptable[ARP_SWAPSERVER].ipaddr)) {
- printf("Swap filesystem is %I:%s\n",
- nfsdiskless.swap_saddr.sin_addr,
- nfsdiskless.swap_hostnam);
- return;
- } else {
- while (*p && (*p != ':')) p++;
- if (*p == ':') p++;
- }
-
- bcopy(&arptable[ARP_SWAPSERVER].ipaddr,
- &nfsdiskless.swap_saddr.sin_addr, 4);
- sprintf(&nfsdiskless.swap_hostnam, "%s", p);
-}
-
-/**************************************************************************
-CMD_HOSTNAME - Set my hostname
-**************************************************************************/
-cmd_hostname(p)
- char *p;
-{
- if (*p)
- hostnamelen = ((sprintf(&nfsdiskless.my_hostnam,"%s",p) -
- (char*)&nfsdiskless.my_hostnam) + 3) & ~3;
- else printf("Hostname is: %s\n",nfsdiskless.my_hostnam);
-}
-
-static void mountopts(prefix,args,p)
- char *prefix;
- struct onfs_args *args;
- char *p;
-{
- char *tmp;
-
- if (*p) {
- args->flags = NFSMNT_RSIZE | NFSMNT_WSIZE | NFSMNT_RESVPORT;
- args->sotype = SOCK_DGRAM;
- if ((tmp = (char *)substr(p,"rsize=")))
- args->rsize=getdec(&tmp);
- if ((tmp = (char *)substr(p,"wsize=")))
- args->wsize=getdec(&tmp);
- if ((tmp = (char *)substr(p,"intr")))
- args->flags |= NFSMNT_INT;
- if ((tmp = (char *)substr(p,"soft")))
- args->flags |= NFSMNT_SOFT;
- if ((tmp = (char *)substr(p,"noconn")))
- args->flags |= NFSMNT_NOCONN;
- if ((tmp = (char *)substr(p, "tcp")))
- args->sotype = SOCK_STREAM;
- } else {
- printf("%s mount options: rsize=%d,wsize=%d,resvport",
- prefix,
- args->rsize,
- args->wsize);
- if (args->flags & NFSMNT_INT)
- printf (",intr");
- if (args->flags & NFSMNT_SOFT)
- printf (",soft");
- if (args->flags & NFSMNT_NOCONN)
- printf (",noconn");
- if (args->sotype == SOCK_STREAM)
- printf (",tcp");
- else
- printf (",udp");
- printf ("\n");
- }
-}
-
-/**************************************************************************
-CMD_ROOTOPTS - Set root mount options
-**************************************************************************/
-cmd_rootopts(p)
- char *p;
-{
- mountopts("Rootfs",&nfsdiskless.root_args,p);
-}
-
-/**************************************************************************
-CMD_SWAPOPTS - Set swap mount options
-**************************************************************************/
-cmd_swapopts(p)
- char *p;
-{
- mountopts("Swapfs",&nfsdiskless.swap_args,p);
-}
-
-/**************************************************************************
-CMD_FLAGS - Set boot flags
-**************************************************************************/
-cmd_flags(buf)
- char *buf;
-{
- char p;
- int flags = 0;
-
- while ((p = *buf++))
- switch (p) {
- case 'b': flags |= RB_HALT; break;
- case 'c': flags |= RB_CONFIG; break;
- case 'd': flags |= RB_KDB; break;
- case 'g': flags |= RB_GDB; break;
- case 'h': flags ^= RB_SERIAL; break;
- case 's': flags |= RB_SINGLE; break;
- case 'v': flags |= RB_VERBOSE; break;
- case ' ':
- case '\t': break;
- default: printf("Unknown boot flag: %c\n", p);
- }
-
- howto = flags;
- return(0);
-}
-
-/**************************************************************************
-EXECUTE - Decode command
-**************************************************************************/
-execute(buf)
- char *buf;
-{
- char *p, *q;
- struct bootcmds_t *cmd = bootcmds;
- while (*buf == ' ' || *buf == '\t')
- buf++;
- if ((!(*buf)) || (*buf == '#'))
- return(0);
- while(cmd->name) {
- p = buf;
- q = cmd->name;
- while (*q && *q == *p++)
- q++;
- if ((!(*q)) && ((*p == ' ') || (*p == '\t') || (!(*p)))) {
- if (!cmd->func)
- return(1);
- while (*p == ' ' || *p == '\t')
- p++;
- (cmd->func)(p);
- return(0);
- } else
- cmd++;
- }
- printf("bad command - type 'help' for list\n");
- return(0);
-}
-
-/**************************************************************************
-BOOTMENU - Present boot options
-**************************************************************************/
-bootmenu()
-{
- char cmd[80];
- int ptr, c;
-#ifdef SECURE_BOOT
- char *p;
-
- printf("\n");
-
- printf("Press any key to retry:");
- while (iskey())
- getchar();
- getchar();
- printf("\n");
- eth_probe();
-#else
- printf("\n");
- while (1) {
- ptr = 0;
- printf("boot> ");
- while (ptr < 80) {
- c = getchar();
- if (c == '\r')
- break;
- else if (c == '\b') {
- if (ptr > 0) {
- ptr--;
- printf("\b \b");
- }
- } else {
- cmd[ptr++] = c;
- putchar(c);
- }
- }
- cmd[ptr] = 0;
- printf("\n");
- if (execute(cmd)) break;
- }
-#endif
- eth_reset();
-}